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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章