HBase 完全分布式 安装配置

需要环境:

      OS:      CentOS 5.5   (可以根据自己的需要来使用Linux环境)

      JDK:     1.6.0_32      (JDK 1.6版本的最新版本)

      hadoop:   Hadoop 1.0.3(目前Hadoop稳定的最新版本)

      hbase:    HBase 0.92.1(目前HBase稳定的最新版本,至少跟Hadoop1.0.3是兼容的)

(本文讲述的是使用hbase自带的zookeeper,所以没有下载安装zookeeper)

HBase作为架构在Hadoop上的一个BigTable,不得不说它有很大的应用空间,如下是安装配置过程。(前提是已经在集群上正常部署Hadoop,并可以正常启动和停止)

1. 下载并加压HBase 0.92.1版本 

tar zxvf hbase-0.92.1.tar.gz

2. 修改配置文件

在修改之前,看到很多帖子说HBase配置中的master、slave等最好用主机名而不是ip地址,没尝试使用ip地址是怎样的结果,不过使用主机名是可以运行起来的。不过注意,要在/etc/hosts中添加相对应的主机名的ip地址的匹配。

注:HBASE_MANAGES_ZK=true 表示要使用hbase自带的zk来进行管理,没有使用单独的zk

  • conf/hbase-env.sh

  • conf/hbase-site.xml
<property> 
<name>hbase.rootdir</name> 
<value>hdfs://master:9000/hbase</value> 
</property> 
<property> 
<name>hbase.cluster.distributed</name> 
<value>true</value> 
</property> 
<property> 
<name>hbase.master</name> 
<value>hdfs://master:9002</value> 
</property> 

...

<property> 
<name>hbase.zookeeper.quorum</name> 
<value>slave1,slave2,slave3</value> 
<description>Comma separated list of servers in the ZooKeeper Quorum. For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". By default this is set to localhost for local and pseudo-distributed modes of operation. For a fully-distributed setup, this should be set to a full list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh this is the list of servers which we will start/stop ZooKeeper on. </description> 
</property> 
<property> 
<name>hbase.zookeeper.property.dataDir</name> 
<value>/usr/hadoop/zookeeper</value> 
<description>Property from ZooKeeper's config zoo.cfg. The directory where the snapshot is stored. </description> 
</property>

默认的hbase-site.xml里面没有属性设置的,但是在"hbase-0.92.1\src\packages\conf-pseudo"这个路径下有hbase-site.xml这个文件,虽然这个路径是伪分布式的,但是在这个hbase-site.xml文件中的hbase.cluster.distributed属性中的值是true。不知道为什么 HBase的设置是这样的。不管怎样,拿来进行了上述修改。

    • hbase.rootdir                                     设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机 
    • hbase.cluster.distributed                     设置为true,表明是完全分布式的hbase集群 
    • hbase.master                                     设置hbase的master主机名和端口 
    • hbase.zookeeper.quorum                    设置zookeeper的主机,建议使用单数
    • hbase.zookeeper.property.dataDir        设置zookeeper的数据路径
  • 再修改Hadoop hdfs-site.xml下的一个属性值。(记得其他的datanode也要进行修改)
<property> 
<name>dfs.datanode.max.xcievers</name> 
<value>4096</value> 
</property>

该参数限制了datanode所允许同时执行的发送和接受任务的数量,缺省为256,hadoop-defaults.xml中通常不设置这个参数。这个限制看来实际有些偏小,高负载下,DFSClient 在put数据的时候会报 could not read from stream 的 Exception。

An Hadoop HDFS datanode has an upper bound on the number of files that it will serve at any one time. The upper bound parameter is called xcievers (yes, this is misspelled). 

Not having this configuration in place makes for strange looking failures. Eventually you'll see a complain in the datanode logs complaining about the xcievers exceeded, but on the run up to this one manifestation is complaint about missing blocks. For example: 10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry...

3. 修改conf/regionservers 

将所有的datanode添加到这个文件,类似与hadoop中slaves文件,如下是我添加的内容:

slave1

slave2

slave3

4. 拷贝hbase到所有的节点

tar zcvf hbase-0.92.1.tar.gz hbase-0.92.1

scp hbase-0.92.1.tar.gz hadoop@192.168.0.3:~/

scp hdfs-site.xml hadoop@192.168.0.3:~/

然后进行相应的解压、替换即可。

其他datanode节点按照相同的操作即可。

5. 启动

bin/start-hbase.sh(注:首先至少要执行bin/start-dfs.sh启动hdfs)

bin/hbase shell

如果正常启动,在master和regionserver上应该有如下的jps信息

 master

 regionserver

6. web查看信息

http://master:60010/master.jsp 查看连点信息

http://master:60030/regionserver.jsp 查看regionserver信息 

http://master:60010/zk.jsp 查看zookeeper信息 

7. 测试数据

这部分没有截图,不过如果出现5中所展示的jps信息即可以进行正常的使用。操作如下:

bin/hbase shell
---
hbase(main):003:0> create 'test', 'cf' 0 row(s) in 1.2200 seconds hbase(main):003:0> list
TABLE test 1 row(s) in 0.0550 seconds hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 0.0560 seconds hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.0370 seconds hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3' 0 row(s) in 0.0450 seconds
hbase(main):008:0> get 'test', 'row1' 
COLUMN CELL 
cf:a timestamp=1288380727188, value=value1 
1 row(s) in 0.0400 seconds
hbase(main):012:0> disable 'test' 
0 row(s) in 1.0930 seconds 
hbase(main):013:0> drop 'test' 
0 row(s) in 0.0770 seconds
hbase(main):014:0> exit

转载于:https://www.cnblogs.com/hanyuanbo/archive/2012/07/28/2612886.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值