将mapreduce架構更新到apache yarn,yarn将map reduce工作區分為兩個:jobtracker元件:實作資源管理和任務job;計劃/監視元件:劃分到單獨應用中。 使用mapreduce的2.0,開發人員現在可以直接hadoop内部基于建構應用程式。hadoop2.2也已經在微軟widnows上支援。
1.hdfs的高可靠性
2.hdfs snapshots快照
3.支援hdfs中的 nfsv3 檔案系統。
簡單介紹一下這個圖:右邊的3個節點中的nodemanager會定期的向resourcemanager(簡寫為rm)報告該節點的狀态(塊資訊,存儲資訊,該節點中的map或reduce任務執行情況等資訊),紅色的client向rm送出任務(包括輸入檔案位置、mapper和reducer),rm根據各個節點彙報的情況,為這個job建立一個application master(即圖中紅色的app mstr)用于管理這個job的執行情況。
app master建立好并接到任務後,會向rm申請資源(包括輸入檔案位置,記憶體使用,計算過程等),申請到一些container(可能在不同節點上)後,會開始在這些節點上執行(根據提供的輸入檔案位置讀取輸入檔案,執行map或reduce任務)這個job(的部分),app mstr同時會管理這些節點中的container,并監控這些container的運作情況。
藍色部分client----app mstr----container過程和紅色部分的過程完全相同。
系統環境如下:
安裝好jdk并配置好變量$java_home。由于我的機器是ubuntu的,是以使用apt-get可以安裝open-jdk,這裡我安裝的jdk版本為jdk7u55。
說明:由于我隻有一台電腦,是以這裡将所有關于hadoop的服務都配置在這裡(文章最後将會看到),而hdfs的備份因子預設為3,又由于隻有一台機器,是以隻能設定為1(下面也有說明)。此種模式除了并非真正意義的分布式之外,其程式執行邏輯完全類似于分布式,是以常用于開發人員測試程式執行。
1.解壓到/home/hduser/yarn目錄,假設user是使用者名(我這裡的使用者名為wxl)。
<a href="http://my.oschina.net/itblog/blog/282694#">?</a>
1
2
3
4
5
<code>$ </code><code>tar</code> <code>-xvzf hadoop-2.4.0.</code><code>tar</code><code>.gz</code>
<code>$ </code><code>mv</code> <code>hadoop-2.4.0 </code><code>/home/user/software/hadoop-2</code><code>.4.0</code>
<code>$ </code><code>cd</code> <code>/home/user/software</code>
<code>$ </code><code>sudo</code> <code>chown</code> <code>-r user:user hadoop-2.4.0</code>
<code>$ </code><code>sudo</code> <code>chmod</code> <code>-r 755 hadoop-2.4.0</code>
2.在~/.bashrc設定環境,将下面加入:
6
<code>export</code> <code>hadoop_home=</code><code>/home/hadoop/hadoop-2</code><code>.4.0</code>
<code>export</code> <code>hadoop_mapred_home=$hadoop_home</code>
<code>export</code> <code>hadoop_common_home=$hadoop_home</code>
<code>export</code> <code>hadoop_hdfs_home=$hadoop_home</code>
<code>export</code> <code>yarn_home=$hadoop_home</code>
<code>export</code> <code>hadoop_conf_dir=$hadoop_home</code><code>/etc/hadoop</code>
3.然後再執行下面的指令使配置生效:
<code>$ </code><code>source</code> <code>~/.bashrc</code>
4.建立hadoop資料目錄:
<code>$ </code><code>mkdir</code> <code>-p $hadoop_home</code><code>/yarn/yarn_data/hdfs/namenode</code>
<code>$ </code><code>mkdir</code> <code>-p $hadoop_home</code><code>/yarn/yarn_data/hdfs/datanode</code>
5.配置過程:
<code>$ </code><code>cd</code> <code>$hadoop_home</code>
<code>$ </code><code>vi</code> <code>etc</code><code>/hadoop/yarn-site</code><code>.xml</code>
6.編輯 $hadoop_home/etc/hadoop/yarn-site.xml,在<configuration>标簽中加入以下内容:
7
8
<code><</code><code>property</code><code>></code>
<code> </code><code><</code><code>name</code><code>>yarn.nodemanager.aux-services</</code><code>name</code><code>></code>
<code> </code><code><</code><code>value</code><code>>mapreduce_shuffle</</code><code>value</code><code>></code>
<code></</code><code>property</code><code>></code>
<code> </code><code><</code><code>name</code><code>>yarn.nodemanager.aux-services.mapreduce.shuffle.class</</code><code>name</code><code>></code>
<code> </code><code><</code><code>value</code><code>>org.apache.hadoop.mapred.shufflehandler</</code><code>value</code><code>></code>
7.單個叢集節點設定,在$hadoop_home/etc/hadoop/core-site.xml檔案的<configuration>标簽中加入下面内容在配置:
<code> </code><code><</code><code>name</code><code>>fs.default.name</</code><code>name</code><code>></code>
<code> </code><code><!-- 這個位址用于程式中通路hdfs使用 --></code>
<code> </code><code><</code><code>value</code><code>>hdfs://localhost:9000</</code><code>value</code><code>></code>
8.在$hadoop_home/etc/hadoop/hdfs-site.xml檔案的<configuration>标簽中加入下面内容
9
10
11
12
13
14
15
<code> </code><code><</code><code>name</code><code>>dfs.replication</</code><code>name</code><code>></code>
<code> </code><code><!-- 單機版的一般設為1,若是叢集,一般設為3 --></code>
<code> </code><code><</code><code>value</code><code>>1</</code><code>value</code><code>></code>
<code> </code><code><</code><code>name</code><code>>dfs.namenode.name.dir</</code><code>name</code><code>></code>
<code> </code><code><!-- 即第4步中建立的namenode檔案夾位置 --></code>
<code> </code><code><</code><code>value</code><code>>file:/home/hadoop/hadoop-2.4.0/yarn/yarn_data/hdfs/namenode</</code><code>value</code><code>></code>
<code> </code><code><</code><code>name</code><code>>dfs.datanode.data.dir</</code><code>name</code><code>></code>
<code> </code><code><!-- 即第4步中建立的datanode檔案夾位置 --></code>
<code> </code><code><</code><code>value</code><code>>file:/home/hadoop/hadoop-2.4.0/yarn/yarn_data/hdfs/datanode</</code><code>value</code><code>></code>
9.在$hadoop_home/etc/hadoop/mapred-site.xml檔案(如果這個檔案不存在,裡面有個mapred-site.xml.template檔案,拷貝為mapred-site.xml即可)中的<configuration>标簽内加入下面的配置:
<code> </code><code><</code><code>name</code><code>>mapreduce.framework.name</</code><code>name</code><code>></code>
<code> </code><code><</code><code>value</code><code>>yarn</</code><code>value</code><code>></code>
10.格式化namenode,這個過程僅僅在第一次使用之前執行一次。
<code>$ bin</code><code>/hadoop</code> <code>namenode -</code><code>format</code>
11.啟動hdfs處理和map-reduce 處理(當然,懶人(我就是一個,呵呵)可以把這幾句話寫在一個諸如"start.sh"的腳本裡面,每次就隻需要執行./start.sh就可以啟動hadoop的所有服務了,同理,停止hadoop的腳本過程也可以這樣做。)
<code># hdfs(namenode & datanode)部分:</code>
<code>$ sbin</code><code>/hadoop-daemon</code><code>.sh start namenode</code>
<code>$ sbin</code><code>/hadoop-daemon</code><code>.sh start datanode</code>
<code># mr(resource manager, node manager & job history server).部分:</code>
<code>$ sbin</code><code>/yarn-daemon</code><code>.sh start resourcemanager</code>
<code>$ sbin</code><code>/yarn-daemon</code><code>.sh start nodemanager</code>
<code>$ sbin</code><code>/mr-jobhistory-daemon</code><code>.sh start historyserver</code>
此時終端會提示啟動的相關日志被記錄在$hadoop_home/logs檔案夾中,如圖:
12.下面來确認是否成功啟動了相關服務:
<code>$ jps</code>
# 如果成功,應該有類似下面的輸出:
<code>22844 jps</code>
<code>28711 datanode</code>
<code>29281 jobhistoryserver</code>
<code>28887 resourcemanager</code>
<code>29022 nodemanager</code>
<code>28180 namenode</code>
如果不成功,在啟動這些服務的時候會看到有相關的日志輸出,可以去$hadoop_home/logs下面檢視相關日志來檢查哪些服務失敗了,然後再對症處理。
13.hdfs還提供了一個webui用于檢視該檔案系統的狀态,浏覽器打開端口:http://localhost:50070,其中utilities标簽下有個file browser,可以浏覽hdfs中的檔案。
14.可以在http://localhost:8088檢查應用程式的狀态:
15. 在http://localhost:8088/conf檢視hadoop叢集的所有配置資訊:
到此,hadoop安裝算是完成了。