Hbase伪分布式模式部署

谁借莪1个温暖的怀抱¢ 2021-09-25 16:02 582阅读 0赞

  HBase是一个分布式、面向列的开源数据库,是Apache Hadoop项目的子项目,适用于非结构化数据存储的数据库。在Hadoop家族中,很多产品为HBase提供服务:

  • Hadoop HDFS为HBase提供了高可靠性的底层存储支持;
  • Hadoop MapReduce为HBase提供了高性能的计算能力;
  • Zookeeper为HBase提供了稳定服务和failover机制;
  • Pig和Hive为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单;
  • Sqoop为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

1 准备

  在HBase单机模式部署中,已经描述了HBase在单独的一台电脑上独立完成其所提供的数据库功能的操作。与Hadoop类似,HBase也可以在伪分布式模式下进行部署。在伪分布式模式中,HBase运行在单个节点上,每个HBase守护进程(包括HMaster、HRegionServer和HQuorumPeer)运行在单独的进程中。为了体现分布式,可以使用HDFS替代本地文件系统。所以,需要首先启动HDFS。

2 配置

  HBase的配置文件集中在$HBASE_HOOME/conf/hbase-site.xml中(比Hadoop分散的配置文件好多了╮(╯▽╰)╭)。

2.1 指定运行模式

首先,指定HBase的运行模式是分布式模式,保证每个JVM来运行一个HBase守护进程。

  1. <property>
  2. <name>hbase.cluster.distributed</name>
  3. <value>true</value>
  4. </property>

2.2 指定文件系统

指定文件系统使用HDFS上的hbase目录,而且保证这个目录在HDFS上没有,HBase会自己创建,否则会报错。

  1. <property>
  2. <name>hbase.rootdir</name>
  3. <value>hdfs://192.168.1.134:9000/hbase</value>
  4. </property>

如果不修改hbase.rootdir,数据会写在/tmp目录中或HBase单机模式部署中配置的本地文件系统中。

3 启动HBase

依然是用$HBASE_HOME/bin/start-hbase.sh脚本启动。如果一切正常,通过jps命令,可以查询到HMaster、HRegionServer和HQuorumPeer:

  1. 3265 HMaster
  2. 3841 Jps
  3. 2801 SecondaryNameNode
  4. 3174 HQuorumPeer
  5. 2556 NameNode
  6. 2652 DataNode
  7. 3389 HRegionServer

因为这里的Hadoop也是使用的伪分布式模式部署的,所以除了HBase的3个进程外,还有Hadoop的dfs的3个进程。

4 检查HDFS中HBase的目录

如果工作正常,HBase会在HDFS上成功创建需要的目录。

  1. $ hdfs dfs -ls /hbase
  2. Found 6 items
  3. drwxr-xr-x - lxh supergroup 0 2014-10-15 01:20 /hbase/.tmp
  4. drwxr-xr-x - lxh supergroup 0 2014-10-15 01:20 /hbase/WALs
  5. drwxr-xr-x - lxh supergroup 0 2014-10-15 01:12 /hbase/data
  6. -rw-r--r-- 1 lxh supergroup 42 2014-10-15 01:12 /hbase/hbase.id
  7. -rw-r--r-- 1 lxh supergroup 7 2014-10-15 01:12 /hbase/hbase.version
  8. drwxr-xr-x - lxh supergroup 0 2014-10-15 01:24 /hbase/oldWALs

5 通过shell测试

可以通过使用HBase shell创建表等操作,验证伪分布式的HBase。具体操作可以查看这里,此处不再赘述。

6 启动/停止一个HMaster备份服务

  HMaster服务控制整个HBase集群。可以启动n个HMaster服务的备份,形成n+1个HMaster服务。使用$HBASE_HOME/bin/local-master-backup.sh可以启动HMaster备份服务。执行该脚本时,需要提供一个参数,用于指定HMaster所使用的两个端口6000、60010。给定的数字会加到这三个默认端口上,比如给定2,启动的HMaster备份服务使用的端口就变成60002和60012。下面的命令启动3个备份服务,使用的端口分别为:60002/60012、60003/600013、60005/60015。

注:这里需要注意一下,官方文档中对于HMaster的端口描述和实际操作不一样。官方文档写的是三个端口默认是16010、16020和16030,其他的根据数字相加不变。也就是根据官方文档描述,通过下面的命令启动的3个HMaster使用的端口是16012/16022/16032、16013/16023/16033和16015/16025/16035。

  1. $ local-master-backup.sh start 2 3 5

通过jps查看进程:

  1. 5793 HMaster
  2. 4053 SecondaryNameNode
  3. 6374 Jps
  4. 4584 HRegionServer
  5. 3864 DataNode
  6. 3770 NameNode
  7. 6026 HMaster
  8. 6123 HMaster
  9. 5932 HMaster
  10. 4366 HQuorumPeer

会发现,多了3个HMaster。

通过命令查看HMaster服务监听的端口号:

  1. $ lsof -Pnl +M -i6|grep -E `echo \`ps -ef|grep HMaster|grep -v grep|awk '{print $2}'\`|awk '{for(i=1;i<NF;i++)printf $i"|";print $NF}'`|grep -v ESTABLISHED

得到结果为:

  1. java 5793 500 291u IPv6 39951 0t0 TCP 127.0.0.1:60000 (LISTEN)
  2. java 5793 500 335u IPv6 39980 0t0 TCP *:60010 (LISTEN)
  3. java 5932 500 291u IPv6 40495 0t0 TCP 127.0.0.1:60002 (LISTEN)
  4. java 5932 500 335u IPv6 41186 0t0 TCP *:60012 (LISTEN)
  5. java 6026 500 291u IPv6 40875 0t0 TCP 127.0.0.1:60003 (LISTEN)
  6. java 6026 500 335u IPv6 41249 0t0 TCP *:60013 (LISTEN)
  7. java 6123 500 291u IPv6 41194 0t0 TCP 127.0.0.1:60005 (LISTEN)
  8. java 6123 500 335u IPv6 41262 0t0 TCP *:60015 (LISTEN)

使用脚本$HBASE_HOME/bin/local-master-backup.sh可以停止已启动的备份服务:

  1. $ local-master-backup.sh stop 2 3 5

7 启动/停止更多的RegionServer服务

  HRegionServer管理HMater指定的文件存储上的数据。通常,集群中每个节点运行一个HRegionServer。通过$HBASE_HOME/bin/local-regionservers.sh可以启动多个HRegionServer服务。每个HRegionServer服务使用两个端口60020和60030。

注:与上面提到的HMaster一样,这里的HRegionServer默认端口也与官方文档不一致。官方文档描述默认端口是16020和16030。

  1. $ local-regionservers.sh start 2 3 4 5

通过jps查看:

  1. 5793 HMaster
  2. 6881 Jps
  3. 6805 HRegionServer
  4. 4053 SecondaryNameNode
  5. 6709 HRegionServer
  6. 4584 HRegionServer
  7. 3864 DataNode
  8. 3770 NameNode
  9. 6620 HRegionServer
  10. 4366 HQuorumPeer
  11. 6527 HRegionServer

通过命令查看HMaster服务监听的端口号:

  1. $ lsof -Pnl +M -i6|grep -E `echo \`ps -ef|grep HRegionServer|grep -v grep|awk '{print $2}'\`|awk '{for(i=1;i<NF;i++)printf $i"|";print $NF}'`|grep -v ESTABLISHED

得到结果为:

  1. java 4584 500 291u IPv6 30969 0t0 TCP 127.0.0.1:60020 (LISTEN)
  2. java 4584 500 329u IPv6 30993 0t0 TCP *:60030 (LISTEN)
  3. java 6527 500 291u IPv6 43515 0t0 TCP 127.0.0.1:60202 (LISTEN)
  4. java 6527 500 329u IPv6 43613 0t0 TCP *:60302 (LISTEN)
  5. java 6620 500 291u IPv6 44259 0t0 TCP 127.0.0.1:60203 (LISTEN)
  6. java 6620 500 329u IPv6 44602 0t0 TCP *:60303 (LISTEN)
  7. java 6709 500 291u IPv6 44578 0t0 TCP 127.0.0.1:60204 (LISTEN)
  8. java 6709 500 329u IPv6 44621 0t0 TCP *:60304 (LISTEN)
  9. java 6805 500 291u IPv6 44607 0t0 TCP 127.0.0.1:60205 (LISTEN)
  10. java 6805 500 329u IPv6 44635 0t0 TCP *:60305 (LISTEN)

多了4给HRegionServer服务。

  1. $ local-regionservers.sh stop 3

8 停止HBase

直接使用脚本stop-hbase.sh停止。

  1. $ ./bin/stop-hbase.sh
  2. stopping hbase....................

发表评论

表情:
评论列表 (有 0 条评论,582人围观)

还没有评论,来说两句吧...

相关阅读