HistoryServer的原理详解
来源:互联网 发布:python 执行perl脚本 编辑:程序博客网 时间:2024/06/05 09:14
HistoryServer的原理详解
本文介绍了YARN中historyServer的原理和配置
HistoryServer的原理简介
下图展示了historyServer的数据流向图.
解释:
1. NodeManager在启动的时候会初始化LogAggregationService服务, 该服务会在把本机执行的container log (在container结束的时候)收集并存放到hdfs指定的目录下.
2. ApplicationMaster会把jobhistory信息写到hdfs的jobhistory临时目录下, 并在结束的时候把jobhisoty移动到最终目录, 这样就同时支持了job的recovery.
3. History会启动web和RPC服务, 用户可以通过网页或RPC方式获取作业的信息.
historyServer配置
NodeManager和HistoryServerd的配置
1. NodeManager需要启动LogAggregationService服务, 配置有:
mapred.job.history.server.embedded = true //默认为false, 需要配置true
yarn.nodemanager.remote-app-log-dir //tasklog要上传目的目录(hdfs目录), 默认为/logs
yarn.nodemanager.remote-app-log-dir-suffix // 子目录名字, 默认为logs
2. HistoryServer需要配置: yarn-site.xml
<property>
<name>mapred.job.history.server.embedded</name>
<value>true</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>historyserver:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value> historyserver:50060</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
mapred.job.history.server.embedded
mapreduce.jobhistory.address
mapreduce.jobhistory.webapp.address
mapreduce.jobhistory.intermediate-done-dir
mapreduce.jobhistory.done-dir
yarn.nodemanager.remote-app-log-dir
yarn.nodemanager.remote-app-log-dir-suffix
启动historyserver的方法:
sbin/mr-jobhistory-daemon.sh start historyserver
日志目录结构:
1. Jobhistory的日志目录: /mr-history/done/2012/12/13/000000/…
a) 在ApplicationMaster启动的时候创建.
b) 作业结束的时候jobhistoryserver 把jobhistory从tmp移动到done目录
c) 由historyServer负责删除, (配置 mapreduce.jobhistory.max-age-ms 默认一星期)
2. Tasklog的目录: logs/yuling.sh/logs/application_…
a) 在container结束的时候, 由NodeManager的服务LogAggregationService上传.
b) Tasklog由historyServer负责删除(需要配置yarn.log-aggregation.retain-seconds, 保留的时间, 设置为-1时不删除)
代码解析
代码主要在: org.apache.hadoop.mapreduce.v2.hs
1. CachedHistoryStorage, Manages an in memory cache of parsed Job History files. 管理缓存在内存中的jobhistory文件.
配置: mapreduce.jobhistory.loadedjobs.cache.size = 5
实现: 使用Collections. synchronizedMap (new LinkedHashMap<jobid, Job>{}), 同步的map存储, LinkedHashMap中,如果容量超过loadedJobCacheSize, 则会被自动删除.
功能: 提供获取job history的方法.
2. CompletedJob, Loads the basic job level data upfront. Data from job history file is loaded lazily. 维护一个结束的作业的状态信息(通过解析history得到), 提供获取job信息的方法. 包括该作业的所有的map/reduce task对象.
3. CompletedTask, 继承于Task类, 维护一个task的状态信息, 对外提供获取task信息的方法. 包括一个task的所有attempt.
4. CompletedTaskAttempt, 维护一个attempt的信息, 对外提供获取attempt信息的方法.
5. HistoryClientService, 为客户端提供RPC和web的服务, 其内部类MRClientProtocolHandler实现了MRClientProtocol协议.
配置: mapreduce.jobhistory.webapp.address, mapreduce.jobhistory.address
6. 接口HistoryContext, 提供getAllJobs和getPartialJobs两个方法.
7. HistoryFileManager, 维护jobhisotry文件的类, 负责创建history的tmp目录和done目录的创建, 提供getFileInfo方法, 给定一个jobId, 返回该作业的HistoryFileInfo对象. 如果job不在内存中, 则需要scanIntermediateDirectory, 如果还没, 则scanOldDirsForJob. 即扫描目录.
配置: mapreduce.jobhistory.max-age-ms = 7 * 24 * 60 * 60 * 1000L; //1 week
mapreduce.jobhistory.joblist.cache.size = 20000 //内存中缓存的historyfile文件信息(主要是job对应的 文件目录,)
mapreduce.jobhistory.datestring.cache.size = 200000 // Size of the date string cache. Effects the number of directories which will be scanned to find a job
mapreduce.jobhistory.move.thread-count=3 // The number of threads used to move files
8. 接口HistoryStorage, 实现类为HistoryStorage
9. JHSDelegationTokenSecretManager, 安全相关
10. JobHistory, Loads and manages the Job history cache. 维护着HistoryStorage和HistoryFileManager, 对外提供同一接口, 获取作业信息. 清理jobhistory
11. JobHistoryServer, jobhistory server的主方法, 负责启动服务.
12. PartialJob, 类似于CompletedJob. 不完整的作业信息
问题: 如果hdfs很慢, 那么网页显示也会很慢, 是否可以另外启动一个hdfs专门存储log数据.
- HistoryServer的原理详解
- hadoop2.x配置 - HistoryServer原理详解
- 配置HistoryServer
- yarn historyserver 使用解析
- ambari迁移HistoryServer服务
- hadoop配置启动historyserver
- timsort的原理详解
- lstm的原理 详解
- 哈希表的原理详解
- Spark源码阅读之HistoryServer
- Spring 的IOC原理详解
- 详解搜索引擎的工作原理
- DNS的工作原理详解
- word2vec的数学原理详解
- HDFS的原理漫画详解
- HashMap的原理与详解
- webService的工作原理详解
- 详解jsp的运行原理
- 定时器简介
- [Mac OSX]MAC读取Excel的Sheet
- 可重入函数
- iOS开发UI篇—九宫格坐标计算
- ZeroMQ的安装
- HistoryServer的原理详解
- Mahout--简单推荐系统Demo
- 搜索树中的最短长度问题
- 【C++】宏定义的用法
- halcon边缘提取和检测常用方法
- matlab中的一些函数(下)注意
- 【Leetcode】Panlidrome Linked List
- 线程与进程的区别与联系
- table滚动条