Linux部署HBase集群
简介
HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。
和Redis一样,HBase是一款KeyValue型存储的数据库。
不过和Redis设计方向不同
- Redis设计为少量数据,超快检索
- HBase设计为海量数据,快速检索
HBase在大数据领域应用十分广泛,现在我们来在node1、node2、node3上部署HBase集群。
HBase官网:https://hbase.apache.org/
安装
-
HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面
- 集群化软件前置准备(JDK)
- Zookeeper
- Hadoop
- 可参考如下文章
- 11-Linux部署集群准备:http://t.csdnimg.cn/zWbnd
- 12-Linux部署Zookeeper集群:http://t.csdnimg.cn/dOvt5
- 14-Linux部署Hadoop集群:http://t.csdnimg.cn/ptHa3
-
【node1执行】下载HBase安装包
- 下载
shellwget --no-check-certificate http://archive.apache.org/dist/hbase/2.1.0/hbase-2.1.0-bin.tar.gz
- 解压
shelltar -zxvf hbase-2.1.0-bin.tar.gz -C /export/server
- 软链接
shellln -s /export/server/hbase-2.1.0 /export/server/hbase
-
【node1执行】,修改配置文件,修改
conf/hbase-env.sh
文件shell# 在28行配置JAVA_HOME export JAVA_HOME=/export/server/jdk # 在126行配置: # 意思表示,不使用HBase自带的Zookeeper,而是用独立Zookeeper export HBASE_MANAGES_ZK=false # 在任意行,比如26行,添加如下内容: export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
-
【node1执行】,修改配置文件,修改
conf/hbase-site.xml
文件shell# 将文件的全部内容替换成如下内容: <configuration> <!-- HBase数据在HDFS中的存放的路径 --> <property> <name>hbase.rootdir</name> <value>hdfs://node1:8020/hbase</value> </property> <!-- Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- ZooKeeper的地址 --> <property> <name>hbase.zookeeper.quorum</name> <value>node1,node2,node3</value> </property> <!-- ZooKeeper快照的存储位置 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/export/server/apache-zookeeper-3.6.0-bin/data</value> </property> <!-- V2.1版本,在分布式情况下, 设置为false --> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration>
-
【node1执行】,修改配置文件,修改
conf/regionservers
文件shell# 填入如下内容 node1 node2 node3
-
【node1执行】,分发hbase到其它机器
shellscp -r /export/server/hbase-2.1.0 node2:/export/server/ scp -r /export/server/hbase-2.1.0 node3:/export/server/
-
【node2、node3执行】,配置软链接
shellln -s /export/server/hbase-2.1.0 /export/server/hbase
-
【node1、node2、node3执行】,配置环境变量
- 编辑
profile
配置文件
shellvim /etc/profile
- 配置在
/etc/profile
内,追加如下两行
shellexport HBASE_HOME=/export/server/hbase export PATH=$HBASE_HOME/bin:$PATH
- 刷新环境变量
shellsource /etc/profile
- 编辑
-
【node1执行】启动HBase
- 【node1、node2、node3】启动zookeeper
bash/export/server/zookeeper/bin/zkServer.sh start
- 【node1】启动Hadoop
bashstart-all.sh
请确保:Hadoop HDFS、Zookeeper是已经启动了的
shellstart-hbase.sh # 如需停止可使用 stop-hbase.sh
由于我们配置了环境变量export PATH= P A T H : PATH: PATH:HBASE_HOME/bin
start-hbase.sh即在$HBASE_HOME/bin内,所以可以无论当前目录在哪,均可直接执行
-
验证HBase
浏览器打开:http://192.168.149.131:16010,即可看到HBase的WEB UI页面
-
简单测试使用HBase
【node1执行】
shellhbase shell # 创建表 create 'test', 'cf' # 插入数据 put 'test', 'rk001', 'cf:info', 'bowen' # 查询数据 get 'test', 'rk001' # 扫描表数据 scan 'test'
问题:
hbase启动十几秒后,HMaster进程会被终止
解决方案:
查了一堆资料,有一篇说是要删除/etc/hosts
中的127.0.0.1
的地址,没用,最后根据上述参考重启了Zookeeper,启用zkCli.sh
bash
/export/server/zookeeper/bin/zkCli.sh
查看所有节点ls /
bash
[zk: localhost:2181(CONNECTED) 1] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, feature, hbase, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
删除hbase节点
bash
[zk: localhost:2181(CONNECTED) 4] delete /hbase
Node not empty: /hbase
重启zookeeper
bash
/export/server/zookeeper/bin/zkServer.sh stop
/export/server/zookeeper/bin/zkServer.sh start
启动hbase
bash
[root@node1 conf]# start-hbase.sh
running master, logging to /export/server/hbase/logs/hbase-root-master-node1.out
node3: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node3.out
node2: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node2.out
node1: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node1.out
查看进程jps
bash
[root@node1 conf]# jps
2629 NodeManager
3014 WebAppProxyServer
5383 Jps
1752 NameNode
5081 HRegionServer
1898 DataNode
4140 QuorumPeerMain
2477 ResourceManager
4989 HMaster
2222 SecondaryNameNode
[root@node1 conf]# ssh node2
Last login: Thu Feb 29 08:46:40 2024 from 192.168.149.1
[root@node2 ~]# jps
2369 HRegionServer
1508 QuorumPeerMain
1621 DataNode
1735 NodeManager
2540 Jps
[root@node2 ~]# ssh node3
Last login: Thu Feb 29 08:46:41 2024 from 192.168.149.1
[root@node3 ~]# jps
2417 HRegionServer
2594 Jps
1609 DataNode
1723 NodeManager
1503 QuorumPeerMain
[root@node3 ~]# exit
登出
Connection to node3 closed.
[root@node2 ~]# exit
登出
Connection to node2 closed.
[root@node1 conf]#
hbase启动成功!!!!!