s5440363 发表于 2017-7-4 16:52:03

Yarn和Mapreduce框架的一些问题

1.Yarn中container是根据task的需求动态申请的,还是每个节点有固定的container
2.mapreduce中 reduce task是什么时候执行的。我看一些资料说 一般在map完成5%的时候就启动reduce,但是reduce需要所有的map 执行完才能执行recduce,那么我是不是可以认为 reduce task 提前执行只是单纯的从完成的map task 拉数据,还是要等到所有的map task完成之后才真正的执行reduce task。
3.我想要获取所有的task的执行时间和task 所请求的资源,请问改怎么做。。
请求各位大神来解答

einhep 发表于 2017-7-4 18:16:21

1.Yarn中container是根据task的需求动态申请的,还是每个节点有固定的container.
有了任务,才会分配container,一个map或则reduce都有相关container.
相关资料推荐
一个Container中有多少个map和reduce
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19909

2.mapreduce中 reduce task是什么时候执行的。我看一些资料说 一般在map完成5%的时候就启动reduce,但是reduce需要所有的map 执行完才能执行recduce,那么我是不是可以认为 reduce task 提前执行只是单纯的从完成的map task 拉数据,还是要等到所有的map task完成之后才真正的执行reduce task。
这个自己可以设置,默认是map完成5%的时候就启动reduce,但是此时reduce应该处于等待状态。

3.我想要获取所有的task的执行时间和task 所请求的资源,请问改怎么做。。
应该在监控页面中可以看到。
当然你也可以自定义监控

自定义监控

自定义监控是很多人想实现的,方法也有很多种。比如通过shell,通过抓取。其实hadoop提供了相关接口--那就是Hadoop JMX 接口.将http://namenode:50070/dfshealth.jsp 替换为 http://namenode:50070/jmx 就可以看到Hadoop自带的JMX接口所返回的JSON格式的数据,信息非常全面。同时,可以在链接的后面,添加参数来获取指定名称的监控信息,例如访问 http://namenode:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo 就可以只获取NameNodeInfo的信息,通过更改qry=后面的参数,可以指定想要获取的内容,qry参数的值即为json信息中name所对应的内容。
通过同样的方法,可以获得:
JobTracker的信息:http://namenode:50030/jmx
DataNode的信息:http://datanode:50075/jmx
TaskTracker信息:http://datanode:50060/jmx

来自:
监控hadoop生态系统企业应该用什么监控软件
http://www.aboutyun.com/thread-21931-1-1.html


s5440363 发表于 2017-7-4 20:01:27

einhep 发表于 2017-7-4 18:16
1.Yarn中container是根据task的需求动态申请的,还是每个节点有固定的container.
有了任务,才会分配conta ...

首先,谢谢你的回答,但是有些地方我还是有些不明白
1.我明白container是一个逻辑结构,他是由CPU+内存组成,通常由map或者reduce task申请得到一个container。我想问是的container是否有固定的资源(CPU和内存),或者说container是否根据map或者reduce task的资源请求而动态的创建一个container,之后task结束后,是否销毁这个container。
2.
3.其实我的目的是想把一个task的请求资源(CPU 和 RAM),处理数据大小和 执行时间 存放到一个文件里。从而获得大量历史数据,求一个解决方案。

qcbb001 发表于 2017-7-5 10:21:47

Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量
RM的内存资源配置,主要是通过下面的两个参数进行的(这两个值是Yarn平台特性,应在yarn-sit.xml中配置好):
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
说明:单个容器可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值


第二点:
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。是否销毁,目前尚未找到相关说明。猜测如果不销毁的话,可能会内存不够用。因此既然一个任务,只有一个Container,肯定是销毁的。

s5440363 发表于 2017-7-5 10:25:55

qcbb001 发表于 2017-7-5 10:21
Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资 ...

非常感谢,关于这个问题我明白了。
页: [1]
查看完整版本: Yarn和Mapreduce框架的一些问题