1 环境搭建
mapreduce作为分布式计算模块,yarn作为作业调度和资源管理模块,区别在于:
- mapreduce是一种编程模型,可以理解为一个jar包
- yarn相当于启动运行mapreduce作业容器的进程
- 老版本中的mapreduce和yarn是整合在一起的
- mapreduce配置可以在提交作业时指定,而yarn配置必须要在配置文件修改生效。
1.1 配置yarn-env.sh
[centos@hadoop01 ~]$ tail -1 /soft/hadoop-2.7.3/etc/hadoop/yarn-env.sh export JAVA_HOME=/soft/jdk1.8.0_131
1.2 新建mapred-site.xml
清空文件内容并粘贴以下内容mapreduce.framework.name yarn mapreduce.jobhistory.address hadoop02:10020 mapreduce.jobhistory.webapp.address hadoop02:19888
1.3 配置yarn-site.xml
清空文件内容并粘贴以下内容yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop02 yarn.resourcemanager.address hadoop02:8032 yarn.resourcemanager.scheduler.address hadoop02:8030 yarn.resourcemanager.resource-tracker.address hadoop02:8031 yarn.resourcemanager.admin.address hadoop02:8033 yarn.resourcemanager.webapp.address hadoop02:8088 yarn.log-aggregation-enable true
1.4 启动hdfs(hadoop01)
[centos@hadoop01 ~]$ start-dfs.sh
1.5 配置节点的ssh免密登陆(hadoop02)
[centos@hadoop02 ~]$ ssh-keygen -t rsa [centos@hadoop02 ~]$ ssh-copy-id hadoop01 [centos@hadoop02 ~]$ ssh-copy-id hadoop02 [centos@hadoop02 ~]$ ssh-copy-id hadoop03
1.6启动jobhistory(hadoop02)
#此进程记录了mapreduce的运行历史信息 [centos@hadoop02 ~]$ mr-jobhistory-daemon.sh start historyserver
1.7 启动yarn(hadoop02)
[centos@hadoop02 ~]$ start-yarn.sh
2 mapreduce原理
2.1 wordcount运行
将/soft/hadoop-2.7.3/share/hadoop/mapreduce/目录下的hadoop-mapreduce-examples-2.7.3.jar拷贝到当前目录 创建英文文档1.txt 将1.txt传到hdfs根目录 运行jar命令hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /1.txt /out
注意:前面三个参数是指定运行的jar,第四个参数是输入路径,第五个是输出路径且输出路径不能存在,若存在则报错 在web界面上输入ip:8088端口,则可以看到mapreduce的执行状态
小游戏:
1、将userdraw文件夹put到hdfs hdfs dfs -put userdraw / 将userdraw整个目录上传至hdfs的根下 2、进入userdraw目录 hadoop jar myhadoop.jar com.oldboy.hadoop.userdraw.UserDrawApp /userdraw/data /userdraw/out /userdraw/out2
能够通过用户的请求代码比如10005分析出男女的占比,从而分析用这个软件的大概是男性还是女性。
总结:
JobHistoryServer
=====================================
在hadoop中,有一个进程是需要单独启动的,但是这个进程对于mapreduce有非常大的辅助作用
mr-jobhistory-daemon.sh start historyserver
可以在job运行之后,查看作业运行情况,方便作业错误排查
=====================================
在hadoop中,有一个进程是需要单独启动的,但是这个进程对于mapreduce有非常大的辅助作用
mr-jobhistory-daemon.sh start historyserver
可以在job运行之后,查看作业运行情况,方便作业错误排查
认清Mapreudce和Yarn的区别
====================================
map ===> reduce //构成第一个job ===> 运行在容器中
map ===> reduce //构成第二个job ===>
Mapreduce中分为mapTask和reduceTask
这两种Task是在YarnChild容器中运行的
YarnChild是由Yarn框架中的nodemanager生成的
mapreduce是一种编程模型,可以理解为一个jar包
yarn相当于启动运行mapreduce作业容器的进程
====================================
map ===> reduce //构成第一个job ===> 运行在容器中
map ===> reduce //构成第二个job ===>
Mapreduce中分为mapTask和reduceTask
这两种Task是在YarnChild容器中运行的
YarnChild是由Yarn框架中的nodemanager生成的
mapreduce是一种编程模型,可以理解为一个jar包
yarn相当于启动运行mapreduce作业容器的进程
MRAppMaster //是容器,负责?
YarnChild //是容器,负责?
yarn.scheduler.minimum-allocation-mb 1024 resourcemanager启动的container所能分配的最小内存,低于此值会抛出异常 yarn.scheduler.maximum-allocation-mb 4096 resourcemanager启动的container所能分配的最大内存,高于此值会抛出异常 yarn.scheduler.minimum-allocation-vcores 1 resourcemanager启动的container所能分配的最小cpu内核,低于此值会抛出异常 yarn.scheduler.maximum-allocation-vcores 4 resourcemanager启动的container所能分配的最大cpu内核,高于此值会抛出异常 yarn.nodemanager.resource.memory-mb 4096 container能分配的最大物理内存