hbase集群安装部署
1.上传并解压安装包:tar -zxvf hbase-2.4.12-bin.tar.gz -C /export/server/
2.配置hbase环境变量 sudo vim /etc/profile
#配置hbase环境变量 export HBASE_HOME=/export/server/hbase-2.4.12 export PATH=$PATH:$HBASE_HOME/bin export PATH=$PATH:$HBASE_HOME/sbin |
分发到其他节点 xsync /etc/profile 使文件生效 source /etc/profile
3.修改hbase配置文件
1)进入/export/server/hbase-2.4.12/conf修改配置文件(4个)
(hbase-env.sh、hbase-site.xml、regionservers、backup-masters)
①修改hbase-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_131 # 指定hbase使用外部的zk export HBASE_MANAGES_ZK=false export HBASE_LOG_DIR=/export/server/hbase-2.4.12/logs # 指定hbase进程id存储位置 export HBASE_PID_DIR=/export/server/hbase-2.4.12/pids # 防止启动时hbase的jar包与hadoop的jar包有冲突 export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" |
②修改 hbase-site.xml
<configuration>
<property> <name>hbase.rootdir</name> <!-- hadoop引入JQM负载均衡时,这里配置dfs.nameservices指定的集群逻辑名称(与hdfs namenode主机一致) --> <value>hdfs://node1:8020/hbase</value> <!-- 指定Hbase master服务器的写法,hbase监听hdfs默认的端口是9000,这里的配置端口要与hdfs namenode主机一致 --> </property> <!-- 指定hbase集群为分布式集群 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定zookeeper集群,有多个用英文逗号分隔 --> <property> <name>hbase.zookeeper.quorum</name> <value>node1:2181,node2:2181,node3:2181,node4:2181</value> </property> <!-- 备份的副本数(不会放在同一节点上),不能超过datanode的节点数。注意hadoop的hdfs-site.xml配置文件中也有dfs.replication这个参数,跟hbase-site.xml的dfs.replication参数是不同的,hbase的数据备份数需要在hbase-site.xml配置文件中单独设置!否则hbase写入的数据regionServer只会保存一份! --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- Zookeeper元数据快照的存储目录(需要和Zookeeper的zoo.cfg 配置文件中的属性一致) --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/export/server/apache-zookeeper-3.8.0-bin/data</value> </property> <!-- 指定HBase Master web页面访问端口,默认端口号16010 --> <property> <name>hbase.master.info.port</name> <value>16010</value> </property> <!-- 指定HBase RegionServer web页面访问端口,默认端口号16030 --> <property> <name>hbase.regionserver.info.port</name> <value>16030</value> </property> <!-- 解决启动HMaster无法初始化WAL的问题 --> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration> |
③修改 regionservers文件
node1 node2 node3 node4 |
④修改backup-masters(该文件是不存在的,先自行创建,指定备用主节点不 要与hbase-site.xml中<name>hbase.rootdir</name>配置项中的主机一样,这个文件的作用是指定备用master,当主节点master挂掉后启用)
node3 |
2)将配置好的文件传给其他虚拟机。
sudo xsync /export/server/hbase-2.4.12
4.启动HBase集群 start-hbase.sh
按照以下顺序进行启动
启动zookeeper集群-启动Hadoop集群-启动HBase集群
5. 查看hbase集群管理网页 node:16010端口
6. 进入HBase的控制台hbase shell
7. 在控制台中使用命令“create ‘表名’,列名1’,‘列名2’,…”创建表
8.exit退出HBase的控制台
9. 关闭HBase集群 stop-hbase.sh
关闭顺序
关闭HBase集群-关闭Hadoop集群-关闭zookeeper集群
(关闭HBase时,输入stop-hbase.sh命令一直处于等待状态,解决办法是:先输入hbase-daemons.sh stop master命令,hbase-daemons.sh stop regionserver命令,再输入stop-hbase.sh命令)
总结:在搭建集群的时候,本人使用systemctl disable firewalld 这一命令导致了后续搭建的Hadoop集群hbase集群的web页面无法用hostname(域名)访问只能用IP访问
猜想是移除的文件中包含着使用hostnamed的访问连接方法,故无法用hostname进行访问
我们可以使用systemctl enable firewalld进行文件重建
然后再用systemctl stop firewalld 关闭防火墙,或者可以设置要开放的端口号,以下为开放方法
#开放端口2888/3888(add为添加,remove为移除)
firewall-cmd --zone=public –add/remove-port=2888/tcp --permanent
firewall-cmd --zone=public –add/remove-port=3888/tcp --permanent
# 并重载入添加的端口:
firewall-cmd --reload
# 再次查询端口开放情况,确定2888和3888开放
firewall-cmd --zone=public --list-ports