Hbase分布式多结点安装运行手册

本文详细介绍了在CentOS5.6环境下部署HBase的过程,包括配置Hadoop与HBase的兼容性、设置分布式模式、配置Zookeeper等关键步骤,并提供了启动验证及基本操作测试的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

      操作系统:CentOS5.6,其他版本的Linux应该也可以。

      jdk:sun jdk 1.6 32bit

      hadoop:apache hadoop 1.0.4(hadoop 1.2.x也适用。2.0以上的版本,我自己还没有试过。)

      hbase:apache hbase 0.94

        实验环境包含三个结点,主机名称分别为:master, slave1slave2。对于HadoopHDFSNameNode已经运行于master,对于Hbase希望HMaster服务运行于masterHRegionServer服务和zookeeper运行于master, slave1slave2这三个结点。

     

先决条件:

(1)hadoop的版本与hbase的版本要对应,主要是hadoop目录下的hadoop-core-1.0.4.jar的版本与hbase的lib目录下的hadoop-core-1.0.4.jar一致。

(2)配置apache hadoop append,默认这个属性是false,需要设置为true

修改(hadoop/conf/hdfs-site.xml),并重启HDFS(或者重启Hadoop也行)

<property>

  <name>dfs.support.append</name>

  <value>true</value>

</property>

1)下载hbase,无需使用root用户,普通用户运行即可。 
解压到每台计算机的用户目录

tar zxvf hbase-0.92.0.tar.gz

建立软连,方便使用

ln -s hbase-0.92.0 hbase

2)配置hbase 
前提是安装完成hadoop,如何安装多结点的Hadoop系统就不赘述了,在所有结点上执行步骤1-4,可以先在namenode上进行配置,然后拷贝(scp命令)到其它结点。
1.修改conf/hbase-env.sh,添加jdk支持

export JAVA_HOME=/usr/local/jdk 
export HBASE_MANAGES_ZK=true 
export HBASE_LOG_DIR=/data/logs/hbase

说明:

(1)JDK的目录需要根据自己系统中Java的安装目录而定,不一定是“/usr/local/jdk”。

(2)HBASE_MANAGES_ZK=true 表示hbase由zookeeper管理,在启动hbase时,会自动启动zookeeper,所以,zookeeper无需单独安装,已经集成在hbase中。

2. 修改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:60000</value> 
</property> 
 
<property> 
<name>hbase.zookeeper.quorum</name> 
<value> master,slave1,slave2</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>/data/work/zookeeper</value> 
<description>Property from ZooKeeper's config zoo.cfg. The directory where the snapshot is stored. </description> 
</property>
 
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
    <name>zookeeper.session.timeout</name>
    <value>1200000</value>
</property>
<property>
    <name>hbase.zookeeper.property.tickTime</name>
    <value>6000</value>
</property>

说明:

(1)hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机。尤其注意:<value>hdfs://master:9000/hbase</value>的值“hdfs://master:9000”hadoop/conf/hdfs-site.xml中设定的值要完全一样,hdfs://master:9000/hbase 指明了存放hbase的目录名为hbase,目录名可以自定义
(2)hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群 
(3)hbase.master设置hbase的master主机名和端口 
(4)hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数。<value> master,slave1,slave2</value>指明在master,slave1,slave2这三台主机上运行zookeeper
(5)设定hbase.zookeeper.property.clientPort,把zookeeper.session.timeout的值调大,设定hbase.zookeeper.property.tickTime的值,从而使zookeeper运行更加稳定。
6hbase中使用主机名,而不是IP地址标识主机。因此需要修改hosts文件,建立各主机名与IP地址的对应关系。

[使用root权限]  vi /etc/hosts ,指明主机名称与IP地址的对应关系,因为我的实验环境包含了三个结点:master,slave1,slave2,所以我需要添加的内容如下:

192.168.100.128 master

192.168.100.156 slave1

192.168.100.159 slave2

3.修改hadoop的目录下的conf/hdfs-site.xml

<property> 
<name>dfs.datanode.max.xcievers</name> 
<value>4096</value> 
</property>

 具体原因参考:Hbase在线手册 http://hbase.apache.org/book.html

4.修改hbase/conf/regionservers 
将所有的datanode添加到这个文件,类似与hadoop中slaves文件。因为我想在“master,slave1,slave2”这三个结点上运行HRegionServer,所以,我的hbase/conf/regionservers 的内容为:

master

slave1

slave2

5.拷贝hbase到所有的节点,也就是说,步骤1-4在所有hbase结点上的配置是相同的。

6. 启动Hbase之前,确保hadoop已经正常启动并运行。可以使用jps命令查看master上是否存在NameNode服务,slave上是否存在DataNode服务。然后

启动hbase 

$ ./bin/start-hbase.sh

注意事项:防火墙会阻挡访问hbasezookeeper的网络连接,zookeeper若被防火墙阻挡,就会死掉,导致Hbase死掉。因此,需要配置iptables,允许相关端口的数据包通过,或者在测试阶段,直接先将iptables防火墙停掉:/sbin/service iptables stop  【停止iptables需要root权限】比较方便。

7 检查Hbase是否正常启动。

(1)在master上运行jps,会看到HMaster、HRegionServer和HQuorumPeer。

[user@master ~]$ jps

26023 HRegionServer

26615 Jps

15276 DataNode

15140 NameNode

25724 HQuorumPeer

15596 TaskTracker

25835 HMaster

15441 JobTracker

 

(2)在slave上运行jps,会看到HRegionServerHQuorumPeer

[user@slave2 ~]$ jps

10735 DataNode

13226 HQuorumPeer

10854 TaskTracker

13383 HRegionServer

19594 Jps

(3)其它方式:hbase自带的web界面

http://master:60010/

8 测试 
1).登录hbase客户端

./bin/hbase shell

 

2).新建数据表,并插入3条记录 

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

 

3).查看插入的数据 

hbase(main):007:0> scan 'test' 
ROW COLUMN+CELL 
row1 column=cf:a, timestamp=1288380727188, value=value1 
row2 column=cf:b, timestamp=1288380738440, value=value2 
row3 column=cf:c, timestamp=1288380747365, value=value3 
3 row(s) in 0.0590 seconds

 

4).读取单条记录 

hbase(main):008:0> get 'test', 'row1' 
COLUMN CELL 
cf:a timestamp=1288380727188, value=value1 
1 row(s) in 0.0400 seconds

 

5).停用并删除数据表 

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

 

6).退出 

hbase(main):014:0> exit

 

9、注意事项

注意防火墙的问题。防火墙会阻挡访问hbasezookeeper的网络连接,因此,需要配置iptables,允许相关端口的数据包通过,或者在测试阶段,直接先将iptables防火墙停掉:/sbin/service iptables stop  【停止iptables需要root权限】比较方便。

 

10. 其它说明

(1)很多资料上建议在各个结点上安装配置NTP服务,保证各结点的时钟同步,否则Hbase运行可能会不稳定。我也在各个结点上安装了NTP服务,建议你也配置一下NTP服务。

(2) 错误参考及解答

http://hbase.apache.org/book.html

http://wiki.apache.org/hadoop/Hbase/Troubleshooting

(3)文中多数文字参考http://www.cnblogs.com/ggjucheng/archive/2012/05/04/2483474.html,并根据自己的实践和理解进行了修改和补充。在此表示感谢。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值