hbase安装配置完全分布式
下载
hbase下载
注意hadoop和hbase版本兼容

Hadoop、Hbase、Hive和zookeeper版本兼容关系:https://blog.csdn.net/qq_39261894/article/details/105134340?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166582540016800180691019%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166582540016800180691019&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all
因为之前下载配置好了hadoop2.7.6,所以选择下载1.4.4,下载地址:https://archive.apache.org/dist/hbase/1.4.4/
下这个:
教程:https://blog.csdn.net/qq_45040113/article/details/116229919
下载ZooKeeper
下一个用的多的就行,我下的是3.4.6
下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/
下这个:
教程:https://blog.csdn.net/weixin_43626465/article/details/126179883
hlive
根据版本对应,如果要下,下live2.0.0即可
这里目前用不上还没下
安装配置
因为hadoop完全分布式之前已经做好了,所以直接对hbase和ZooKeeper进行下载配置
ZooKeeper配置
三个节点都要上传和配置
上传资源
把解压好的zookeeper传到apps文件夹下(自己建的):/home/zhangmou/apps/zookeeper-3.4.6
并在该目录下创建文件夹zkdatas,里面创建文件myid。
改环境变量
在/home/zhangmou/路径下,修改.bashsc:
export ZOOKEEPER_HOME=/home/zhangmou/apps/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
然后使环境变量生效(每个节点都需要使环境变量生效)
source .bashrc
配置zoo.cfg文件
在/home/zhangmou/apps/zookeeper-3.4.6/conf里,把文件zoo_sample.cfg(模板文件)重命名为zoo.cfg,首先修改文件中的datadir的路径:
/home/zhangmou/apps/zookeeper-3.4.6/zkdatas
这个zkdatas就是上面自己创建的文件夹。
其次在文件末尾增加集群中主节点和所有从节点:
##################cluster#################
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
在文件myid中添加与server对应的编号
比如node1,该文件就写1,node2就写2……
检验、启动和关闭
执行命令启动:
zkServer.sh start

检查:查看从主节点:
zkServer.sh status
可以看到node2是主节点

jps看一下成不成功

关闭:
zkServer.sh stop
hbase配置
三个节点都要上传和配置
上传资源
把解压好的hbase-1.4.4传到apps文件夹下(自己建的):/home/zhangmou/apps/hbase-1.4.4,在/hbase-1.4.4下创建hbase
改环境变量
在/home/zhangmou/路径下,修改.bashsc:
export HBASE_HOME=/home/zhangmou/apps/hbase-1.4.4
export PATH=$HBASE_HOME/bin:$PATH
然后使环境变量生效(每个节点都需要使环境变量生效)
source .bashrc
配置hbase-env.sh文件
在/home/zhangmou/apps/hbase-1.4.4/conf里,修改hbase-env.sh文件
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
export JAVA_HOME=/home/zhangmou/apps/jdk1.8.0_231
export HBASE_MANAGES_ZK=false
注意JDK1.7以上的一定要把上面那两行注释掉,不然会没有HMaster和HRegionServer
修改hbase-site.xml
注意hdfs://node1:9000要与hadoop的core-site.xml里的
相同
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://node1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
</configuration>
在regionservers文件中配置从节点地址
node2
node3
hbase集群检验、启动
在主节点node1中执行命令:
start-hbase.sh
使用jps命令检查各节点的进程:主节点应该启动HMaster进程,各从节点应启动HRegionServer进程
关闭hbase:stop-hbase.sh,但是会出问题,懒得解决了先
命令行工具
(
先打开zookeeper
先cd到目录/home/zhangmou/apps/zookeeper-3.4.6下,
执行命令启动:
bin/zkServer.sh start
)
首先打开hdfs
start-dfs.sh
再启动yarn
start-yarn.sh
最后在node1上cd到/home/zhangmou/apps/hbase-1.4.4/bin:
./hbase shell
create 'id','123'
hbase集群关闭
会出现/tmp/hbase-zhangmou-master.pid: No such file or directory问题,所以在/home/zhangmou/apps/hbase-1.4.4/下新建pids文件夹,然后cd到/home/zhangmou/apps/hbase-1.4.4/conf/下,更改hbase-env.sh,在122行把注释掉的pid储存位置改为:
# The directory where pid files are stored. /tmp by default.
export HBASE_PID_DIR=/home/zhangmou/apps/hbase-1.4.4/pids
关闭
stop-hbase.sh
如果还是不行,jps一下,看看还有没有hmaster,如果没有,查看你改了的pids目录下面有没有对应的pid文件,如果没有,就是启动出错了,恭喜你,开始找bug吧,温馨提示大概率是配置文件出错了。
错误
hmaster出现两秒消失
尝试1
-
看看你hadoop的core-site.xml里,

跟hbase里hbase-site.xml里
一不一样。 -
将hadoop的配置文件core-site和hdfs-site文件拷入hbase的conf目录下。
ln -s /home/zhangmou/apps/hadoop-2.7.6/etc/hadoop/core-site.xml /home/zhangmou/apps/hbase-1.4.4/conf/core.site.xml
ln -s /home/zhangmou/apps/hadoop-2.7.6/etc/hadoop/hdfs-site.xml /home/zhangmou/apps/hbase-1.4.4/conf/hdfs.site.xml
- 重新启动hadoop集群和hbase
尝试2
启动HBase的时候,发现HRegionServer起来了,HMaster没了
在/home/zhangmou/apps/zookeeper-3.4.6/bin/下运行(需要先运行zookeeper)
./zkCli.sh
ls /
rmr /hbase
然后重启hbase,在=再删除HDFS下的所有HBase目录,步骤如下:
# 词命令行运行是在Hadoop的根目录下,cd到/home/zhangmou/apps/hadoop-2.7.6/
hdfs dfs -du -rm -r /hbase
Region server exiting java.lang.RuntimeException: HRegionServer Aborted
造成的原因:时间同步问题,hbase集群必须要进行时间同步,否则响应时间超过30000ms时,节点会自动挂掉。
sudo yum -y install ntp
sudo ntpdate pool.ntp.org
最后重启hbase
could only be replicated to 0 nodes, instead of 1
1、使用jps命令,查看Datanode是否启动了,如果没有启动成功,进入Hadoop的存放数据节点的data目录(比如我的目录是usr/hadoop-0.20.2/data),将其中的所有文件删除(这样保证了下次启动Hadoop的时候Datanode可以启动起来),因为有可能是保留了以前不兼容的数据。
2、关闭Hadoop:stop-all.sh;
3、启动Hadoop:start-all.sh;
但是有可能还不行的话,就在启动之前格式化一下Hadoop:
bin/hadoop dfs -format
格式化失败
格式化之前必须先启动journalnode(只在node1格式化就行)
cd /home/zhangmou/apps/hadoop-2.7.6/sbin/
sh hadoop-daemons.sh start journalnode

浙公网安备 33010602011771号