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 这个路径上,用户能够根据项目需求从新进行修改配置。