一。前述java
原本有套好好的集羣,但是不知道爲何虛擬機鏡像文件損壞,結果致使集羣不能用。因此不得不從新搭套集羣,藉此機會順便再從新搭套吧,順便提醒一句你們,本身虛擬機的集羣必定要及時作好快照,最好裝完每一個東西后記得拍攝快照。要不搞工具真的很浪費時間,時間必定要用在刀刃上。廢話很少說,開始準備環境搭建,本集羣搭建徹底基於企業思想,因此生產集羣亦能夠參照此搭建。node
二。集羣規劃web
三。配置apache
1.配置集羣節點之間免密操做。bootstrap
由於在node01(namenode)節點要啓動datanode節點,因此須要配置node01到三臺datanode節點的免密操做ssh
由於兩個namenode之間須要互相切換下降對方的級別因此node01,node02之間須要進行免密操做。ide
具體步驟以下:工具
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keysoop
scp id_dsa.pub root@node04:`pwd`/node01.pubui
cat node01.pub >> ~/.ssh/authorized_keys
關閉防火牆:
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
2.上傳hadoop安裝包到某一節點上,進行配置
假設配置在此目錄下
第一步:配置hadoop-env.sh
使用命令echo $JAVA_HOME 肯定jd目錄。
配置java環境。
export JAVA_HOME=/usr/java/jdk1.7.0_67
第二步:配置hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>//配置集羣的別名,因此當企業中多套集羣時,可使用此別名分開
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>//配置兩個namenode的邏輯名稱
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>//配置兩個namenode的真正物理節點和rpc通訊端口
<value>node01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>//配置兩個namenode的真正物理節點rpc通訊端口
<value>node02:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>//配置兩個namenode的真正物理節點http通訊端口
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>//配置兩個namenode的真正物理節點http通訊端口
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>//配置三個journalnode的物理地址
</property>
<property>
<name>dfs.journalnode.edits.dir</name>//配置journalnode共享edits的目錄
<value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>//配置zkfc實現的真正類
</property>
<property>
<name>dfs.ha.fencing.methods</name>//配置zkfc隔離機制
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>//配置zkfc切換對方namenode時所使用的方式
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>/配置是否自動開啓zkfc切換
<value>true</value>
</property>
第三步:配置core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>//配置集羣的別名
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node02:2181,node03:2181,node04:2181</value>//配置和zookeep通訊地址和端口
</property>
<property>
<name>hadoop.tmp.dir</name>//配置hadoop元數據的存放目錄
<value>/var/sxt/hadoop-2.6/ha</value>
</property>
第四步:配置slaves
即datanode節點
對應datanode節點的host或者ip
第五步:分發配置到其餘節點相同目錄
scp -r hadoop-2.6.5 root@node04:`pwd`
第六步:配置zookeeeer集羣
一樣上傳到某一節點 而後配置
1.cp zoo_sample.cfg zoo.cfg先更名 zookeeper集羣識別zoo.cfg文件
2.配置conf/zoo.cfg
dataDir=/var/sxt/zk
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
3.配置集羣節點識別
mkdir -p /var/sxt/zk
echo 1 > myid //數字根據節點規劃
4.配置全局環境變量
export ZOOKEEPER=/opt/soft/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER/bin
5.啓動集羣
分別啓動三臺節點,而後查看狀態
zkServer.sh start
zkServer.sh statu
啓動成功!!!
第七步:啓動集羣順序(重要!!!)
1.先啓動journalnode
hadoop-daemon.sh start journalnode
2.在兩個namenode節點建立/var/sxt/hadoop-2.6/ha 即hadoop.tmp.dir的目錄存放元數據(默認會建立,不過最好仍是手工建立吧,而且裏面必定是乾淨目錄,無任何東西)
3.在其中一臺namenode節點格式化
hdfs namenode -format
4.而後啓動namenode!!!注意這個必定要先啓動,而後再在另外一臺namenode同步,爲了是讓裏面有數據
hadoop-daemon.sh start namenode
5.而後在另外一臺namenode節點執行同步hdfs namenode -bootstrapStandby
6.在主節點啓動集羣
start-dfs.sh
7.向zookeeper註冊active節點
hdfs zkfc -formatZK
8.啓動zkFC負責切換
hadoop-daemon.sh start zkfc
至此,集羣啓動成功啓動成功!!
9.web-ui驗證
10.下一次啓動時,只須要先啓動zookeper,而後在namenode的管理節點啓動start-dfs.sh便可 !!!
最後,別忘拍攝快照哦!!
持續更新中。。。。,歡迎你們關注個人公衆號LHWorld.