Hadoop学习路上的那些事儿,继续分享
(图片来自网络)
什么是yarn
简单的说,就是Hadoop中的一个资源管理器,由ResourceManager和NodeManager构成。
一言不合上官网,https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
实验过程
实验准备:
1. 开通一台云主机,此实验采用的是移动云云主机
2. 确保JDK安装正确,环境变量配置无误
3. 确保Hadoop安装正确,环境变量配置无误
4. 确保HDFS各种配置正确,同时正常启动
步骤一:配置两个核心配置文件
配置etc/hadoop/mapred-site.xml。需要注意的是,该目录下有一个mapred-site.xml.template文件,这是一个模板文件,需要把名字修改为mapred-site.xml,然后添加如下配置代码。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
配置etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
步骤二:启动yarn进程
实际上启动了ResourceManager和NodeManager两个守护进程。
sbin/start-yarn.sh
如果在此步骤启动不成功,提示JAVA_HOME没有设置或者未发现的错误信息,可通过手动配置mapred-env.sh文件中的JAVA_HOME,以及yarn-env.sh文件中的JAVA_HOME.
步骤三:验证结果,并操作yarn的dashboard页面
通过云主机公网IP加8088端口,在浏览器中打开yarn的dashboard页面,如36.255.67.89:8088,如果能够成功打开页面,说明yarn启动成功。
由于目前是刚启动,没有任何job作业在跑,所以页面显示无数据。继续使用hadoop自带的example功能,测试一下效果。
确保HDFS启动,并且有input输入文件,该文件下也有实验数据,如果有output文件存在,需要删除,否则会报错。
bin/hdfs dfs -rm -r output
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input/ output/ 'dfs[a-z.]+'
bin/hdfs dfs -cat output/*
刷新yarn的dashboard页面,就会发现有处理的数据了。
实验完成后,可以停止yarn,以及dfs进程。
sbin/stop-yarn.sh
sbin/stop-dfs.sh
实验总结
1) HDFS解决了数据的分布式存储,比如input和output中的数据,默认是3副本。
2) YARN解决了MapReduce处理数据过程的资源管理,将MapReduce的job作业进行了分布式。
遗留一个问题:上面两个配置文件中,配置了一堆变量,如HADOOP_MAPRED_HOME, HADOOP_COMMON_HOME, HADOOP_HDFS_HOME等,个人还没搞清楚,这些变量是在哪里配置的,只手动配置过JAVA_HOME和HADOOP_HOME。