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

  1. 看看你hadoop的core-site.xml里,
    跟hbase里hbase-site.xml里一不一样。

  2. 将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
  1. 重新启动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
posted @ 2022-10-15 18:43  Tongzhai  阅读(287)  评论(0)    收藏  举报