■ 安装步骤
||▶ 创建文件夹:
sudo mkdir /opt/module
sudo mkdir /opt/software
||▶ 下载hadoop-2.7.2.tar.gz,并上传至/opt/software/目录
||▶ 解压:tar -zxvf /opt/software/hadoop-2.7.2.tar.gz -C /opt/module/
查看解压是否成功:ls /opt/module/hadoop-2.7.2
||▶ 将Hadoop添加到环境变量:sudo vi /etc/profile
文末添加
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
||▶ 重载配置:source /etc/profile
||▶ 测试安装:hadoop version
■ 目录结构
ll /opt/module/hadoop-2.7.2
▪ bin目录:存放Hadoop相关服务(HDFS,YARN)脚本
▪ etc目录:Hadoop配置文件目录
▪ lib目录:Hadoop的本地库(对数据进行压缩解压缩功能)
▪ sbin目录:存放启动或停止Hadoop相关服务的脚本
▪ share目录:存放Hadoop的依赖jar包、文档、和官方案例
■ Hadoop本地运行模式
一、官方Grep案例
||▶ 新建目录:mkdir /opt/module/hadoop-2.7.2/input
||▶ 复制Hadoop的xml配置文件:cp /opt/module/hadoop-2.7.2/etc/hadoop/*.xml /opt/module/hadoop-2.7.2/input
||▶ 执行share目录下的MR程序:/opt/module/hadoop-2.7.2/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
备注:
1)输出文件夹out,一定要是一个不存在的文件夹
2)执行的主类名称为grep
||▶ 查看输出结果:cat /opt/module/hadoop-2.7.2/output/*
二、官方WordCount案例
||▶ 新建目录:mkdir /opt/module/hadoop-2.7.2/wcinput
||▶ 编辑输入文件:vim /opt/module/hadoop-2.7.2/wcinput/wc.input
hadoop yarn
hadoop mapreduce
harry
harry
||▶ 执行share目录下的MR程序:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
备注:
1)输出文件夹out,一定要是一个不存在的文件夹
2)执行的主类名称为wordcount
||▶ 查看输出结果:cat /opt/module/hadoop-2.7.2/wcoutput/part-r-00000
■ Hadoop伪分布式运行模式
只有一个节点的分布式,Hadoop的所有角色依赖于一个节点
一、配置、启动HDFS
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址,指定默认的FS为HDFS,不配置则默认为本地FS -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://iZwz94euuu9omin7e32ysnZ:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录,如NN、DN产生的数据 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
</configuration>
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量,单一节点至多存储1副本 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
||▶ 格式化NameNode(仅第一次启动时格式化,以后不要总格式化!):
/opt/module/hadoop-2.7.2/bin/hdfs namenode -format
备注:
格式化NN会产生新的集群id,导致NN和DN的集群id不一致,集群找不到以往数据。所以,格式NN时,一定要先删除data数据和log日志,再格式。
||▶ 启动NameNode:
/opt/module/hadoop-2.7.2/sbin/hadoop-daemon.sh start namenode
||▶ 启动DataNode:
/opt/module/hadoop-2.7.2/sbin/hadoop-daemon.sh start datanode
||▶ 查看是否启动成功:
jps
||▶ web端查看HDFS
说明:
9000是RPC端口
50070是HTTP端口
||▶ 查看产生的Log日志:
ls /opt/module/hadoop-2.7.2/logs
||▶ 在HDFS上创建input文件夹:
/opt/module/hadoop-2.7.2/bin/hdfs dfs -mkdir -p /user/harry/input
||▶ 上传文件到HDFS:
/opt/module/hadoop-2.7.2/bin/hdfs dfs -put /opt/module/hadoop-2.7.2/wcinput/wc.input /user/harry/input/
||▶ 查看上传的文件是否正确:
/opt/module/hadoop-2.7.2/bin/hdfs dfs -ls /user/harry/input/
/opt/module/hadoop-2.7.2/bin/hdfs dfs -cat /user/harry/input/wc.input
二、MP运行测试
||▶ 运行MR程序:/opt/module/hadoop-2.7.2/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/harry/input/ /user/harry/output
||▶ 命令行查看输出结果:/opt/module/hadoop-2.7.2/bin/hdfs dfs -cat /user/harry/output/*
||▶ 浏览器查看输出结果:
||▶ 将测试文件内容下载到服务器本地:hdfs dfs -get /user/harry/output/part-r-00000 /opt/module/hadoop-2.7.2/wcoutput/
备注:
要提前建好wcoutput目录,且目录为空
||▶ 查看内容:cat /opt/module/hadoop-2.7.2/wcoutput/part-r-00000
||▶ 删除输出结果:hdfs dfs -rm -r /user/harry/output
三、配置YARN
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址,value为主机名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>iZwz94euuu9omin7e32ysnZ</value>
</property>
</configuration>
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/mapred-env.sh
export JAVA_HOME=……
||▶ 重命名配置文件:mv /opt/module/hadoop-2.7.2/etc/hadoop/mapred-site.xml.template /opt/module/hadoop-2.7.2/etc/hadoop/mapred-site.xml
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
||▶ 启动集群
/opt/module/hadoop-2.7.2/sbin/hadoop-daemon.sh start namenode
/opt/module/hadoop-2.7.2/sbin/hadoop-daemon.sh start datanode
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh start resourcemanager
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh start nodemanager
||▶ jps
||▶ Web端查看YARN
四、测试在YARN上运行MR
||▶ 删除HDFS的output文件:/opt/module/hadoop-2.7.2/bin/hdfs dfs -rm -R /user/harry/output
||▶ 执行MR程序:/opt/module/hadoop-2.7.2/bin/hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/harry/input /user/harry/output
||▶ 查看运行结果:
/opt/module/hadoop-2.7.2/bin/hdfs dfs -cat /user/harry/output/*
说明
▪ 由于未配置历史服务器,点进History是无法访问的
五、配置历史服务器
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>iZwz94euuu9omin7e32ysnZ:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>iZwz94euuu9omin7e32ysnZ:19888</value>
</property>
||▶ 启动历史服务器:/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver
||▶ jps
||▶ 查看JobHistory
六、配置日志聚集
应用运行完成后,自动将日志传至HDFS,以便查阅调试;
开启日志聚集功能,需重新启动NodeManager 、ResourceManager和HistoryManager
||▶ vim /opt/module/hadoop-2.7.2/etc/hadoop/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>
||▶ 重启NodeManager 、ResourceManager、HistoryServer
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh stop resourcemanager
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh stop nodemanager
/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh stop historyserver
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh start resourcemanager
/opt/module/hadoop-2.7.2/sbin/yarn-daemon.sh start nodemanager
/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver
||▶ 删除HDFS上已经存在的输出文件:/opt/module/hadoop-2.7.2/bin/hdfs dfs -rm -R /user/harry/output
||▶ 执行官方WordCount程序:hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/harry/input /user/harry/output
||▶ 查看日志