1. 程式人生 > >Hadoop2.x入門講解

Hadoop2.x入門講解

Hadoop專案主要包括一下四個模組

1、Hadoop Common
    為其他Hadoop模組提供基礎設施。
2、Hadoop HDFS
    一個高可靠、高吞吐量的分散式檔案系統
3、Hadoop MapReduce
    一個分散式的離線平行計算框架。
4、Hadoop YARN
    一個新的MapReduce框架,任務排程與資源管理。

HDFS系統架構

1、NameNode:是主節點,儲存檔案的元資料,如檔名、檔案目錄結構、檔案屬性(生成時間、副本數、檔案許可權),以及每個檔案的塊列表和塊所在DataNode等資訊。NameNode的元資料中一部分存放在記憶體中的程序中,另一部分存放在本地磁碟(fsimage映象檔案和edits編輯日誌)。
2、DataNode:在本地檔案系統儲存檔案塊資料,以及塊的校驗和。
3、Secondary NameNode:用來監控HDFS狀態的輔助後臺程式,每隔一段時間獲取HDFS元資料的快照。(配置HA後,不啟動)

Yarn系統架構

1、ResourceManager:處理客戶端請求;啟動/監控ApplicationMaster;監控NodeManager;資源的分配和排程。
2、ApplicationMaster:資料切分;為應用程式申請資源,並分配給內部任務;任務監控與容錯。
3、NodeManager:單節點上的資源管理;處理來自ResourceManager的命令;處理來自ApplicationMaster的命令。
4、Container:對任務執行環境的抽象,封裝了CPU、記憶體等多維資源以及環境變數、啟動命令等任務執行相關的資訊。


MapReduce分散式離線計算框架

1、將計算過程分為兩個階段,Map和Reduce
        Map階段並行處理輸入資料
        Reduce階段對Map結果進行彙總
2、Shuffle連線Map和Reduce兩個階段
       Map Task將資料寫到本地磁碟
       Reduce Task從每個Map Task上讀取一份資料
3、僅適合離線批處理
      具有很好的容錯性和擴充套件性
      適合簡單的批處理任務
4、缺點明顯
      啟動開銷大、過多使用磁碟導致效率低

Hadoop2.X環境的搭建偽分佈配置

1、安裝相應軟體

    (1)設定靜態ip

        在centos桌面右上角的圖示上,右鍵修改
        重啟網絡卡:service network restart
        驗證:ifconfig
    (2)修改主機名
        修改當前回話的主機名:hostname hadoop-senior.ibeifeng.com
        修改配置檔案中的主機名:vi /etc/sysconfig/network
        驗證:重啟電腦 reboot
    (3)主機名和ip繫結
        vi /etc/host
        192.168.217.130    hadoop-senior.ibeifeng.com    hadoop-senior
    (4)關閉防火牆
        執行命令:service iptables stop
        驗證:chkconfig --list | grep iptables
    (5)SSH(secure shell)免密碼登入
        執行命令: ssh-keygen ot rsa 產生金鑰,位於~/.ssh資料夾中
        執行命令: cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
        驗證:ssh localhost
    (6)安裝jdk1.7、配置環變數
        ./jdk-7u24-linux-i586.bin
        配置環境變數 vi /etc/profile
        export JAVA_HOME=/usr/local/jdk1.7
        export PATH=.:$JAVA_HOME/bin:$PATH
        執行source /etc/profile
        驗證:java -version
    (7)安裝Hadoop2.5.0
        tar  -zxvf hadoop-2.5.0.tar.gz -C /opt/modules/hadoop-2.5.0/

2、HDFS的配置檔案


hadoop-env.sh

export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的環境變數配置好可以不修改,這裡統一修改為echo $JAVA_HOMT的地址

core-site.xml:

<pre name="code" class="plain"><property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop-senior.ibeifeng.com:8020</value>  --改成自己的主機資訊
</property>
	
<property>
	<name> hadoop.tmp.dir</name>
	<value>/opt/modules/hadoop-2.5.0/data/tmp</value>   --改成自己的位置
</property>
hdfs-site.xml:
<property>
	<name>dfs.replication </name>
	<value>1 /value>   
</property>
3、格式化檔案系統
$ bin/hdfs namenode –format
4、啟動NameNode daemon 和DataNode daemon
$ sbin/start-dfs.sh  或者
$ sbin/hadoop-daemon.sh start namenode  
$ sbin/hadoop-daemon.sh start datanode 
啟動的時候會產生日誌檔案,日誌檔案在logs資料夾下
.log檔案記錄大部分應用程式的日誌資訊
.out記錄標準輸出和標準錯誤日誌
日誌檔案命令規則:
    框架名稱-使用者名稱-程序名-主機名-日誌格式字尾

5、HDFS提供的Web介面,埠號50070。

http://hadoop-senior.ibeifeng.com:50070/
6、HDFS的shell命令
$ bin/hdfs dfs –mkdir –p /user/beifeng/
$ bin/hdfs dfs –ls –R 
.......
7、Yarn的配置
yarn-env.sh
export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的環境變數配置好可以不修改,這裡統一修改為echo $JAVA_HOMT的地址
yarn-site.xml:
<property>
	<name>yarn.resourcemanager.hostname</name> 
	<value>hadoop-senior.ibeifeng.com</value>   
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
slaves配置從節點資訊,一行代表一個主機

8、yarn的啟動

$ sbin/start-yarn.sh  或者
$ sbin/yarn-daemon.sh  start  resourcemanager
$ sbin/yarn-daemon.sh  start  nodemanager
9、Yarn的監控介面埠號為:8088
http://hadoop-senior.ibeifeng.com:8088/
10、配置MapReduce執行到yarn上
mapred-env.sh
export JAVA_HOME=${JAVA_HOME} ###如果JAVA_HOME的環境變數配置好可以不修改,這裡統一修改為echo $JAVA_HOMT的地址
mapred-site.xml
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
11、mr測試程式
$ sbin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/input /user/output 
12、啟動歷史伺服器
    檢視已經執行完成的MR作業記錄,比如用了多少時間,多少個Reduce、作業提交時間、作業啟動時間、作業完成時間等。
    預設情況下,歷史伺服器是沒有啟動的。
$ sbin/mr-jobhistory-daemon.sh start historyserver 
13、yarn的日誌聚集功能配置和使用,LogAggregation
    聚集:應用程式完成之後,將日誌資訊上傳到HDFS系統。

yarn-site.xml

<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>設定存在的時間多少秒</value>
</property>
14、hdfs垃圾回收(誤刪除可以在回收站找回)

配置core-site.xml:

<property>
	<name>fs.trash.interval</name>
	<value>在垃圾回收站的存留時間分鐘</value> 
</property>

Hadoop2.x各個服務元件如何配置在哪臺伺服器

1、HDFS模組:

NameNode:是由哪個檔案中的哪個配置屬性指定的呢?

core-site.xml檔案中;
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-senior.ibeifeng.com:8020</value>
</property>
DataNodes:是由哪個檔案中的哪個配置屬性指定的呢?
slaves檔案中一行為一個DataNode
hadoop-senior.ibeifeng.com
SecondaryNameNode:是由哪個檔案中的哪個配置屬性指定的呢?
hdfs-site.xml檔案中;
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>hadoop-senior.ibeifeng.com:50090</value>
</property>
2、YARN模組:

ResourceManager:是由哪個檔案中的哪個配置屬性指定的呢?

yarn-site.xml檔案中;
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop-senior.ibeifeng.com</value>
</property>
NodeManagers:是由哪個檔案中的哪個配置屬性指定的呢?
slaves檔案中一行為一個NodeManager
hadoop-senior.ibeifeng.com