Hadoop之執行模式
Hadoop執行模式包括:本地模式、偽分散式以及完全分散式模式。
一、本地執行模式
1、官方Grep案例
1)在hadoop-2.7.2目錄下建立一個 input 資料夾
[[email protected] hadoop-2.7.2]$ mkdir input
2)將hadoop的xml配置檔案複製到 input
[[email protected] hadoop-2.7.2]$ cp etc/hadoop/*.xml input
3)執行share 目錄下的MapReduce 程式
[[email protected]hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
4)檢視輸出結果
[[email protected] hadoop-2.7.2]$ cat output/*
2、官方WordCount 案例
1)在hadoop-2.7.2目錄下建立一個 wcinput 資料夾
[[email protected] hadoop-2.7.2]$ mkdir wcinput
2)在wcinput檔案家下建立一個 wc.input 檔案
[[email protected] hadoop-2.7.2]$ cd wcinput [[email protected] wcinput]$ touch wc.input
3)編輯 wc.input 檔案,輸入如下內容
hadoop yarn
hadoop mapreduce
tom
tom
4)回到hadoop目錄 /opt/module/hadoop-2.7.2
5)執行程式
[[email protected] hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
6)檢視結果
[[email protected] hadoop-2.7.2]$ cat wcoutput/part-r-00000 tom 2 hadoop 2 mapreduce 1 yarn 1
二、偽分散式執行模式
1、啟動HDFS並執行MapReduce程式
1、分析
1)配置叢集
2)啟動、測試叢集 增、刪、查
3)執行 WordCount 案例
2、執行步驟
1)配置叢集
a、配置:hadoop-env.sh
Linux系統中獲取JDK的安裝路徑
[[email protected] hadoop101 ~]# echo $JAVA_HOME /opt/module/jdk1.8.0_144
修改JAVA_HOME路徑:
export JAVA_HOME=/opt/module/jdk1.8.0_144
b、配置:core-site.xml
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop執行時產生檔案的儲存目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
c、配置:hdfs-site.xml
<!-- 指定HDFS副本的數量 --> <property> <name>dfs.replication</name> <value>1</value> </property>
2)啟動叢集
a、格式化NameNode(第一次啟動時格式化,以後就不要總格式化)
[[email protected] hadoop-2.7.2]$ bin/hdfs namenode -format
b、啟動NameNode
[[email protected] hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
c、啟動DataNode
[[email protected] hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
3)檢視叢集
a、檢視是否啟動成功
[[email protected] hadoop-2.7.2]$ jps 13586 NameNode 13668 DataNode 13786 Jps
b、web端檢視HDFS檔案系統
http://hadoop101:50070/dfshealth.html#tab-overview
注意:如果不能檢視,看如下帖子處理:http://www.cnblogs.com/zlslch/p/6604189.html
c、檢視產生的Log日誌
當前目錄:/opt/module/hadoop-2.7.2/logs
[[email protected] logs]$ ls hadoop-atguigu-datanode-hadoop.atguigu.com.log hadoop-atguigu-datanode-hadoop.atguigu.com.out hadoop-atguigu-namenode-hadoop.atguigu.com.log hadoop-atguigu-namenode-hadoop.atguigu.com.out SecurityAuth-root.audit [[email protected] logs]# cat hadoop-atguigu-datanode-hadoop101.log
d、思考:為什麼不能一直格式化NameNode,格式化NameNode,要注意什麼?
[[email protected] hadoop-2.7.2]$ cd data/tmp/dfs/name/current/ [[email protected] current]$ cat VERSION clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837 [[email protected] hadoop-2.7.2]$ cd data/tmp/dfs/data/current/
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
注意:格式化NameNode,會產生新的叢集id,導致NameNode和DataNode的叢集id不一致,叢集找不到以往資料。所以,格式化NameNode時,一定要先刪除data資料和log日誌,然後再格式化NameNode。
4)操作叢集
a、在HDFS檔案系統上建立一個 input 資料夾
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/hadoop/input
b、將測試檔案內容上傳到檔案系統上
[[email protected] hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input /user/hadoop/input/
c、檢視上傳的檔案是否正確
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -ls /user/hadoop/input/ [[email protected] hadoop-2.7.2]$ bin/hdfs dfs -cat /user/hadoop/input/wc.input
d、執行MapReduce程式
[[email protected] hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/hadoop/input/ /user/hadoop/output
e、檢視輸出結果
命令列檢視:
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -cat /user/hadoop/output/*
瀏覽器檢視:
f、將測試檔案內容下載到本地
[[email protected] hadoop-2.7.2]$ hdfs dfs -get /user/hadoop/output/part-r-00000 ./wcoutput/
g、刪除輸出結果
[[email protected] hadoop-2.7.2]$ hdfs dfs -rm -r /user/hadoop/output
2、啟動YARN並執行MapReduce程式
1、分析
1)配置叢集在YARN上執行MR
2)啟動、測試叢集 增、刪、查
3)在YARN上執行WordCount案例
2、執行步驟
1)配置叢集
a、配置yarn-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
b、配置yarn-site.xml
<!-- Reducer獲取資料的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop101</value> </property>
c、配置:mapred-env.sh
配置一下 JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
d、配置:(對mapred-site.xml.template重新命名為)mapred-site.xml
[[email protected] hadoop]$ mv mapred-site.xml.template mapred-site.xml [[email protected] hadoop]$ vi mapred-site.xml <!-- 指定MR執行在YARN上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
2)啟動叢集
a、啟動前必須保證NameNode和DataNode已經啟動
b、啟動ResourceManager
[[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
c、啟動NodeManager
[[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
3)叢集操作
a、yarn的瀏覽器頁面檢視:
b、刪除檔案系統上的output資料夾
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
c、執行MapReduce程式
[[email protected] hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/hadoop/input /user/hadoop/output
d、檢視執行結果:
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*
3、配置歷史伺服器
為了檢視程式的歷史執行情況,需要配置一下歷史伺服器,具體配置步驟如下:
1)配置mapred-site.xml
在該檔案裡面增加如下配置:
<!-- 歷史伺服器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop101:10020</value> </property>
<!-- 歷史伺服器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop101:19888</value> </property>
2)啟動歷史伺服器
[[email protected] hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
3)檢視歷史伺服器是否啟動
[[email protected] hadoop-2.7.2]$ jps
4)檢視JobHistory
http://hadoop101:19888/jobhistory
4、配置日誌的聚集
日誌聚集概念:應用執行完成以後,將程式執行日誌資訊上傳到HDFS系統上。
日誌聚集功能好處:可以方便地檢視到程式執行詳情,方便開發除錯。
注意:開啟日誌聚集功能,需要重新啟動 NodeManager、ResourceManager 和 HistoryManager。
步驟如下:
1)配置 yarn-site.xml
在該檔案裡面增加如下配置:
<!-- 日誌聚集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日誌保留時間設定7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
2)關閉 NodeManager、ResourceManager 和 HistoryManager
[[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[[email protected] hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
3)啟動NodeManager、ResourceManager 和 HistoryManager
[[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager [[email protected] hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager [[email protected] hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
4)刪除HDFS 上已經存在的輸出檔案
[[email protected] hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
5)執行 WordCount 程式
[[email protected] hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input /user/atguigu/output
6)檢視日誌,如圖
http://hadoop101:19888/jobhistory
5、配置檔案說明
Hadoop配置檔案分兩類:預設配置檔案和自定義配置檔案,只有使用者想修改某一預設配置值時,才需要修改自定義配置檔案,更改相應屬性值。
1)預設配置檔案:
要獲取的預設檔案 | 檔案存放在hadoop的jar包中的位置 |
core-default.xml | hadoop-common-2.7.2.jar/core-default.xml |
hdfs-default.xml | hadoop-hdfs-2.7.2.jar/hdfs-default.xml |
yarn-default.xml | hadoop-yarn-common-2.7.2.jar/yarn-default.xml |
mapred-default.xml | hadoop-mapreduce-client-core-2.7.2.jar/mapred-default.xml |
2)自定義配置檔案:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四個配置檔案存放在 $HADOOP_HOME/etc/hadoop 這個路徑上,使用者可以根據專案需求重新進行修改配置。