软件版本
电脑系统:macOS 10.14.6
虚拟机软件:Parallels Desktop15
Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso
CentOS 7 JDK版本:jdk1.8.0_162
Hadoop版本:hadoop-2.7.7
ZooKeeper版本:zookeeper-3.4.13
HBase版本:hbase-1.3.1
环境配置说明
电脑配置:MacBook Pro 13(8G + 256G)
三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)
三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)
三台虚拟机的用户名:lyh
node为主结点、node2、node3为次节点
一定要注意:标注是操作哪台node主机,默认是node1
安装前提
安装好JDK、Hadoop
安装好ZooKeeper
下载并上传HBase安装包
-
下载HBase安装包:https://archive.apache.org/dist/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
-
将下载好的HBase安装包上传到node1
scp -r ~/Desktop/hbase-1.3.1-bin.tar.gz lyh@10.211.55.18:/app
-
进入node1,解压压缩包
cd /app
tar -zxvf hbase-1.3.1-bin.tar.gz
-
将hbase-1.3.1-bin 名字修改为 hbase-1.3.1
mv hbase-1.3.1-bin hbase-1.3.1
-
创建 hbase 软链接
ln -s hbase-1.3.1 hbase
安装并配置 HBase
配置Linux环境变量
vim /etc/profile
添加环境变量:
# HBASE
export HBASE_HOME=/app/hbase
export PATH=$HBASE_HOME/bin:$PATH
保存并退出,使环境变量生效:
source /etc/profile
集群配置
HBase 资源配置
配置 hbase-env.sh 文件
cd /app/hbase/conf
vim hbase-env.sh
修改如下:
-
配置文件中的JAVA_HOME路径
export JAVA_HOME=/app/jdk
-
注释掉对jdk7的优化,因为这里使用的jdk是8版本
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m" # export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
-
开启 manages zookeeper(不使用hbase自带的zk)
export HBASE_MANAGES_ZK=false
-
指定PID路径
# 自定义HBase PID位置 export HBASE_PID_DIR=/app/pids
HBase 集群配置
向 hbase-site.xml 文件中添加配置
cd /app/hbase/conf
vim hbase-site.xml
添加如下内容:
<configuration>
<!-- Hbase的数据保存在HDFS对应的目录下:注意端口,与HDFS的一样 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://node1:8020/hbase</value>
</property>
<!-- 是否是分布式环境 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 配置ZK的地址,3个节点都启用ZooKeeper -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<!-- 冗余度 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 主节点和从节点允许的最大时间误差 -->
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<!-- zookeeper数据目录 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/app/hbase/zookeeperData</value>
</property>
<!-- 手动配置管理web端口,默认是 16010 -->
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
列出所有运行hbase的机器:修改regionservers文件
cd /app/hbase/conf
vim regionservers
删除原有内容,添加如下内容:
node1
node2
node3
指明备用的 master 节点:backup-masters(这个文件是不存在的,需要新建)
cd /app/hbase/conf
vim backup-masters
以这里为例,配置如下:
node2
HDFS 客户端配置
进入 /app/hadoop/etc/hadoop 文件夹,修改 hadoop-env.sh 中的配置(修改PID生成的位置,node1、node2、node3都要修改)
cd /app/hadoop/etc/hadoop
vim hadoop-env.sh
要被修改的内容是:
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
将其路径修改为上面创建的 pids 文件夹
export HADOOP_PID_DIR=/app/pids
export HADOOP_SECURE_DN_PID_DIR=/app/pids
修改yarn-env.sh (自定义PID生成位置,node1、node2、node3都要修改)
cd /app/hadoop/etc/hadoop
vim yarn-env.sh
添加如下内容:
export YARN_PID_DIR=/app/pids
如果您在 Hadoop 集群上进行了 HDFS 客户端配置的更改,比如将副本系数 dfs.replication
设置成 5,则必须使用以下方法之一来使 HBase 知道,否则 HBase 将依旧使用默认的副本系数 3 来创建文件。
解决方式有三种,如下面:
将 Hadoop 配置文件的位置信息添加到
hbase-env.sh
的HBASE_CLASSPATH
属性
cd /app/hbase/conf
vim hbase-env.sh
配置信息如下
export HBASE_CLASSPATH=/app/hadoop/etc/hadoop
将 Hadoop 的
hdfs-site.xml
和core-site.xml
拷贝到${HBASE_HOME}/conf
目录下
cd /app/hadoop/etc/hadoop
cp core-site.xml /app/hbase-1.3.1/conf/
cp hdfs-site.xml /app/hbase-1.3.1/conf/
在
${HBASE_HOME}/conf
目录下,创建hdfs-site.xml
和core-site.xml
的软链接
cd /app/hadoop/etc/hadoop
ln -s core-site.xml /app/hbase/conf/core-site.xml
ln -s core-site.xml /app/hbase/conf/hdfs-site.xml
按照前面配置,创建对应目录
进入 hbase-1.3.1 文件夹,创建 zookeeperData 文件夹
进入 app 文件夹,创建pids文件夹,赋予权限,node1、node2、node3都需要创建pids文件
cd /app/hbase
mkdir zookeeperData
cd /app
mkdir pids
chown -R root:root pids
安装包分发
将 hbase-1.3.1 分发到到 node2、node3
cd /app
scp -r hbase-1.3.1 node2:/app
scp -r hbase-1.3.1 node3:/app
分别到 node2、node3 创建 hbase-1.3.1 的软链接
cd /app
ln -s hbase-1.3.1 hbsae
启动和关闭 HBase
HBase 的启动前需要先启动Hadoop和ZooKeeper
-
启动Hadoop
node1 中输入:
start-dfs.sh
和start-yarn.sh
-
启动ZooKeeper
node1、node2、node3中都要输入:
zkServer.sh start
为了避免没启动ZooKeeper,可以查看zookeeper的启动状态:
zkServer.sh status
-
启动HBase
node1 中输入:start-hbase.sh
进入和退出 HBase Shell
- 进入HBase Shell:
hbase shell
- 退出HBase Shell:
exit
Web 端访问 HBase 页面:http://10.211.55.18:60010
访问的时候,可能会有如下提示(HBase
集群中Master
服务挂掉了):
The load balancer is not enabled which will eventually cause performance degradation in hbase as regions will not be distributed across all regionservers.The balancer is only expected to be disabled during rolling upgrade scenarios.
解决办法:进入HBase Shell,输入并执行 balance_switch true
,这个时候再访问 HBase Web端,就不会有该提示了。
关闭 HBase,在关闭 HBase之前,一定不要先关闭Hadoop和ZooKeeper
-
关闭HBase
node1 中输入:
stop-hbase.sh
-
关闭ZooKeeper
node1、node2、node3中都要输入:
zkServer.sh stop
-
关闭Hadoop
node1 中输入:
stop-all.sh