Hadoop运行模式包括:本地模式、伪分布式模式,以及完全分布式模式。
1、本地模式 安装简单,在一台机器上运行服务,几乎不用做任何配置,但仅限于调试用途。没有分布式文件系统,直接读写本地操作系统的文件系统。
2、伪分布式模式 在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondary namenode等进程,模拟分布式运行的各个节点。配置已经很接近完全分布式。
3、完全分布式模式 正常的Hadoop集群,由多个各司其职的节点构成。
伪分布式运行模式
需求
已经配置java环境 已经配置hadoop环境
一、启动HDFS并运行MapReduce程序
1.配置集群
配置文件在:$HADOOP_HOME/etc/hadoop目录下
(1)配置:hadoop-env.sh
Linux系统中获取JDK的安装路径并复制:echo $JAVA_HOME
。
修改配置文件JAVA_HOME 路径:export JAVA_HOME=/opt/module/jdk1.8.0_144
。
如果配置文件中export JAVA_HOME=$JAVA_HOME
则也可以不改。
(2)配置:core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102(此虚拟机的主机名):9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.2/data/tmp(会自动创建)</value>
</property>
(3)配置:hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
2.启动集群
(1)格式化NameNode(第一次启动时格式化,以后就不要总格式化)
hdfs namenode -format
(2)启动NameNode
hadoop-daemon.sh start namenode
(3)启动DataNode
hadoop-daemon.sh start datanode
3.查看集群
(1)查看是否启动成功
jps
查看是否有NameNode和DataNode进程,有则启动成功。
注意:jps
是JDK中的命令,不是Linux命令。不安装JDK不能使用jps
。
(2)web端查看HDFS文件系统
在浏览器地址栏输入192.168.20.102(虚拟机的ip地址):50070
,如果你的windows已经配置hosts映射,也可以输入hadoop102(虚拟机的主机名):50070
。
点击Utilities,然后点击Browse the file system,可以查看HDFS上的目录。
注意:如果50070web页面不能查看,看如下帖子处理:
(3)查看产生的Log日志
日志在’$HADOOP_HOME/logs’目录下。
说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。
(4)思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么
注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
4.操作集群
(1)在HDFS文件系统上创建一个input文件夹
hdfs dfs -mkdir -p /user/nanfeng/input
,加上-p
选项则为层级创建。
(2)将测试文件内容上传到文件系统上
hdfs dfs -put wcinput/wc.input /user/nanfeng/input
,wcinput/wc.input为上传的本地文件路径,/user/nanfeng/input为保存到HDFS上的路径。
(3)查看上传的文件是否正确
hdfs dfs -ls /user/nanfeng/input
,查看HDFS上’/user/nanfeng/input’目录下的内容。hdfs dfs -cat /user/nanfeng/ input/wc.input
,查看’wc.input’文件内容。
(4)运行MapReduce程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/nanfeng/input /user/nanfeng/output
,wordcount为统计次数,/user/nanfeng/input为输入文件在HDFS上的路径,/user/nanfeng/output为输出文件在HDFS上的路径。
注意:MapReduce执行时,如果输出路径存在,则会报错。
(5)查看输出结果文件
hdfs dfs -cat /user/nanfeng/output/*
(6)将输出结果文件下载到本地
hdfs dfs -get /user/nanfeng/output/part-r-00000 ./
,/user/nanfeng/output/part-r-00000为下载文件在HDFS上的路径,’./'为保存到本地的路径。
(7)删除HDFS上的输出结果
hdfs dfs -rm -r /user/nanfeng/output
,/user/nanfeng/output为删除的文件在HDFS上的路径。
二、启动YARN并运行MapReduce程序
1.配置集群
(1)配置yarn-env.sh
修改配置文件JAVA_HOME 路径:export JAVA_HOME=/opt/module/jdk1.8.0_144
。
(2)配置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>hadoop102(此虚拟机的主机名)</value>
</property>
(3)配置:mapred-env.sh
修改配置文件JAVA_HOME 路径:export JAVA_HOME=/opt/module/jdk1.8.0_144
(4)配置: (对mapred-site.xml.template重新命名或者复制为) mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
,将mapred-site.xml.template复制为mapred-site.xml。
编辑配置文件:
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2.启动集群
(1)启动前必须保证NameNode和DataNode已经启动
(2)启动ResourceManager
yarn-daemon.sh start resourcemanager
(3)启动NodeManager
yarn-daemon.sh start nodemanager
(4)查看是否启动成功
jps
查看是否有ResourceManager和NodeManager进程,有则启动成功。
3.集群操作
(1)YARN的浏览器页面查看
在浏览器地址栏输入192.168.20.102(虚拟机的ip地址):8088
,如果你的windows已经配置hosts映射,也可以输入hadoop102(虚拟机的主机名):8088
。
(2)执行MapReduce程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/nanfeng/input /user/nanfeng/output
,wordcount为统计次数,/user/nanfeng/input为输入文件在HDFS上的路径,/user/nanfeng/output为输出文件在HDFS上的路径。
注意:MapReduce执行时,如果输出路径存在,则会报错。
(3)查看运行结果
在linux上查看:
hdfs dfs -cat /user/nanfeng/output/*
在Web端查看:
三、配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
1. 配置mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102(此虚拟机的主机名):10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102(此虚拟机的主机名):19888</value>
</property>
2.启动历史服务器
mr-jobhistory-daemon.sh start historyserver
3.查看历史服务器是否启动
jps
查看是否有JobHistoryServer进程,有则启动成功。
4.查看Web页面
在浏览器地址栏输入192.168.20.102(虚拟机的ip地址):19888
,如果你的windows已经配置hosts映射,也可以输入hadoop102(虚拟机的主机名):19888
。
四、配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到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.关闭ResourceManager、NodeManager 和HistoryManager(没启动则跳过这步)
yarn-daemon.sh stop resourcemanager
,关闭ResourceManager。yarn-daemon.sh stop nodemanager
,关闭NodeManager。mr-jobhistory-daemon.sh stop historyserver
,关闭HistoryManager。
3.启动NodeManager 、ResourceManager和HistoryManager
yarn-daemon.sh start resourcemanager
,启动ResourceManager。
yarn-daemon.sh start nodemanager
,启动NodeManager。
mr-jobhistory-daemon.sh start historyserver
,启动HistoryManager。
4.执行WordCount程序
若输出路径存在则需要删除:hdfs dfs -rm -R /user/nanfeng/output
。
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/nanfeng/input /user/nanfeng/output
,wordcount为统计次数,/user/nanfeng/input为输入文件在HDFS上的路径,/user/nanfeng/output为输出文件在HDFS上的路径。
注意:MapReduce执行时,如果输出路径存在,则会报错。
5.查看运行结果
hdfs dfs -cat /user/nanfeng/output/part-r-00000
6.查看日志
配了日志聚集后的日志可正常显示:
没配日志聚集前的日志不会显示:
五、配置文件说明
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
1.默认配置文件:
2.自定义配置文件
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。