Windows环境Docker环境搭建Hadoop3.2+zookeeper3.5.5+HBase2.2高可用集群(二)

一、 环境计划

hostname namenode datanode zookeeper zkfc journalnode resourcemanager nodemanager HMaster HRegionServer
hadoop1 1   N/A 1   1   1  
hadoop2 1   N/A 1   1   1  
hadoop3   1 1   1   1   1
hadoop4   1 1   1   1   1
hadoop5   1 1   1   1   1

zookeeper安装3台或者5台,奇数。1

JDK:1.8+

Zookeeper:3.1.4

Hadoop:3.2.0

Hbase:2.2.0

二、 基本环境设置

1、 启动docker镜像

       给oracle virtual machine default主机分配3G内存

       之前的镜像拉取等等操作请参考我之前的博文

      $ docker run -itd  --name hadoop -p 5001:22 centos /bin/bash

2、安装辅助软件

      # yum -y install net-tools.x86_64
      # yum install -y which
      # yum -y install psmisc
      # yum install openssh-server -y
      # yum install openssh-clients -y

3、改密码:

# echo "123456" |passwd --stdin root
# echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
# mkdir /var/run/sshd

4、ssh免密登录
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 0600 ~/.ssh/authorized_keys
Ctrl + P + Q 不停止容器退出

将 jdk、hadoop、zookeeper、hbase安装包准备好。

5、复制软件包

$ docker cp ./jdk1.8xxxxxx.tar.gz hadoop:/opt/

$ docker cp ./hbase-2.2.0-bin.tar.gz hadoop:/opt/

$ docker cp ./hadoop-3.2.0.tar.gz hadoop:/opt/

$ docker cp ./zookeeper-3.4.14.tar.gz hadoop:/opt/

6、配置软件包以及环境变量

$ docker attach hadoop 进入docker容器

加压后删除相应tar.gz文件,建立符号链接


 

7、配置HBase

进入hbase的conf目录

需要增加一个指向hdfs配置文件的符号链接

# ln -s /opt/hadoop/etc/hadoop/hdfs-site.xml ./hdfs-site.xml

编辑regionservers内容换成:

hadoop3

hadoop4

hadoop5

配置Hmaster高可用

增加backup-masters文件,内容:

hadoop2

相关配置文件和环境变量请从附件下载

环境变量配置在/root/.bashrc文件中,并按照配置文件中路径要求手工创建/opt/datas子文件夹

8、配置好后,exit退出容器,制作新的镜像。

$ docker commit adc93bab571b hadoop3-ha

基于这个镜像启动5个容器
docker run -itd --name hadoop1 --add-host hadoop1:172.17.0.2 --add-host hadoop2:172.17.0.3 --add-host hadoop3:172.17.0.4 --add-host hadoop4:172.17.0.5 --add-host hadoop5:172.17.0.6 -p 5002:22 -p 9870:9870 -p 8088:8088 -p 19888:19888 -p 16010:16010 hadoop3-ha /usr/sbin/sshd -D
docker run -itd --name hadoop2 --add-host hadoop1:172.17.0.2 --add-host hadoop2:172.17.0.3 --add-host hadoop3:172.17.0.4 --add-host hadoop4:172.17.0.5 -p 5003:22 --add-host hadoop5:172.17.0.6 -p 9871:9870 -p 8087:8088 -p 16011:16010 hadoop3-ha /usr/sbin/sshd -D
docker run -itd --name hadoop3 --add-host hadoop1:172.17.0.2 --add-host hadoop2:172.17.0.3 --add-host hadoop3:172.17.0.4 --add-host hadoop4:172.17.0.5 -p 5004:22 -p 16020:16020 --add-host hadoop5:172.17.0.6 hadoop3-ha /usr/sbin/sshd -D
docker run -itd --name hadoop4 --add-host hadoop1:172.17.0.2 --add-host hadoop2:172.17.0.3 --add-host hadoop3:172.17.0.4 --add-host hadoop4:172.17.0.5 -p 5005:22 -p 16021:16020 --add-host hadoop5:172.17.0.6 hadoop3-ha /usr/sbin/sshd -D
docker run -itd --name hadoop5 --add-host hadoop1:172.17.0.2 --add-host hadoop2:172.17.0.3 --add-host hadoop3:172.17.0.4 --add-host hadoop4:172.17.0.5 -p 5006:22 -p 16022:16020 --add-host hadoop5:172.17.0.6 hadoop3-ha /usr/sbin/sshd -D
使用ssh客户端分别登录这5个容器

三、 第一次启动设置

1.启动zookeeper 3台(出现一个leader,三个follower,启动成功)

修改/opt/zookeeper/data/myid,3个容器的myid内容分别是

hadoop3对应1,hadoop4对应2,hadoop5对应3

进入zookeeper根目录
# bin/zkServer.sh start

1.1分别在3台虚拟机上查看zookeeper的状态。

#bin/zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower

1.2 连接其中一台的zookeeper

#bin/zkCli.sh -server hadoop3:2181

1.3写入数据

WatchedEvent state:SyncConnected type:None path:null

[zk: hadoop3:2181(CONNECTED) 0]

create /test data

Created /test

1.4再连接另外一台的zookeeper

#bin/zkCli.sh -server hadoop4:2181

1.5如果能获取到刚才写入的数据,则Zookeeper集群安装成功。

WatchedEvent state:SyncConnected type:None path:null

[zk: hadoop4:2181(CONNECTED) 0] get /test

data
cZxid = 0x100000002
ctime = Wed Jun 26 16:43:13 UTC 2019
mZxid = 0x100000002
mtime = Wed Jun 26 16:43:13 UTC 2019
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

2.启动journalnode(分别在hadoop3、hadoop4、hadoop5上执行)
# cd /opt/hadoop/
# bin/hdfs --daemon start journalnode
或者以下命令也是开启 journalnode(不推荐)
# sbin/hadoop-deamon.sh start journalnode
# jps
1553 Jps
993 QuorumPeerMain
1514 JournalNode
# jps
993 QuorumPeerMain
1514 JournalNode
1563 Jps
出现JournalNode则表示journalnode启动成功。
3.格式化namenode(只要格式化一台,另一台同步,两台都格式化,你就做错了!!如:在hadoop2节点上)

进入容器hadoop1
# bin/hdfs namenode -format
如果在倒数8行左右的地方,出现这一句就表示成功
INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.
启动namenode
# bin/hdfs --daemon start namenode
# jps
1681 NameNode
1747 Jps
# cat /opt/datas/hadoop/ha-hadoop/hdfs/namenode/current/VERSION
#Tue Jun 25 14:59:40 UTC 2019
namespaceID=1463663733
clusterID=CID-32938cd0-ed33-40f6-90c5-2326198e31bd
cTime=1561474780005
storageType=NAME_NODE
blockpoolID=BP-789586919-172.17.0.2-1561474780005
layoutVersion=-65
4.同步hadoop1元数据到hadoop2中(必须先启动hadoop1节点上的namenode
在hadoop2主机上执行:
# bin/hdfs namenode -bootstrapStandby
如果出现:INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.
说明同步成功
# cat /opt/datas/hadoop/ha-hadoop/hdfs/namenode/current/VERSION
#Tue Jun 25 15:07:27 UTC 2019
namespaceID=1463663733
clusterID=CID-32938cd0-ed33-40f6-90c5-2326198e31bd
cTime=1561474780005
storageType=NAME_NODE
blockpoolID=BP-789586919-172.17.0.2-1561474780005
layoutVersion=-65
hadoop1和hadoop2显示的信息一致,则namenode数据同步成功
5.格式化ZKFC(在hadoop1上执行一次即可)
# bin/hdfs zkfc -formatZK
若在倒数第4行显示:INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/mycluster in ZK.
则表示ZKFC格式化成功
6.启动HDFS、yarn(在hadoop1上执行)
# sbin/start-dfs.sh
# sbin/start-yarn.sh

7、进入hbase根目录启动hbase

bin/start-hbase.sh

8、访问节点信息:

访问http://192.168.99.100:9870

yarn rmadmin -getServiceState rm1

yarn rmadmin -getServiceState rm2

拿active状态的节点映射端口比如8086访问
http://192.168.99.100:8087

查看hbase节点状态:

http://192.168.99.100:16010

9、启停JobHistory(查看MapReduce任务)

/opt/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
/opt/hadoop/sbin/mr-jobhistory-daemon.sh stop historyserver

http://192.168.99.100:19888

10、首次启动后,停止服务时,先停止,再停止hbase/bin/stop-hbase.sh,最后停止zookeeper/bin/zkServer.sh stop

再次启动 hadoop3、hadoop4、hadoop5上一次启动zookeeper/bin/zkServer.sh start

hadoop1节点上执行hadoop/sbin/start-all.sh

hbase/bin/start-hbase.sh

发布了36 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ccren/article/details/95081831
今日推荐