歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> hadoop集群搭建HDFS、HA、 YARN

hadoop集群搭建HDFS、HA、 YARN

日期:2017/3/1 11:52:21   编辑:關於Linux

hadoop2.0已經發布了很多穩定版本,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.7.2又增加了YARN HA

1、環境准備

修改主機名、IP地址。這些在之前博客有提過就不再寫了。
配置IP地址和主機名映射關系。
sudo vi /etc/hosts

這裡寫圖片描述

集群規劃:
主機名 IP 安裝的軟件 運行的進程
spark01 192.168.2.201 jdk、hadoop NameNode、 DFSZKFailoverController(zkfc)
spark02 192.168.2.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
spark03 192.168.2.203 jdk、hadoop ResourceManager
spark04 192.168.2.204 jdk、hadoop ResourceManager
spark05 192.168.2.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcnVtUGVlck1haW48YnIgLz4NCnNwYXJrMDYgMTkyLjE2OC4yLjIwNiBqZGuhomhhZG9vcKGiem9va2VlcGVyIERhdGFOb2RloaJOb2RlTWFuYWdlcqGiSm91cm5hbE5vZGWholF1b3J1bVBlZXJNYWluPGJyIC8+DQpzcGFyazA3IDE5Mi4xNjguMi4yMDcgamRroaJoYWRvb3Chonpvb2tlZXBlciBEYXRhTm9kZaGiTm9kZU1hbmFnZXKhokpvdXJuYWxOb2RloaJRdW9ydW1QZWVyTWFpbjwvcD4NCjxoMiBpZD0="2安裝zookeeper集群在spark05-07上">2、安裝zookeeper集群在spark05-07上

參考博客:http://blog.csdn.net/u013821825/article/details/51375860

3、安裝配置hadoop集群(在spark01上操作)

3.1 解壓
tar -zxvf hadoop-2.7.2.tar.gz -C /app/
這裡寫圖片描述
3.2 配置HDFS(hadoop2.0所有的配置文件都在HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環境變量中
sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91
export HADOOP_HOME=/home/hadoop/app/hadoop-2.7.2
export PATH=JAVA_HOME/bin:PATH:HADOOP_HOME/bin
export CLASSPATH=.:JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
        cd /home/hadoop/app/hadoop-2.7.2/etc/hadoop

要修改的配置文件

a、修改hadoo-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91
這裡寫圖片描述

b、修改core-site.xml

     
            
            
                fs.defaultFS
                hdfs://ns1/
            
            
            
                hadoop.tmp.dir
                /home/hadoop/app/hadoop-2.7.2/tmp
             
            
            
                ha.zookeeper.quorum
               spark05:2181,spark06:2181,spark07:2181
            
        

這裡寫圖片描述

c、修改hdfs-site.xml


    
    
        dfs.nameservices
        ns1
    
    
    
        dfs.ha.namenodes.ns1
        nn1,nn2
    
    
    
        dfs.namenode.rpc-address.ns1.nn1
        spark01:9000
    
    
    
        dfs.namenode.http-address.ns1.nn1
        spark01:50070
    
    
    
        dfs.namenode.rpc-address.ns1.nn2
        spark02:9000
    
    
    
        dfs.namenode.http-address.ns1.nn2
        spark02:50070
    
    
    
        dfs.namenode.shared.edits.dir
    qjournal://spark05:8485;spark06:8485;spark07:8485/ns1
    
    
    
        dfs.journalnode.edits.dir
        /home/hadoop/app/hadoop-2.7.2/journaldata
    
    
    
        dfs.ha.automatic-failover.enabled
        true
    
    
                          dfs.client.failover.proxy.provider.ns1                     org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    
    
    
        dfs.ha.fencing.methods
        sshfence
                shell(/bin/true)
        
    
    
    
        dfs.ha.fencing.ssh.private-key-files
        /home/hadoop/.ssh/id_rsa
    
    
    
        dfs.ha.fencing.ssh.connect-timeout
        30000
    

這裡寫圖片描述

d、修改mapred-site.xml

先執行:[hadoop@hadoop01 hadoop]$ mv mapred-site.xml.template mapred-site.xml


    
    
        mapreduce.framework.name
        yarn
    

這裡寫圖片描述

e、修改yarn-site.xml


    
                          yarn.resourcemanager.ha.enabled
        true
    
    
    
        yarn.resourcemanager.cluster-id
        yrc
    
    
    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
    
                             yarn.resourcemanager.hostname.rm1
       spark03
        
                         yarn.resourcemanager.hostname.rm2
         spark04
    
    
    
        yarn.resourcemanager.zk-address                           spark05:2181,spark06:2181,spark07:2181
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

這裡寫圖片描述

f、修改slaves(slaves是指定子節點的位置,因為要在spark01上啟動HDFS、在spark03啟動yarn,所以spark01上的slaves文件指定的是datanode的位置,spark03上的slaves文件指定的是nodemanager的位置)
spark05
spark06
spark07
無密鑰登錄:
首先要配置spark01到spark02、spark03、spark04、spark05、spark06、spark07的免密碼登陸
這裡寫圖片描述

[hadoop@hadoop01 ~]ssh?keygen?trsa生成密鑰[hadoop@hadoop01 ] ssh-copy-id spark01
[hadoop@hadoop01 ~]ssh?copy?idspark02[hadoop@hadoop01 ] ssh-copy-id spark05
[hadoop@hadoop01 ~]ssh?copy?idspark06[hadoop@hadoop01 ] ssh-copy-id spark07
我在這裡就只截一張圖了
這裡寫圖片描述

配置spark03——》spark5-7的無密鑰登錄
同上述步驟在03中執行:ssh-keygen -t rsa
這裡寫圖片描述

[hadoop@hadoop01 ~]ssh?copy?idspark05[hadoop@hadoop01 ] ssh-copy-id spark06
[hadoop@hadoop01 ~]$ ssh-copy-id spark07

g、再將spark01中配置好的hadoop環境拷貝到其他機器上
scp -r hadoop-2.7.2/ spark02:/home/hadoop/app/
自己依次拷貝2-7都要拷貝過去,這樣整個hadoop集群環境就部署完成了。接下來就是啟動與測試集群。

4、啟動與測試

嚴格按照以下步驟完成啟動任務:
1、啟動zookeeper集群(分別在spark05、spark06、spark07上啟動zk)
cd /weekend/zookeeper-3.4.8/bin/
./zkServer.sh start
#查看狀態:一個leader,兩個follower
./zkServer.sh status
2、啟動journalnode(分別在在spark05、spark06、spark07上執行)
cd /weekend/hadoop-2.7.2/sbin
sbin/hadoop-daemon.sh start journalnode
#運行jps命令檢驗,weekend05、weekend06、weekend07上多了JournalNode進程
這裡寫圖片描述
3、格式化HDFS
#在spark01上執行命令:
hdfs namenode -format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這裡我配置的是/hadoop/hadoop-2.7.2/tmp,然後將/weekend/hadoop-2.4.1/tmp拷貝到hadoop02的/weekend/hadoop-2.7.2/下。
scp -r tmp/ hadoop02:/home/hadoop/app/hadoop-2.7.2/
##也可以這樣,建議hdfs namenode -bootstrapStandby
這裡寫圖片描述
4、格式化ZKFC(在hadoop【spark】01上執行即可)
hdfs zkfc -formatZK

5、啟動HDFS(在hadoop【spark】01上執行)
sbin/start-dfs.sh
這裡寫圖片描述
6、啟動YARN(#####注意#####:是在spark03上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要占用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
sbin/start-yarn.sh

7、在浏覽器中查看nanenode
這裡寫圖片描述
這裡寫圖片描述

8、驗證HDFS HA
首先向hdfs上傳一個文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然後再kill掉active的NameNode
kill -9
通過浏覽器訪問:http://192.168.1.202:50070
NameNode ‘hadoop02:9000’ (active)
這個時候weekend02上的NameNode變成了active
這裡寫圖片描述

在執行命令:
hadoop fs -ls /
-rw-r–r– 3 root supergroup 1926 2014-02-06 15:36 /profile
剛才上傳的文件依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.sh start namenode
通過浏覽器訪問:http://192.168.1.201:50070
NameNode ‘hadoop01:9000’ (standby)
驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out

到此為止所有的配置都完成了!

Copyright © Linux教程網 All Rights Reserved