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的監控介面埠號為:8088http://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