Hadoop高可用安装
Hadoop高可用安裝過程
在Hadoop安裝過程中在配置虛擬機網關地址的時候一定要仔細,千萬不要弄錯了,不然Ping.www.baidu會ping不出來。還有本來老師給了xshell5,然后后來我想試試安裝xshell6可不可以,然后之前的步驟是一直沒有問題的,但是到了傳輸文件的時候就不能傳輸,然后我卸掉了xshell6安裝了xshell5之后就可以了。在Hadoop安裝過程中千萬要做到仔細,不要拼寫錯誤。還有相互免秘鑰一定要成功不然之后的集群會啟動不起來,在出錯的時候,要學會查日志。還有在啟動集群之后千萬不要忘記關閉集群,如果電腦關機了之后集群跑不出來了,千萬崩潰,再來一遍就好了,堅持堅持,很重要。
1、分發jdk到node02、03、04
scp jdk-7u67-linux-x64.rpm node02:pwd
 scp jdk-7u67-linux-x64.rpm node03:pwd
 scp jdk-7u67-linux-x64.rpm node04:pwd
 
 并在Xshell的全部會話欄里一起ll,看jdk是否發送成功。
 
 
 
2、給node02、03、04分別安裝jdk
分別在node02、03、04上執行rpm安裝命令
 rpm -i jdk-7u67-linux-x64.rpm
 
 
 在node01上cd /etc,在此目錄下把profile文件分發到node02、03、04上。
 scp profile node02:pwd
 
 利用Xshell全部會話欄,source /etc/profile
 利用Xshell全部會話欄,jps,看02、03、04這三臺機子的jdk是否裝好。
 
 
 
 
3、同步所有服務器的時間
date查看機子當前的時間。
 時間不能差太大,否則集群啟動后某些進程跑不起來。
 若時間不同步,
 1.yum進行時間同步器的安裝
 yum -y install ntp
 
 
 
 
 2.執行同步命令
 ntpdate time1.aliyun.com 和阿里云服務器時間同步
 
 
 
 
4、裝機之前的配置文件檢查
1.cat /etc/sysconfig/network
 查看HOSTNAME是否正確
 
 
 
 2.cat /etc/hosts
 查看IP映射是否正確,若不正確,可以改文件,也可以把node01上的用scp分發過去
 
 
 
 
 3.cat /etc/sysconfig/selinux里是否出現SELINUX=disabled
 
 
 
 
 4.service iptables status查看防火墻是否關閉
 
 
 
5、NN與其他三臺機子的免秘鑰設置
1.在家目錄下 ll -a看下有無.ssh文件,如果沒有就ssh loalhost一下(不能忘記exit)
 
 
 
 2.cd .ssh ,并ll查看一下
 
 
 3.把node01的公鑰發給其他三臺機子
 scp id_dsa.pub node02:pwd/node01.pub node02公鑰發送到哪臺機子
 node01的公鑰重命名
 scp id_dsa.pub node03:pwd/node01.pub
 scp id_dsa.pub node04:pwd/node01.pub
 4. 在node02的.ssh目錄下ll看是否有node01.pub
 如果有,那就追加到authorized_keys
 cat node01.pub >> authorized_keys
 并且在node01上ssh node02看是否免密鑰了,千萬不要忘了exit
 
 同理給node03、04都追加一下node01.pub,也就是在node03、04的.ssh目錄下執行cat node01.pub >> authorized_keys
 
 
 
 5.同理給其他節點發送公鑰并在各個節點上把node01的公鑰追加上
 scp id_dsa.pub node03:pwd/node01.pub
 scp id_dsa.pub node04:pwd/node01.pub
 在node01上分別ssh node02,ssh node03,ssh node04,看是否能免密鑰登錄,每次ssh都別忘了exit
 
 
6、兩個NN間互相免密鑰
1.node01與node02間互相免密鑰: node01可免密鑰登錄node02,那現需node02上能免密鑰登node01,所以
 在node02上:
 ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
 ssh localhost驗證一下
 分發到node01上:scp id_dsa.pub node01:pwd/node02.pub
 在node01的.ssh目錄下,cat node02.pub >> authorized_keys,
 在node02上ssh node01驗證一下可否免密鑰登錄
 
7、修改namenode的一些配置信息
 
 1.vi hdfs-site.xml
 
 ?去掉snn的配置
 
 dfs.namenode.secondary.http-address
 node03:50090
 
 ?增加以下property
<!– 集群名稱mycluster–>
 
 fs.defaultFS
 hdfs://mycluster
 
 <!– zookeeper布署的位置–>
 
 ha.zookeeper.quorum
 node07:2181,node08:2181,node09:2181
 
 
 
 2.vi slaves
 node02
 node03
 node04
 
 3.安裝hadoop
 cd /opt ,將其下的tjx目錄分發到node02、03、04
 scp -r tjx/ node02:pwd
 scp -r tjx/ node03:pwd
 scp -r tjx/ node04:pwd
 
 
 4.將hdfs-site.xml和core-site.xml分發到node02、03、04
 scp hdfs-site.xml core-site.xml node02:pwd
 scp hdfs-site.xml core-site.xml node03:pwd
 scp hdfs-site.xml core-site.xml node04:pwd
 
 
 
 
8、安裝zookeeper
1、解壓安裝zookeeper
 tar xf zookeeper-3.4.6.tar.gz -C /opt/tjx
 在node02
 
 
 
 2. 修改zookeeper的配置文件 cd /opt/tjx/zookeeper-3.4.6/conf
 給zoo_sample.cfg改名 cp zoo_sample.cfg zoo.cfg
 vi zoo.cfg
 改dataDir=/var/tjx/zk
 并在末尾追加
 server.1=node02:2888:3888
 server.2=node03:2888:3888
 server.3=node04:2888:3888
 其中2888主從通信端口,3888是當主掛斷后進行選舉機制的端口
 
 
 3.把zookeeper分發到其他節點
 scp -r zookeeper-3.4.6/ node03:pwd scp -r zookeeper-3.4.6/ node04:pwd
 并用ll /opt/tjx檢查下看分發成功沒
 
 
 4.給每臺機子創建剛配置文件里的路徑
 mkdir -p /var/tjx/zk
 對node02來說: 
 echo 1 > /var/tjx/zk/myid
 cat /var/tjx/zk/myid
 對node03來說: 
 echo 2 > /var/tjx/zk/myid
 cat /var/tjx/zk/myid
 對node04來說: 
 echo 3 > /var/tjx/zk/myid
 cat /var/tjx/zk/myid
 
 
 
 5.在/etc/profile里面配置
 export ZOOKEEPER_HOME=/opt/tjx/zookeeper-3.4.6
 export ::PATH=PATH:/usr/java/jdk1.7.067/bin:PATH:/usr/java/jdk1.7.0_67/bin:PATH:/usr/java/jdk1.7.06?7/bin:HADOOP_HOME/bin:HADOOPHOME/sbin:HADOOP_HOME/sbin:HADOOPH?OME/sbin:ZOOKEEPER_HOME/bin
 
 
 
 
 6.然后在把/etc/profile分發到其他node03、node04
 scp /etc/profile node03:/etc
 scp /etc/profile node04:/etc
 
 在node02、03、04 source /etc/profile,驗證source這句是否完成,輸入zkCli.s,按Tab可以把名字補全zkCli.sh最后把zkCli.sh刪掉)
 
 同理可得03、04
 
 
 7.啟動zookeeper
 在node02中全部會話:zkServer.sh start
 接著用zkServer.sh status查看每個zookeeper節點的狀態
 
 
 
 
8、啟動journalnode
在01、02、03三臺機子上分別把journalnode啟動起來
 hadoop-daemon.sh start journalnode
 
 
9、格式化任一namenode
選擇node01上執行hdfs namenode -format
 
 然后,啟動剛剛格式化的namenode01
 hadoop-daemon.sh start namenode
10、給另一namenode同步數據
給node02另外同步數據
 hdfs namenode -bootstrapStandby
 
11、格式化zkfc
hdfs zkfc -formatZK
 
 在node02上執行zkCli.sh打開zookeeper客戶端看hadoop-ha是否打開 (ls / 查看)
 
 
12、啟動hdfs集群
在node01中啟動hdfs集群start-dfs.sh
 
 全部會話jps
 
 
 
 用瀏覽器訪問node01:50070和node02:50070
 
 關閉集群命令:stop-dfs.sh(在node01里面)
 關閉zookeeper命令:zkServer.sh stop(全部對話框)
 
 
 
 
 
 啟動hdfs集群
 注意:你下一次啟動hdfs集群的時候start-dfs.sh
13、為MapReduce做準備
把mapred-site.xml.template留個備份,并且改下名字
 cp mapred-site.xml.template mapred-site.xml
 在mapred-site.xml里添加如下property
 
 mapreduce.framework.name
 yarn
 
 
 在yarn-site.xml里添加如下property
 
 yarn.nodemanager.aux-services
 mapreduce_shuffle
 
 
 yarn.resourcemanager.ha.enabled
 true
 
 
 yarn.resourcemanager.cluster-id
 cluster1
 
 
 yarn.resourcemanager.ha.rm-ids
 rm1,rm2
 
 
 yarn.resourcemanager.hostname.rm1
 node03
 
 
 yarn.resourcemanager.hostname.rm2
 node04
 
 
 yarn.resourcemanager.zk-address
 node02:2181,node03:2181,node04:2181
 
 
 把mapred-site.xml和yarn-site.xml 分發到node02、03、04
 scp mapred-site.xml yarn-site.xml node02:pwd
 scp mapred-site.xml yarn-site.xml node03:pwd
 scp mapred-site.xml yarn-site.xml node04:pwd
 
 由于node03和node04都是resourcemanager,所以它倆應該相互免密鑰
 node03上免密鑰登錄node04:
 在node03的.ssh目錄下生成密鑰
 ssh-keygen -t dsa -P ‘’ -f ./id_dsa
 并追加到自己authorized_keys
 cat id_dsa.pub >> authorized_keys
 用ssh localhost驗證看是否需要密碼,別忘了exit
 將node03 的公鑰分發到node04
 scp id_dsa.pub node04:pwd/node03.pub
 在node04的.ssh目錄下,追加node03.pub
 cat node03.pub >> authorized_keys
 在node03上ssh node04,看是否免密鑰
 
 
 node04上免密鑰登錄node03:
 在node04的.ssh目錄下生成密鑰
 ssh-keygen -t dsa -P ‘’ -f ./id_dsa
 并追加到自己authorized_keys
 cat id_dsa.pub >> authorized_keys
 用ssh localhost驗證看是否需要密碼,別忘了exit
 將node04 的公鑰分發到node03
 scp id_dsa.pub node03:pwd/node04.pub
 在node03的.ssh目錄下,追加node04.pub
 cat node04.pub >> authorized_keys
 在node04上ssh node03,看是否免密鑰
 
 
 1.啟動zookeeper,全部會話zkServer.sh start
 
 
 
 
 2.在node01上啟動hdfs,start-dfs.sh
 
 3.在node01上啟動yarn,start-yarn.sh
 
 4.在node03、04上分別啟動resourcemanager,
 yarn-daemon.sh start resourcemanager
 
 
 5.全部會話jps,看進程全不全
 
 
 
 
 在瀏覽器訪問node03:8088,查看resourcemanager管理的內容
14、跑一個wordcount試試
1.cd /opt/tjx/hadoop-2.6.5/share/hadoop/mapreduce
 2.在hdfs里建立輸入目錄和輸出目錄
 hdfs dfs -mkdir -p /data/in
 hdfs dfs -mkdir -p /data/out
 3.將要統計數據的文件上傳到輸入目錄并查看
 hdfs dfs -put ~/500miles.txt /data/in
 hdfs dfs -ls /data/in
 4. 運行wordcount(注意:此時的/data/out必須是空目錄
 hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result
 
 
 5.查看運行結果
 hdfs dfs -ls /data/out/result
 hdfs dfs -cat /data/out/result/part-r-00000
 
15、關閉集群:
node01: stop-dfs.sh
 node01: stop-yarn.sh (停止nodemanager)
 node03,node04: yarn-daemon.sh stop resourcemanager
 Node02、03、04:zkServer.sh stop
 
 
 
 
16、在Windows下配置hadoop的環境
1.把壓縮包解壓后的這三個文件夾放到一個usr文件夾里,把usr放到一個你知道的地方。
 2.“此電腦”右鍵-屬性-高級系統設置
 
 3.更改環境變量,增加HADOOP_HOME(上次就配好了沒有截圖所以我就直接打開了)
 
 4.并且給path后追加HADOOP_HOME的bin目錄,注意:Windows里path的路徑分隔符是分號;,而不是冒號:
 
 5.然后再新建一個變量HADOOP_USER_NAME
 
 
 6.把hadoop.dll拷貝到以下路徑
 
 
 7.安裝ecipse-mars,此版本的eclipse帶插件,可以可視化的看到hadoop的一些東西,比較方便
 
 8.如果eclipse界面下方沒有小象圖標,則做后續三步調出上次已做已出現小象)點others
 
 
 9.在eclipse里把hadoop相關信息填一下(上次已改已填)
 
 
 
 (Hos中查哪個namenode是active就填哪一個)
 
 
 10.這樣在eclipse左側列表的DFS location里新建一個目錄,對應hdfs里也就建好了,可以用瀏覽器查看一下,自己試試。
 11.在eclipse里導入自己建一個包庫
 
 
 12.把jar包導入剛建的包庫
 
 13.把剛建的包庫引入到project里
 
 14.把JUnit包庫引入到project里
 
 
 15.利用xftp把hdfs-site.xml,core-site.xml等幾個xml放到project的src目錄
 
 
 16.結果(最后得到的結果如下圖所示)
 
總結
以上是生活随笔為你收集整理的Hadoop高可用安装的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 华为手机大变?余承东被传离职转岗,进军美
- 下一篇: win10 kms激活
