全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 经管代码库
2835 0
2015-03-16

安装hbase




首先下载hbase的最新稳定版本

http://www.apache.org/dyn/closer.cgi/hbase/


1、安装到本地目录中,我安装的是当前用户的hadoop/hbase中

tar -zxvf hbase-0.90.4.tar.gz


单机模式


2、修改配置文件

conf/hbase_env.sh


3、配置JDK的路径


4、修改conf/hbase-site.xml

<configuration>

  <property>

    <name>hbase.rootdir</name>

    <value>file:///home/${user.name}/hbase-tmp</value>

  </property>

</configuration>


5、完成后启动

bin/start-hbase.sh


6、启动后

starting master, logging to /home/lgstar888/hadoop/hbase0.9/bin/../logs/hbase-lgstar888-master-ubuntu.out


7、然后执行

bin/hbase shell


8、输入status


如果输入exit则退出


引用一篇文章,写的很清晰:

http://www.linuxidc.com/Linux/2011-10/45706.htm


      Hadoop与Google一样,都是小孩命名的,是一个虚构的名字,没有特别的含义。从计算机专业的角度看,Hadoop是一个分布式系统基础架构,由 Apache基金会开发。

       Hadoop的主要目标是对分布式环境下的“大数据”以一种可靠、高效、可伸缩的方式处理。设想一个场景,假如您需要grep一 个100TB的大数据文件,按照传统的方式,会花费很长时间,而这正是Hadoop所需要考虑的效率问题。   关于Hadoop的结构,有各种不同的说法。我们这里简单的理解为Hadoop主要由三部分组成:HDFS(Hadoop Distributed File System),MapReduce与Hbase。




1.Hadoop组件之一:HDFS分布式文件系统具有哪些优点?




  HDFS作为一种分布式文件系统,它和现有的分布式文件系统有很多共同点。比如,Hadoop文件系统管理的物理存储资源不一定直接连接在本地 节点上,而是通过计算机网络与节点相连。对于Client端而言,HDFS就像一个传统的分级文件系统,可以创建、删除、移动或重命名文件等等。与此同 时,HDFS与其他的分布式文件系统的区别也是显而易见的。


  首先,HDFS设计目标之一是适合运行在通用硬件(commodity hardware)上的分布式文件系统。HDFS假设的硬件错误不是异常,而是常态。因为HDFS面向的是成百上千的服务器集群,每台服务器上存储着文件 系统的部分数据,并且这些机器的价格都很低廉。这就意味着总是有一部分硬件因各种原因而无法工作。因此,错误检测和快速、自动的恢复是HDFS最核心的架 构目标。从这个角度说,HDFS具有高度的容错性。


  第二,HDFS的另一个设计目标是支持大文件存储。与普通的应用不同,HDFS应用具有很大的数据集,一个典型HDFS文件大小一般都在G字节 至T字节。这就意味着HDFS应该能提供比较高的数据传输带宽与数据访问吞吐量。相应的,HDFS开放了一些POSIX的必须接口,容许流式访问文件系统 的数据。


  第三,HDFS还要解决的一个问题是高数据吞吐量。HDFS采用的是“一次性写,多次读”这种简单的数据一致性模型。换句话说,文件一旦建立后写入,就不需要再更改了。网络爬虫程序就很适合使用这样的模型。


  第四,移动计算环境比移动数据划算。HDFS提供了API,以便把计算环境移动到数据存储的地方,而不是把数据传输到计算环境运行的地方。这对于数据大文件尤其适用,可以有效减少网络的拥塞、提高系统的吞吐量。





  HDFS的体系结构与工作流程




  下面简单看一下HDFS的结构。图1所示为HDFS的体系结构图。HDFS采用的是Master/Slave架构。

  NameNode节点作为Master服务器,有三部分功能。第一:处理来自客户端的文件访问。第二:管理文件系统的命名空间操作,如'打开'、'关闭'、'重命名'等。第三:负责数据块到数据节点之间的映射。从这个意义上说,它扮演中心服务器的角色。


  DataNode节点作为Slave服务器,同样有三部分功能。第一:管理挂载在节点上的存储设备。第二:响应客户端的读写请求。第三:从内部 看,每个文件被分成一个或多个数据块,被存放到一组DataNode,在Namenode的统一调度下进行数据块的创建、删除和复制。

  图1 HDFS体系结构图


  HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。相应地,GNU/Linux操作系 统支持Namenode与Datanode。一个典型的部署场景是,一台GNU/Linux操作系统上运行一个Namenode实例,作为Master中 心服务器。而集群中的其它GNU/Linux操作系统分别运行一个Datanode实例,作为Slave服务器集群。





2.Hadoop组件之二:什么是MapReduce编程模型, MapReduce的工作流程是什么?




  MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce的设计目标是方便编程人员在不熟悉分布式并行编程的情况下,将自己的程序运行在分布式系统上。


  MapReduce的命名规则由两个术语组成,分别是Map(映射)与Reduce(化简)。这些术语来自于列表处理语言, 如:LISP,Scheme,或ML。从概念上来讲,MapReduce将输入元素列表(Input List)转换成输出元素列表(Output List),按照Map与Reduce规则各一次。


  从MapReduce框架的实现角度看,MapReduce程序有着两个组件:一个实现了 Mapper,另一个实现了Reducer。


  第一次叫Mapping,如图2所示。MapReduce将Input List作为Mapping函数的输入参数,经过处理,把结果返回给Output List。举例来说,有一个函数toUpper(str),用来返回输入字符串的大写版本。那么这里的Input List指的是转换前的常规字符串列表,Mapping Function指的是toUpper函数,而Output List指的是转换后的大写字符串列表。值得注意的是,在这里Mapping并没有改变输入字符串列表,而是返回一个新的字符串列表。

  图2 Map函数处理



  第二次叫Reducing,如图3所示。MapReduce将Input List作为Reducing函数的输入参数,经过迭代处理,把这些数据汇集,返回一个输出值给Output Value。从这个意义上来说,Reducing一般用来生成”总结“数据,把大规模的数据转变成更小的总结数据。例如,"+"可以用来作一个 reducing函数,去返回输入数据列表的值的总和。



  图3 Reduce函数处理


  从工作流程来讲,MapReduce对应的作业Job首先把输入的数据集切分为若干独立的数据块,并由Map组件以Task的方式并行处理。处 理结果经过排序后,依次输入给Reduce组件,并且以Task的形式并行处理。

MapReduce对应的输入输出数据由HDFS的DataNode存 储。MapReduce对应的Job部署在Master服务器,由Master JobTracker负责Task的调度,监控,重新执行失败的任务等等。MapReduce对应的Job部署在若干不同的Slave服务器,每个集群节 点含一个slave TaskTracker,负责执行由master指派的任务。





3.Hadoop组件之三:什么是面向列开源分布式数据库Hbase?




  HBase是一个分布式的、面向列的开源数据库,由Apache基金会开发。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存 储的数据库。它基于列的而不是基于行的模式。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列。用户可根据键访问行,以及对于一系 列的行进行扫描和过滤。HBase一个可以横向扩张的表存储系统,能够为大规模数据提供速度极快的低等级更新。主要用于需要随机访问,实时读写大数据 (Big Data)。这正是信息系统所需要的功能。


  下面的例子演示的是将原来存放在MySQL中Blog中的数据迁移到HBase中的过程:


  图4为MySQL中现有的表结构:表Blogtable表示博客本身,包括5个字段,BlogId为每位用户对应的博客ID号,类型为Int, 作为主键字段;Author为该用户的博客名称,类型为Varchar;Title为该用户的博客签名,类型为Varchar;URL为博客网址链接,类 型为Varchar;Text为博客的内容,类型为Varchar。Comment表示博客评论,包括5个字段。ID为发表评论的用户ID,类型为 Int,作为主键字段;BlogId为博客的原文ID,类型为Varchar。其中,BlogId作为Comment表的外键,指向表Blogtable 的主键。Title为评论标题,类型为Varchar;Author为发表该评论的用户名称,类型为Varchar;Text字段为评论内容,类型为 Varchar。

  图4 MySQL表结构

  图5 为迁移HBase中的表结构:HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family)。表Blogtable表示博客本身。ID为Row Key,即Table的主键,用来检索记录。Table在水平方向有一个或者多个Column Family组成。表BlogTable包含5个Column Family, Info的数据结构分为Info:Author,Info:Title,Info:URL。如果想添加其它属性X,则对应的结构为Info:X。需要说明 的是,Column Family支持动态扩展,无需预先定义Column的数量以及类型,但是,所有Column均以二进制格式存储,用户需要自行进行类型转换。

  图5 HBase表结构



  总之,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。简单的理解,Hbase介于nosql和 RDBMS之间。Hbase仅能通过主键(row key)和主键的range来检索数据,不支持条件查询以及排序等,仅支持单行事务。Habase主要用来存储非结构化和半结构化的松散数据。针对 Hbase的不足,Hadoop的一个数据仓库工具Hive对此做出了弥补。Hive可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询 功能,并将SQL语句转换为MapReduce任务运行。针对Hbase单行事务的限制,Hive也提供了扩展。据说,Facebook之所以选择了 Hbase,是因为他们HBase适用于处理以下两种类型的数据模式:1.一小组经常变化的临时数据;2.一组不断增加但很少访问的数据。



(来源:小象学院~)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群