本文源碼:GitHub·點這裏 || GitEE·點這裏node
環境:centos7 hadoop版本:2.7.2 jdk版本:1.8
vim /etc/profile # 添加環境 export JAVA_HOME=/opt/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/opt/hadoop2.7 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 退出刷新配置 source /etc/profile
如下配置文件所在路徑:/opt/hadoop2.7/etc/hadoop,這裏是Linux環境,腳本配置sh格式。git
root# vim hadoop-env.sh # 修改前 export JAVA_HOME= # 修改後 export JAVA_HOME=/opt/jdk1.8
文件結構概覽github
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> </configuration>
NameNode的地址web
<property> <name>fs.defaultFS</name> <value>hdfs://127.0.0.1:9000</value> </property>
數據存放目錄:Hadoop運行時產生文件的存儲目錄。vim
<property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop2.7/data/tmp</value> </property>
文件結構和上述同樣,配置hdfs副本個數,這裏僞環境,配置1個便可。centos
<property> <name>dfs.replication</name> <value>1</value> </property>
export JAVA_HOME=/opt/jdk1.8
指定YARN的ResourceManager的地址安全
<property> <name>yarn.resourcemanager.hostname</name> <value>192.168.72.132</value> </property>
指定map產生的中間結果傳遞給reduce採用的機制是shuffle服務器
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
export JAVA_HOME=/opt/jdk1.8
將mapred-site.xml.template從新命名爲mapred-site.xml。app
指定MapReduce程序資源調在度集羣上運行。若是不指定爲yarn,那麼MapReduce程序就只會在本地運行而非在整個集羣中運行。框架
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
Hdfs相關
格式化NameNode
第一次啓動時執行該操做。
[hadoop2.7]# bin/hdfs namenode -format
格式化NameNode,會產生新的clusterID,致使NameNode和DataNode的集羣id不一致,集羣找不到已往數據。因此,格式NameNode時,必定要中止相關進程,刪除data數據和log日誌,而後再格式化NameNode。clusterID在以下目錄中的VERSION文件裏,可自行查看對比。
/opt/hadoop2.7/data/tmp/dfs/name/current /opt/hadoop2.7/data/tmp/dfs/data/current
啓動NameNode
[hadoop2.7]# sbin/hadoop-daemon.sh start namenode
啓動DataNode
[hadoop2.7]# sbin/hadoop-daemon.sh start datanode
jps查看狀態
[root@localhost hadoop2.7]# jps 2450 Jps 2276 NameNode 2379 DataNode
Web界面查看
須要Linux關閉防火牆和相關安全加強控制(這裏很重要)。
IP地址:50070
Yarn相關
啓動ResourceManager
[hadoop2.7]# sbin/yarn-daemon.sh start resourcemanager
啓動NodeManager
[hadoop2.7]# sbin/yarn-daemon.sh start nodemanager
Web界面查看
IP地址:8088/cluster
MapReduce相關
文件操做測試
建立一個測試文件目錄
[root@localhost inputfile]# pwd /opt/inputfile [root@localhost inputfile]# echo "hello word hadoop" > word.txt
HDFS文件系統上建立文件夾
[hadoop2.7] bin/hdfs dfs -mkdir -p /opt/upfile/input
上傳文件
[hadoop2.7]# bin/hdfs dfs -put /opt/inputfile/word.txt /opt/upfile/input
查看文件
[hadoop2.7]# bin/hdfs dfs -ls /opt/upfile/input
執行文件分析
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /opt/upfile/input /opt/upfile/output
查看分析結果
bin/hdfs dfs -cat /opt/upfile/output/*
結果:每一個單詞各自出現一次。
刪除分析結果
bin/hdfs dfs -rm -r /opt/upfile/output
MapReduce的JobHistoryServer,這是一個獨立的服務,可經過 web UI 展現歷史做業日誌。
<!-- 服務器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.72.132:10020</value> </property> <!-- 服務器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.72.132:19888</value> </property>
[hadoop2.7]# sbin/mr-jobhistory-daemon.sh start historyserver
IP地址:19888
日誌彙集概念:應用服務運行完成之後,將運行日誌信息上傳到HDFS系統上。方便的查看到程序運行詳情,方便開發調試。
開啓日誌彙集功能以後,須要從新啓動NodeManager 、ResourceManager和HistoryManager。
關閉上述服務
[hadoop2.7]# sbin/yarn-daemon.sh stop resourcemanager [hadoop2.7]# sbin/yarn-daemon.sh stop nodemanager [hadoop2.7]# sbin/mr-jobhistory-daemon.sh stop historyserver
修改yarn-site
<!-- 日誌彙集功開啓 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日誌保留時間7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
修改完以後再次啓動上述服務器。再次執行文件分析任務。
查看Web端
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent