期望你的閱覽是有價值的,因為我們堅守每一篇的質量
期望你的關注是持續的,因為我們堅守知識的連續與完整
是時候來跑一個MapReduce程序了。但前提是你得把環境整好。基於前兩篇的文章,先把HDFS環境部署好,讓數據穩穩的存儲下來。
卡弗卡大數據告訴你如何在YARN上面並行跑我們的MapReduce程序!
第一步:配置YARN
配置/opt/modules/hadoop-2.5.0/etc/hadoop/yarn-site.xml文件,在文件中添加如下的內容:
配置告訴YARN運行的是MapReduce
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置ResourceManager的服務節點是哪個機器
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-senior01.kfk.com</value>
</property>
保存文件。
第二步:啟動HDFS服務NameNode和DataNode
$ sbin/hadoop-daemon.sh
$ sbin/hadoop-daemon.sh
第三步:啟動YARN的ResourceManager
$ sbin/yarn-daemon.sh start resourcemanager
第四步:啟動YARN的NodeManager
$ sbin/yarn-daemon.sh start nodemanager
第五步:Web頁面訪問YARN
通過頁面訪問yarn WEB服務,默認端口號是8088
http://bigdata-senior01.kfk.com:8088
第六步:配置MapReduce程序
MapReduce程序的運行模式有兩種:一種是運行在本地,一種是運行在YARN上面。
我們首先配置一下MapReduce運行在YARN上面的配置文件mapred-site.xml文件。
具體配置內容如下:在mapred-site.xml文件加入如下的內容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
保存文件。
其中mapreduce.framework.name默認的屬性值為local。我們現在把它配置在YARN上面運行,所有屬性值為yarn。
第七步:創建數據文件
$ touch wc.input
$ vi wc.input
編輯如下的內容,我們來對一下內容做一個詞頻統計:
kfk kafuka
kafuka henry
henry kfk
lele henry
kafka henry
kfk kafuka
保存。
第八步:在HDFS上創建目錄
$ bin/hdfs dfs -mkdir -p /user/kfk/wordcount/input
第九步:上傳數據文件
$ bin/hdfs dfs -put /opt/datas/wc.input /user/kfk/wordcount/input
第十步:運行mapreduce程序
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/kfk/wordcount/input/wc.input /user/kfk/wordcount/output/
我們運行的是hadoop自帶的MapReduce程序。
注意:mapreduce的輸出目錄是不能被指定,也不能是重複的。
數據源: /user/kfk/wordcount/input/wc.input
輸出源:/user/kfk/wordcount/output/
第十一步:查看結果
運行完成之後,我們去/user/caojinbo/wordcount/output/這個目錄查看wordcount的運行結果。
$ bin/hdfs dfs -cat /user/kfk/wordcount/output/part-*
文件的結果如下:
kfk 3
henry 4
kafka 1
kafuka 3
lele 1
從結果中我們可以看出MapReduce不僅做了單詞的統計,而且還做了排序。
通過text讀取HDFS文件。text的優點是將所有的文件轉換成text文本文件。而cat只能讀取文本文件。
至此基於YARN的MapReduce是如何運行的,我們就講完了!