我正在参加「掘金·启航计划」
Zookeeper
前期准备
按照 hadoop 的环境配置准备 可参照 这篇文章 点这里 防火墙要关闭 ssh要配置好
笔者的环境是CentOS7,Hadoop3.3.0
在Ubuntu18.04版本也安装过,Hadoop2.7也能用
安装
-
解压
tar -zxvf apache-zookeeper-3.5.7.bin.tar.gz -
重命名
mv apache-zookeeper-3.5.7-bin zookeeer-3.5.7 -
配置服务器编号
1. 在安装目录下 创建文件夹 zkData
mkdir zkData
2. 创建文件 myid
vim myid
3. 在myid 中添加server 对应的编号(上下不能有空行,左右不能有空格)
例如:2
4. 分发zookeeper 到其他服务器
xsync zookeeper-3.5.7 #xsync是个脚本 在上面文章里有讲
- 配置 zoo.cfg 文件
- 进入 /zookeeper-3.5.7/conf 目录下,将zoo_sample.cfg为zoo.cfg
mv zoo_sample.cfg zoo.cfg - 编辑 zoo.cfg
vim zoo.cfg修改数据存储路径 根据自己的zookeeper路径修改添加以下配置
#########cluster#######
server.2=hadoop1:2888:3888
server.3=hadoop2:2888:3888
server.4=hadoop3:2888:3888
# hadoop1是自己的主机名
配置参数解读
server.A=B:C:D
A是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件 myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server.
B是这个服务器的地址;
C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
- 同步zoo.cfg 文件
xsync zoo.cfg
启动停止脚本
在 /zookeeper-3.5.7 的目录下
启动
bin/zkServer.sh start
停止
bin/zkServer.sh stop
查看状态
bin/zkServer.sh status
集群控制脚本 在 bin 目录下创建文件 zk.sh,写入以下内容
#!/bin/bash
case $1 in
"start") {##hadoop1是主机名,根据自己的修改
for i in hadoop1 hadoop2 hadoop3
do
echo ------------ zookeeper $i 启动 ----------------
ssh $i "/export/server/zookeeper-3.5.7/bin/zkServer.sh start"##这里是目录 根据自己修改
done
};;
"stop"){
for i in hadoop1 hadoop2 hadoop3
do
echo ------------ zookeeper $i 停止 ----------------
ssh $i "/export/server/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop1 hadoop2 hadoop3
do
echo ------------ zookeeper $i 状态 ----------------
ssh $i "/export/server/zookeeper-3.5.7/bin/zkServer.sh status"
done
};;
esac
赋予权限
chmod u+x zk.sh
之后可以在一台第一台机器上启动所有zookeeper
zk.sh start 群起
zk.sh stop 群停
zk.sh status 查看集群状态
如图
HBase
前言
环境要求:已配置完Hadoop+Zookeeper并且可以正常启动 我的环境是:CentOS7+Hadoop3.3+zookeeper3.5.7+HBase2.4.8
放一些下载链接和其他组件教程
-
下载链接 HBase安装包下载链接
安装
启动hadoop和zookeeper
要保证Hadoop和Zookeeper的正常运行
Hadoop:start-dfs.sh
Zookeeper:zk.sh start(脚本,点这里看配置)
解压
tar -zxvf xxx -C xxx(指定目录)
配置环境变量
- 进入环境变量文件加
cd /etc/profile.d - 新建文件并写入
vim hbase.sh写入以下内容,路径根据hbase写
export HBASE_HOME=/export/server/hbase-2.4.8
export PATH=$PATH:$HBASE_HOME/bin
- 分发环境变量
xsync /etc/profile.d/hbase.sh - 更新环境变量
每台机器都要更新,可以群发命令(Tabby 是 Alt + q)
source /etc/profile
修改配置文件
两个文件,env和site
hbase-env.sh
vim hbase-env.sh
进入文件后,在文件的最低端,如图,取消其前面的注释,并改为false
告诉hbase用自己配置的Zookeeper而不是hbase自带的
hbase-site.xml
vim hbase-site.xml
写入以下内容
<property>
<name>hbase.rootdir</name>
<!-- 设置Hadoop master-->
<value>hdfs://hadoop1:8020/hbase</value>
</property>
<!-- 设置hbase集群为分布式集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 设置zookeeper集群,用英文逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<!-- hbase备份的副本数,不能超过datanode的节点数。
hbase的数据备份数需要再hbase-site.xml配置文件中单独设置,否则hbase写入的数据regionServer只会保存一份! -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- Zookeeper元数据的存储目录,需要和Zookeeper的zoo.cfg 配置的一致 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/zk_data/data</value>
</property>
<!-- 指定HBase Master Web页面访问端口,默认端口号16010 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
</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>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
regionservers
进入之后删除默认的localhost
写入自己配置的主机名
解决log4j兼容性问题
修改HBase的jar包,使用Hadoop的jar包
在/hbase-2.4.8/lib/client-facing-thirdparty 路径下
把slf4j-log4j12-1.7.30.jar 重命名
如:mv slf4j-log4j12-1.7.30.jar slf4j-log4j12-1.7.30.jar.bak
分发HBase
xsync /hbase-2.4.8
启动与停止
群起群停
启动:bin/start-hbase.sh
停止:bin/start-hbase.sh
Web页面
host:16010
我的是http://192.168.154.138:16010 IP+16010