Hbase集群搭建

雨点打透心脏的1/2处 2022-05-21 03:38 313阅读 0赞

一、集群搭建准备

(1)、在之前的Kafka镜像基础上搭建的,整个镜像依赖为:Hadoop->Hive->sqoop->flume->kafka->hbase

hbase依赖ZK和Hadoop

二、HBase部署

2.1、部署

2.1.1、Zookeeper正常部署

首先保证Zookeeper集群的正常部署,并启动之:

  1. $ bin/zkServer.sh start
  2. $ bin/zkServer.sh status

2.1.2、Hadoop正常部署
Hadoop集群的正常部署并启动:

  1. $ start-dfs.sh
  2. $ start-yarn.sh

2.1.3、HBase的解压
解压HBase到指定目录:

  1. $ tar -zxf hbase-1.3.1-bin.tar.gz /opt/module

2.1.4、HBase的配置文件
需要修改HBase对应的配置文件。
hbase-env.sh修改内容:

  1. export JAVA_HOME=/opt/module/jdk1.8
  2. export HBASE_MANAGES_ZK=false

hbase-site.xml修改内容:

  1. <configuration>
  2. <property>
  3. <name>hbase.rootdir</name>
  4. <value>hdfs://hadoop0:9000/hbase</value>
  5. </property>
  6. <property>
  7. <name>hbase.cluster.distributed</name>
  8. <value>true</value>
  9. </property>
  10. <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
  11. <property>
  12. <name>hbase.master.port</name>
  13. <value>16000</value>
  14. </property>
  15. <property>
  16. <name>hbase.zookeeper.quorum</name>
  17. <value>hadoop0:2181,hadoop1:2181,hadoop2:2181</value>
  18. </property>
  19. <property>
  20. <name>hbase.zookeeper.property.dataDir</name>
  21. <value>/opt/module/zookeeper/zkData</value>
  22. </property>
  23. </configuration>

regionservers:

  1. hadoop0
  2. hadoop1
  3. hadoop2

2.1.5、HBase需要依赖的Jar包
由于HBase需要依赖Hadoop,所以替换HBase的lib目录下的jar包,以解决兼容问题:
1) 删除原有的jar:

  1. $ rm -rf /opt/module/hbase/lib/hadoop-*
  2. $ rm -rf /opt/module/hbase/lib/zookeeper-3.4.6.jar

2) 拷贝新jar,涉及的jar有:

  1. hadoop-annotations-2.7.3.jar
  2. hadoop-auth-2.7.3.jar
  3. hadoop-client-2.7.3.jar
  4. hadoop-common-2.7.3.jar
  5. hadoop-hdfs-2.7.3.jar
  6. hadoop-mapreduce-client-app-2.7.3.jar
  7. hadoop-mapreduce-client-common-2.7.3.jar
  8. hadoop-mapreduce-client-core-2.7.3.jar
  9. hadoop-mapreduce-client-hs-2.7.3.jar
  10. hadoop-mapreduce-client-hs-plugins-2.7.3.jar
  11. hadoop-mapreduce-client-jobclient-2.7.3.jar
  12. hadoop-mapreduce-client-jobclient-2.7.3-tests.jar
  13. hadoop-mapreduce-client-shuffle-2.7.3.jar
  14. hadoop-yarn-api-2.7.3.jar
  15. hadoop-yarn-applications-distributedshell-2.7.3.jar
  16. hadoop-yarn-applications-unmanaged-am-launcher-2.7.3.jar
  17. hadoop-yarn-client-2.7.3.jar
  18. hadoop-yarn-common-2.7.3.jar
  19. hadoop-yarn-server-applicationhistoryservice-2.7.3.jar
  20. hadoop-yarn-server-common-2.7.3.jar
  21. hadoop-yarn-server-nodemanager-2.7.3.jar
  22. hadoop-yarn-server-resourcemanager-2.7.3.jar
  23. hadoop-yarn-server-tests-2.7.3.jar
  24. hadoop-yarn-server-web-proxy-2.7.3.jar
  25. zookeeper-3.4.11.jar

尖叫提示:这些jar包的对应版本应替换成你目前使用的hadoop版本,具体情况具体分析。
查找jar包举例:

  1. find /opt/module/hadoop/ -name hadoop-annotations*

然后将找到的jar包复制到HBase的lib目录下即可。

2.1.6、HBase软连接Hadoop配置

  1. $ ln -s /opt/module/hadoop/etc/hadoop/core-site.xml /opt/moduel/hbase/conf/core-site.xml
  2. $ ln -s /opt/module/hadoop/etc/hadoop/hdfs-site.xml /opt/moduel/hbase/conf/hdfs-site.xml

2.1.7、HBase远程scp到其他集群

2.1.8、HBase服务的启动

启动方式1:

  1. $ bin/hbase-daemon.sh start master
  2. $ bin/hbase-daemon.sh start regionserver

尖叫提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException异常。
修复提示:
a、同步时间服务
b、属性:hbase.master.maxclockskew设置更大的值

  1. <property>
  2. <name>hbase.master.maxclockskew</name>
  3. <value>180000</value>
  4. <description>Time difference of regionserver from master</description>
  5. </property>

启动方式2:

  1. $ bin/start-hbase.sh

对应的停止服务:

  1. $ bin/stop-hbase.sh

尖叫提示:如果使用的是JDK8以上版本,则应在hbase-evn.sh中移除“HBASE_MASTER_OPTS”和“HBASE_REGIONSERVER_OPTS”配置。

2.1.9、查看HBase页面
启动成功后,可以通过“host:port”的方式来访问HBase管理页面,例如:

  1. http://hadoop0:16010

2.2、简单使用

2.2.1、基本操作
1) 进入HBase客户端命令行

  1. $ bin/hbase shell

2) 查看帮助命令

  1. hbase(main)> help

3) 查看当前数据库中有哪些表

  1. hbase(main)> list

2.2.2、表的操作
1) 创建表

  1. hbase(main)> create 'student','info'

2) 插入数据到表

  1. hbase(main) > put 'student','1001','info:name','Thomas'
  2. hbase(main) > put 'student','1001','info:sex','male'
  3. hbase(main) > put 'student','1001','info:age','18'
  4. hbase(main) > put 'student','1002','info:name','Janna'
  5. hbase(main) > put 'student','1002','info:sex','female'
  6. hbase(main) > put 'student','1002','info:age','20'

3) 扫描查看表数据

  1. hbase(main) > scan 'student'
  2. hbase(main) > scan 'student',{STARTROW => '1001', STOPROW => '1001'}
  3. hbase(main) > scan 'student',{STARTROW => '1001'}

4) 查看表结构

  1. hbase(main):012:0> describe student

5) 更新指定字段的数据

  1. hbase(main) > put 'student','1001','info:name','Nick'
  2. hbase(main) > put 'student','1001','info:age','100'

6) 查看“指定行”或“指定列族:列”的数据

  1. hbase(main) > get 'student','1001'
  2. hbase(main) > get 'student','1001','info:name'

7) 删除数据
删除某rowkey的全部数据:

  1. hbase(main) > deleteall 'student','1001'

删除某rowkey的某一列数据:

  1. hbase(main) > delete 'student','1002','info:sex'

8) 清空表数据

  1. hbase(main) > truncate 'student'

尖叫提示:清空表的操作顺序为先disable,然后再truncating。
9) 删除表
首先需要先让该表为disable状态:

  1. hbase(main) > disable 'student'

然后才能drop这个表:

  1. hbase(main) > drop 'student'

尖叫提示:如果直接drop表,会报错:Drop the named table. Table must first be disabled
ERROR: Table student is enabled. Disable it first.
10) 统计表数据行数

  1. hbase(main) > count 'student'

11) 变更表信息
将info列族中的数据存放3个版本:

  1. hbase(main) > alter 'student',{NAME=>'info',VERSIONS=>3}

搭建过程中可能出现的问题:

1、配置问题

java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.;

hbase-site.xml中属性配置不对,hdfs://hadoop0:9000/hbase对应的是Hadoop集群的hdfs路径端口

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

发表评论

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

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

相关阅读

    相关 hbase

    1.上传hbase安装包(测试使用的是hbase1.2.3) 2.解压 3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 注意:要把hadoop的hd