本系列博文將記錄在3臺CentOS7環境下搭建徹底分佈式數據分析平臺環境。java
設置服務器的機器名,3臺都設依次分別設置爲node222,node224,node225,root用戶操做,示例如node222。node
hostnamectl set-hostname node222
修改各服務器的/etc/hosts文件,追加3臺服務器的IP和hostname信息,3臺服務器信息一致,root用戶操做。linux
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.222 node222 192.168.0.224 node224 192.168.0.225 node225
切一次用戶測試配置是否設置生效,同時測試經過hostname互ping是否正常。shell
su - root ping node222
CentOS7默認防火牆服務是firewalld,3臺服務器都要執行,root用戶操做,若是安裝了iptables服務也要關閉。bash
systemctl stop firewalld.service systemctl disable firewalld.service systemctl stop iptables.service systemctl disable iptables.service
修改/etc/selinux/config文件,將SELINUX設置爲disabled,3臺服務器均需安裝,root用戶操做。服務器
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
JDK8或最新版本可在oracle官方網站下載,本次採用jdk-8u66-linux-x64.gz,下載後經過FTP工具上傳至服務器,解壓,配置環境變量便可。3臺服務器均需安裝,root用戶操做。oracle
gtar -xzf /home/hadoop/jdk-8u66-linux-x64.gz -C /usr/local/ ls /usr/local/jdk1.8.0_66/ # 編輯/etc/profile文件添加以下內容 export JAVA_HOME=/usr/local/jdk1.8.0_66/ export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH vi /etc/profile # 使配置生效 source /etc/profile # 測試JDK環境 java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
以上各步驟操做完成後,重啓各服務器,再次檢查各配置項是否生效,如一切正常,即完成初始服務器環境配置。dom
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。分佈式
如下記錄zookeeper-3.4.10版本的3節點徹底分佈式集羣環境安裝部署過程。 工具
下載zookeeper-3.4.10.tar.gz,經過FTP工具上傳至一臺服務器並解壓,一臺服務器上操做,root用戶操做。
tar -zxf /rpmpackages/hbase/zookeeper-3.4.10.tar.gz -C /usr/local/
建立數據和日誌目錄
mkdir -p /usr/local/zookeeper-3.4.10/zkdata mkdir -p /usr/local/zookeeper-3.4.10/zklogs
複製模板生成配置文件,修改如下配置項
cp /usr/local/zookeeper-3.4.10/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.10/conf/zoo.cfg vi /usr/local/zookeeper-3.4.10/conf/zoo.cfg # 修改的內容 tickTime=2000 initLimit=5 syncLimit=2 dataDir=/usr/local/zookeeper-3.4.10/zkdata clientPort=2181 #最好用機器名 server.1=node222:2888:3888 server.2=node224:2888:3888 server.3=node225:2888:3888
相關配置參數說明:
#tickTime:
Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳,單位是毫秒。
#initLimit:
配置zookeeper集羣中follower與leader初始化鏈接時能容忍的tickTime個數,那麼容忍的時長就等於initLimit*tickTime
#syncLimit:
配置 Leader 與Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是syncLimit*tickTime
#dataDir:
快照日誌的存儲路徑
#dataLogDir:
事物日誌的存儲路徑,若是不配置這個那麼事物日誌會默認存儲到dataDir制定的目錄,這樣會嚴重影響zk的性能,當zk吞吐量較大的時候,產生的事物日誌、快照日誌太多
#clientPort:
這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
#server.1 這個1是服務器的標識也能夠是其餘的數字, 表示這個是第幾號服務器,這個標識要寫到快照目錄下面myid文件裏
#node222爲集羣裏的hostname,第一個端口是master和slave之間的通訊端口,默認是2888,第二個端口是leader選舉的端口,集羣剛啓動的時候選舉或者leader掛掉以後進行新的選舉的端口默認是3888
編輯bin/zkEnv.sh設置日誌目錄
if [ "x${ZOO_LOG_DIR}" = "x" ] then ZOO_LOG_DIR="/usr/local/zookeeper-3.4.10/zklogs" fi
拷貝zookeeper安裝文件至其餘節點
scp -r /usr/local/zookeeper-3.4.10 root@node224:/usr/local/ scp -r /usr/local/zookeeper-3.4.10 root@node225:/usr/local/
給集羣的每臺服務器分別建立本身的myid文件,文件內的號碼要與配置文件中的配置一致
[root@node222 zookeeper-3.4.10]# echo "1" > zkdata/myid [root@node224 zookeeper-3.4.10]# echo "2" > zkdata/myid [root@node225 zookeeper-3.4.10]# echo "3" > zkdata/myid
配置zookeeper的環境變量,3臺服務均要配置。
vi /etc/profile # 追加以下內容 export ZK_HOME=/usr/local/zookeeper-3.4.10 export PATH=$ZK_HOME/bin:ZK_HOME/sbin:ZK_HOME/lib:$PATH # 使配置生效 source /etc/profile
啓動節點上的zookeeper服務
/usr/local/zookeeper-3.4.10/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
檢查各節點的zookeeper服務狀態,正常應該有一個leader,兩個follower。
# leader節點狀態 /usr/local/zookeeper-3.4.10/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: leader # follower節點狀態 /usr/local/zookeeper-3.4.10/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode: follower
集羣中若是有三個節點,關閉兩個節點後,第三個節點的狀態會出現異常。啓動一個節點(兩個節點)狀態又能夠恢復;主節點關閉後,會選舉新的主節點,原主節點啓動後會做爲從節點。
zookeeper可經過zkCli.sh客戶端工具鏈接,進行簡單的shell操做。
/usr/local/zookeeper-3.4.10/bin/zkCli.sh -server node224:2181 Connecting to node224:2181 ...... WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: node224:2181(CONNECTED) 0] [zk: node224:2181(CONNECTED) 0] ls / [zookeeper] [zk: node224:2181(CONNECTED) 1] ls /zookeeper [quota] [zk: node224:2181(CONNECTED) 2] ls /zookeeper/quota [] [zk: node224:2181(CONNECTED) 3] create /zk_test my_data Created /zk_test [zk: node224:2181(CONNECTED) 4] ls / [zookeeper, zk_test] [zk: node224:2181(CONNECTED) 5] ls /zk_test [] [zk: node224:2181(CONNECTED) 6] get /zk_test