Hadoop運行模式包括:本地模式、僞分佈式以及徹底分佈式模式。html
1、本地運行模式node
一、官方Grep案例web
1)在hadoop-2.7.2目錄下建立一個 input 文件夾瀏覽器
[hadoop@hadoop101 hadoop-2.7.2]$ mkdir input
2)將hadoop的xml配置文件複製到 input 服務器
[hadoop@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input
3)執行share 目錄下的MapReduce 程序app
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
4)查看輸出結果webapp
[hadoop@hadoop101 hadoop-2.7.2]$ cat output/*
二、官方WordCount 案例分佈式
1)在hadoop-2.7.2目錄下建立一個 wcinput 文件夾oop
[hadoop@hadoop101 hadoop-2.7.2]$ mkdir wcinput
2)在wcinput文件家下建立一個 wc.input 文件測試
[hadoop@hadoop101 hadoop-2.7.2]$ cd wcinput [hadoop@hadoop101 wcinput]$ touch wc.input
3)編輯 wc.input 文件,輸入以下內容
hadoop yarn
hadoop mapreduce
tom
tom
4)回到hadoop目錄 /opt/module/hadoop-2.7.2
5)執行程序
[hadoop@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
6)查看結果
[atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000 tom 2 hadoop 2 mapreduce 1 yarn 1
2、僞分佈式運行模式
一、啓動HDFS並運行MapReduce程序
一、分析
1)配置集羣
2)啓動、測試集羣 增、刪、查
3)執行 WordCount 案例
二、執行步驟
1)配置集羣
a、配置:hadoop-env.sh
Linux系統中獲取JDK的安裝路徑
[hadoop@ 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(第一次啓動時格式化,之後就不要總格式化)
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
b、啓動NameNode
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
c、啓動DataNode
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
3)查看集羣
a、查看是否啓動成功
[hadoop@hadoop101 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
[hadoop@hadoop101 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 [hadoop@hadoop101 logs]# cat hadoop-atguigu-datanode-hadoop101.log
d、思考:爲何不能一直格式化NameNode,格式化NameNode,要注意什麼?
[hadoop@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/name/current/ [hadoop@hadoop101 current]$ cat VERSION clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837 [hadoop@hadoop101 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 文件夾
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/hadoop/input
b、將測試文件內容上傳到文件系統上
[hadoop@hadoop101 hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input /user/hadoop/input/
c、查看上傳的文件是否正確
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls /user/hadoop/input/ [hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/hadoop/input/wc.input
d、運行MapReduce程序
[hadoop@hadoop101 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、查看輸出結果
命令行查看:
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/hadoop/output/*
瀏覽器查看:
f、將測試文件內容下載到本地
[hadoop@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/hadoop/output/part-r-00000 ./wcoutput/
g、刪除輸出結果
[hadoop@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/hadoop/output
二、啓動YARN並運行MapReduce程序
一、分析
1)配置集羣在YARN上運行MR
2)啓動、測試集羣 增、刪、查
3)在YARN上執行WordCount案例
二、執行步驟
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
[hadoop@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml [hadoop@hadoop101 hadoop]$ vi mapred-site.xml <!-- 指定MR運行在YARN上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
2)啓動集羣
a、啓動前必須保證NameNode和DataNode已經啓動
b、啓動ResourceManager
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
c、啓動NodeManager
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
3)集羣操做
a、yarn的瀏覽器頁面查看:
b、刪除文件系統上的output文件夾
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
c、執行MapReduce程序
[hadoop@hadoop101 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、查看運行結果:
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*
三、配置歷史服務器
爲了查看程序的歷史運行狀況,須要配置一下歷史服務器,具體配置步驟以下:
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)啓動歷史服務器
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
3)查看歷史服務器是否啓動
[hadoop@hadoop101 hadoop-2.7.2]$ jps
4)查看JobHistory
http://hadoop101:19888/jobhistory
四、配置日誌的彙集
日誌彙集概念:應用運行完成之後,將程序運行日誌信息上傳到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
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
3)啓動NodeManager、ResourceManager 和 HistoryManager
[hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager [hadoop@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager [hadoop@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
4)刪除HDFS 上已經存在的輸出文件
[hadoop@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
5)執行 WordCount 程序
[hadoop@hadoop101 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
五、配置文件說明
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 這個路徑上,用戶能夠根據項目需求從新進行修改配置。