Hadoop学习
Hadoop伪分布式部署
一.前期工作
我在配置伪分布式之前先对主机名称做了些改变,方便后续的使用
输入hostname
查看现在的主机名称,大部分都应该是默认的localhost.localdomain,以管理员身份更改/etc/hostname文件,把主机名称改成你想要的,改完保存后重启虚拟机就会变成你改的名称了
以管理员身份对/etc/hosts文件进行更改,sudo vi etc/hosts
加入你的IP地址和虚拟机名称
来到window下的host文件进行更改,也加上你虚拟机的IP地址和对应的主机名称
二.启动HDFS
来到/etc/hadoop目录下,这里存放的是hadoop的各种配置文件
1.配置hadoop-env.sh
更改JAVA_HOME路径 输入echo $JAVA_HOME
查看你的JAVA_HOME路径
2.配置core-site.xml
这里的虚拟机名称和hadoop安装路径要根据你自己的配置进行更改
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01(**虚拟机名称**):9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>(**hadoop安装路径**)/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3.配置hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
4.格式化NameNode
[root@hadoop01 hadoop-2.7.2]# bin/hdfs namenode -format
5. 启动NameNode和DataNode
[root@hadoop01 hadoop-2.7.2]# sbin/hadoop-daemon.sh start namenode //启动NameNode
[root@hadoop01 hadoop-2.7.2]# sbin/hadoop-daemon.sh start datanode //启动DataNode
[root@hadoop01 hadoop-2.7.2]# jps //查看集群
6.查看web端
输入hadoop01(虚拟机名称):50070
这里如果你前面没有在windows下的hosts文件配置你虚拟机的IP和对应的虚拟机名称,在这里输入虚拟机名称:50070的话是无法访问的,只能通过IP地址:50070来访问
7.注意事项
不能多次格式化NameNode,格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode
8.实操
[root@hadoop01 hadoop-2.7.2]# mkdir wcinput //在hadoop-2.7.2文件下面创建一个wcinput文件夹
[root@hadoop01 hadoop-2.7.2]# cd wcinput
[root@hadoop01 wcinput]# touch wc.input //在wcinput文件下创建一个wc.input文件
[root@hadoop01 wcinput]# vi wc.input 编辑wc.input文件
输入一些文本
hadoop yarn
hadoop mapreduce
atguigu
atguigu
[root@hadoop01 hadoop-2.7.2]# bin/hdfs dfs -mkdir -p /user/atguigu/input //在HDFS文件系统上创建一个input文件夹
[root@hadoop01 hadoop-2.7.2]# bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input/ //将测试文件内容上传到文件系统上
[root@hadoop01 hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output //运行MapReduce程序
[root@hadoop01 hadoop-2.7.2]# bin/hdfs dfs -cat /user/atguigu/output/* //查看输出结果
可以在web端查看是否上传成功
也可在web端查看运行结果
[root@hadoop01 hadoop-2.7.2]# hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/ //将测试文件内容下载到本地
[root@hadoop01 wcoutput]# hdfs dfs -rm -r /user/atguigu/output //删除输出结果
output文件夹被删除
三.启动YARN
1.配置yarn-env.sh
配置一下JAVA_HOME
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>hadoop01(**虚拟机名称**)</value>
</property>
3.配置:mapred-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
4.配置 mapred-site.xml
对mapred-site.xml.template重新命名为mapred-site.xml
[root@hadoop01 hadoop]# mv mapred-site.xml.template mapred-site.xml
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5.启动YARN
启动前必须保证NameNode和DataNode已经启动
[root@hadoop01 hadoop-2.7.2]# sbin/yarn-daemon.sh start resourcemanager //启动ResourceManager
[root@hadoop01 hadoop-2.7.2]# sbin/yarn-daemon.sh start nodemanager //启动NodeManager
[root@hadoop01 hadoop-2.7.2]# jps //查看进程
6. 查看web端
7.实操
[root@hadoop01 hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output //运行MapReduce程序
可在web端查看运行结果
8.配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器,配置yarn-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>
点开这个HISTORY,在没配置历史服务器之前是进不去的,访问不了的,配置之后就可以进去了
9.配置日志聚焦
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到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
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
3.启动NodeManager 、ResourceManager和HistoryManager
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
[atguigu@hadoop01 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
4.删除HDFS上已经存在的输出文件
[atguigu@hadoop01 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output
5.执行WordCount程序
[atguigu@hadoop01 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input /user/atguigu/output
再点击刚才历史服务器右下角的logs