1. 程式人生 > >Hadoop 2.5.2 HDFS HA+YARN HA 應用配置

Hadoop 2.5.2 HDFS HA+YARN HA 應用配置

大數據 hadoop

  • 一:所需安裝配置包
  • 二:CentOS6.4x64 主機名配置
  • 三:journalnode 配置zookeeper 安裝
  • 四:在namenode節點上部署hadoop 2.5.2
  • 五:hadoop 集群的測試:

一:所需安裝配置包

系統:CentOS 6.4 X64
軟件:Hadoop-2.5.2.tar.gz 
      native-2.5.2.tar.gz
      zookeeper-3.4.6.tar.gz
      jdk-7u67-linux-x64.tar.gz
將所有軟件安裝上傳到/home/hadoop/yangyang/ 下面

二:CentOS6.4x64 主機名配置

   vim /etc/hosts (五臺虛擬機全部配置) 
   192.168.3.1      namenode1.hadoop.com
   192.168.3.2      namenode2.hadoop.com
   192.168.3.3      journalnode1.hadoop.com
   192.168.3.4      journalnode2.hadoop.com
   192.168.3.5      journalnode3.hadoop.com

角色分配表:
技術分享圖片

2.1:配置無密鑰認證

   所有服務器均配置-------------
     ssh-keygen ----------------一直到最後:
每臺機器會生成一個id_rsa.pub 文件,
將所有的密鑰生成導入一個authorized_keys文件裏面
  cat  id.rsa.pub >> authorized_keys
     然後從新分發到每臺服務器的 .ssh/目錄下面。
最後進行測試。

2.2: 安裝jdk7u67

所有服務器均配置。
     安裝jdk 
     tar -zxvf jdk-7u67-linux-x64.tar.gz
     mv jdk-7u67-linux-x64 jdk 
     環境變量配置
   vim .bash_profile
   到最後加上:

export JAVA_HOME=/home/hadoop/yangyang/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/yangyang/hadoop
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${HADOOP_HOME}/bin

等所有軟件安裝部署完畢在進行:
     source .bash_profile
      java –version

技術分享圖片

2.3 配置NTP Server 時間同步服務器

以 namenode1.hadoop.com 配置 作為NTP SERVER, 其它節點同步NTP 配置:
Namenode1.hadoop.com去網上同步時間

技術分享圖片

echo “ntpdate –u 202.112.10.36 ” >> /etc/rc.d/rc.local 
 #加入到開機自啟動
 vim /etc/ntp.conf

技術分享圖片
取消下面兩行的#
技術分享圖片
#vim /etc/sysconfig/ntpd
增加:
技術分享圖片

 #service ntpd restart 
 #chkconfig ntpd on

技術分享圖片

其它節點 配置計劃任務處理將從namenode1.hadoop.com 同步時間
crontab –e 
*/10 * * * * /usr/sbin/ntpdate  namnode1.hadoop.com

Namenode2.hadoop.com 

技術分享圖片

Journalnode1.hadoop.com

技術分享圖片

Jornalnode2.hadoop.com

技術分享圖片

Journalndoe3.hadoop.com

技術分享圖片


三: journalnode 配置zookeeper 安裝

3.1 安裝zookeeper軟件

mv zookeeper-3.4.6 /home/hadoop/yangyang/zookeeper
cd /home/yangyang/hadoop/zookeeper/conf
cp  -p zoo_sample.cfg zoo.cfg
vim zoo.cfg
更改dataDir 目錄       
dataDir=/home/hadoop/yangyang/zookeeper/data
配置journal主機的
server.1=journalnode1.hadoop.com:2888:3888
server.2=journalnode2.hadoop.com:2888:3888
server.3=journalnode3.hadoop.com:2888:3888

技術分享圖片

3.2 創建ID 文件

mkdir  /home/hadoop/yangyang/zookeeper/data
echo “1” > /home/hadoop/yangyang/zookeeper/myid
cd /home/hadoop/yangyang/
scp –r zookeeper [email protected]:/home/hadoop/yangyang/
scp –r zookeeper [email protected]:/home/hadoop/yangyang/

技術分享圖片

3.3 更改journalnode2 與journalnode3

   Journalnode2.hadoop.com :
     echo “2” > /home/hadoop/yangyang/zookeeper/data/myid
   Journalnode3.hadoop.com:
     echo “3” > /home/hadoop/yangyang/zookeeper/myid

 - 3.4 所有journalnode 節點啟動zookeeper。
        cd /home/hadoop/yangyang/zookeeper/bin
          ./zkServer.sh?start
---------------------顯示以下內容為正常---------------------------

技術分享圖片


四:在namenode節點上部署hadoop 2.5.2----

tar –zxvf hadoop-2.5.2.tar.gz 
mv hadoop-2.5.2 /home/hadoop/yangyang/hadoop/

4.1修改hadoop-env.sh

cd /home/hadoop/yangyang/hadoop/ 
vim etc/hadoop/hadoop-env.sh
增加jdk 的環境變量

export JAVA_HOME=/home/hadoop/yangyang/jdk
export HADOOP_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
export HADOOP_SECURE_DN_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
vim etc/hadoop/mapred-env.sh
增加jdk 的環境
export JAVA_HOME=/home/hadoop/yangyang/jdk
export HADOOP_MAPRED_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
vim etc/hadoop/yarn-env.sh
export JAVA_HOME=/home/hadoop/yangyang/jdk

4.2 修改core-site.xml

vim etc/hadoop/core-site.xml

 <configuration>
<!--?指定hdfs的nameservice為mycluster?-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--?指定hadoop臨時目錄?-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/yangyang/hadoop/data/tmp</value>
</property>
<!--?指定zookeeper地址?-->
<property>
<name>ha.zookeeper.quorum</name>
<value>journalnode1.hadoop.com:2181,journalnode2.hadoop.com:2181,journalnode3.hadoop.com:2181</value>
</property>
</configuration>

4.3 修改hdfs-stie.xml

 vim  etc/hadoop/hdfs-site.xml
<configuration>
<!--指定hdfs的副本數-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--指定hdfs的nameservice為mycluster,需要和core-site.xml中的保持一致?-->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!--?masters下面有兩個NameNode,分別是nn1,nn2?-->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!—nn1的RPC通信地址?-->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>namenode1.hadoop.com:8020</value>
</property>
<!--?nn1的http通信地址?-->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>namenode1.hadoop.com:50070</value>
</property>
<!--?nn2的RPC通信地址?-->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>namenode2.hadoop.com:8020</value>
</property>
<!--?nn2的http通信地址?-->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>namenode2.hadoop.com:50070</value>
</property>
<!--?指定NameNode的元數據在JournalNode上的存放位置?-->
<property>
<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://journalnode1.hadoop.com:8485;journalnode2.hadoop.com:8485;journalnode3.hadoop.com:8485/mycluster</value>
</property>
<!--?指定JournalNode在本地磁盤存放數據的位置?-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/yangyang/hadoop/data/jn</value>
</property>
<!--?開啟NameNode失敗自動切換?-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--?配置失敗自動切換實現方式?-->
<property>
<name>dfs.client.failover.proxy.provider.masters</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--?配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!--?使用sshfence隔離機制時需要ssh免登陸?-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--?配置sshfence隔離機制超時時間?-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

4.4 修改mapred-site.xml

vim etc/hadoop/mapred-site.xml
 <configuration>
<!--?指定mr框架為yarn方式?-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--?指定HDFS的日誌聚合功能?-->
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>journalnode3.hadoop.com:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>journalnode3.hadoop.com:19888</value>
</property>
</configuration>

4.5修改yarn-site.xml

vim etc/hadoop/yarn-site.xml
<configuration>
<!--?開啟RM高可靠?-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--?指定RM的cluster?id?-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>RM_HA_ID</value>
</property>
<!--?指定RM的名字?-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--?分別指定RM的地址?-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>namenode1.hadoop.com</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>namenode2.hadoop.com</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!--?指定zk集群地址?-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>journalnode1.hadoop.com:2181,journalnode2.hadoop.com:2181,journalnode3.hadoop.com:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

4.6更換native 文件

rm  -rf  lib/native/*
tar –zxvf hadoop-native-2.5.2.tar.gz –C hadoop/lib/native
cd hadoop/lib/native/

技術分享圖片

4.7 修改slaves 文件

vim etc/hadoop/slaves
journalnode1.hadoop.com
journalnode2.hadoop.com
journalnode3.hadoop.com

4.8 所有節點同步:

cd /home/hadoop/yangyang/
 scp –r hadoop [email protected]:/home/hadoop/yangyang/
 scp –r hadoop [email protected]:/home/hadoop/yangyang/
 scp –r hadoop [email protected]:/home/hadoop/yangyang/
 scp –r hadoop [email protected]:/home/hadoop/yangyang/

4.9 啟動所有 journalnode 節點的journalnode服務

  cd /home/hadoop/yangyang/hadoop/sbin
   ./ hadoop-daemon.sh?start?journalnode
     ---------------------------顯示內容-------------------------- 

技術分享圖片

4.10 啟動namenode 節點的HDFS

 cd /home/hadoop/yangyang/hadoop/bin
 ./hdfs?namenode?–format
![17.png-101.7kB][17]
將namenode1上生成的data文件夾復制到namenode2的相同目錄下
scp? -r? hadoop/data/? [email protected]:/home/hadoop/yangyang/hadoop

技術分享圖片

4.11格式化ZK 在namenode1 上面執行

cd /home/hadoop/yangyang/hadoop/bin
  ./ hdfs?zkfc?–formatZK

技術分享圖片
###4.12 啟動hdfs 與yarn 服務:

     ./start-dfs.sh
     ./ start-yarn.sh

技術分享圖片

4.13 namenode2上的standby resourcemanger是需要手動啟動的

 cd /home/hadoop/yangyang/hadoop/sbin
 ./yarn-daemon.sh start resourcemanager

4.14通過web查看集群狀態

查看namenode
http://namenode1.hadoop.com:50070/

技術分享圖片

http://namenode2.hadoop.com:50070/

技術分享圖片

查看resourcemanger
http://namenode1.hadoop.com:8088/

技術分享圖片
技術分享圖片

http://namenode2.hadoop.com:8088/

技術分享圖片

4.15啟動journalnode3.hadoop.com 的jobhistory 功能:

cd /home/hadoop/yangyang/hadoop/sbin/
./mr-jobhistory-daemon.sh start historyserver

技術分享圖片


五:hadoop 集群的測試:

5.1 HDFS 的故障轉移

殺掉namenode1.haoop.com 上的namenode

技術分享圖片

namenode2.haoop.com 的stundby 則切換為active狀態。

技術分享圖片

啟動namenode1.hadoop.com 的namenode 節點
   cd /home/hadoop/yangyang/hadoop/sbin/
./hadoop-daemon.sh start namenode

技術分享圖片

打開namenode1.hadoop.com 的瀏覽器

技術分享圖片

5.2 yarn的故障轉移:

  hadoop fs –mkdir /input 
  hadoop fs –put file1 /input/

技術分享圖片

在運行wordcount 時 殺掉 namenode1.hadoop.com 的resourcemanager
運行wordcount 
cd /home/hadoop/yangyang/hadoop/share/hadoop/mapreduce
yarn jar hadoop-mapreduce-examples-2.5.2.jar wordcount /input/file1 /output

技術分享圖片

殺掉namenode1.hadoop.com 上的rescourcemanager

技術分享圖片

Namenode2.hadoop.com 的yarn 切換為actvie 

技術分享圖片

Wordcount 運行執行結束:

技術分享圖片
技術分享圖片

查看jobhistory 頁面

技術分享圖片
技術分享圖片

Hadoop 2.5.2 HDFS HA+YARN HA 應用配置