Rumen是为Apache Hadoop构建的数据提取和分析工具。Rumen挖掘JobHistory日志以提取有意义的数据并将其存储为易于解析的压缩格式或摘要。来自MapReduce日志的原始跟踪数据通常不足以进行仿真,仿真和基准测试,因为这些工具经常尝试测量源数据中未发生的条件。例如,如果任务在原始跟踪数据中本地运行,但是调度程序的模拟选择在远程机架上运行该任务,则模拟器需要其输入无法提供的运行时。为了填补这些空白,Rumen对摘要进行了统计分析,以评估跟踪不提供的变量。瘤胃跟踪同时驱动Gridmix(Hadoop MapReduce集群的基准)和SLS(资源管理器调度程序的模拟器)。
从JobHistory日志中提取有意义的数据是任何可在MapReduce上运行的工具的常见任务。编写与MapReduce框架紧密结合的自定义工具非常繁琐。因此,需要用于执行日志解析和分析的框架级任务的内置工具。这样的工具将根据作业历史记录与对作业历史记录格式所做的更改隔离外部系统。
对MapReduce作业的各种属性(例如任务运行时,任务失败等)进行统计分析是基准测试和模拟工具可能需要的另一项常见任务。瘤胃产生
瘤胃由2个成分组成
跟踪生成器:将JobHistory日志转换为易于解析的格式。当前,TraceBuilder以JSON格式输出跟踪。
* Folder *:用于缩放输入迹线的实用程序。从TraceBuilder获得的跟踪仅汇总了输入文件夹和文件中的作业。给定跟踪中所有作业完成的时间范围可以视为跟踪运行时。文件夹可用于扩展跟踪的运行时间。减少跟踪运行时间可能涉及从输入跟踪中删除某些作业,并缩减其余作业的运行时间。增加跟踪运行时间可能会涉及在结果跟踪中添加一些虚拟作业,并扩大单个作业的运行时间。
将JobHistory日志转换为所需的作业跟踪包括2个步骤
将信息提取为中间格式
调整从中间跟踪获得的作业跟踪以具有所需的属性。
从JobHistory日志中提取信息是一项一次性操作。所谓的金迹线可以重复使用以生成具有所需属性值的迹线,例如输出持续时间,浓度等。
瘤胃提供2个基本命令
首先,我们需要生成Gold Trace。因此,第一步是在作业历史文件夹上运行TraceBuilder。TraceBuilder的输出是一个作业跟踪文件(和可选的群集拓扑文件)。如果我们想缩放输出,可以使用Folder实用程序将当前迹线折叠到所需的长度。本节的其余部分将详细介绍这些实用程序。
hadoop rumentrace [选项] <作业跟踪输出> <拓扑输出> <输入>
此命令调用Rumen的TraceBuilder实用程序。
TraceBuilder将JobHistory文件转换为一系列JSON对象,并将它们写入<jobtrace-output>文件。它还提取群集布局(拓扑)并将其写入<topology-output>文件。<inputs>表示以空格分隔的JobHistory文件和文件夹列表。
1)输入到TraceBuilder的输入和输出应该是完全限定的FileSystem路径。因此,请使用file://指定本地 FileSystem 上的文件,并使用hdfs://指定HDFS上的文件。由于输入文件或文件夹是FileSystem路径,因此意味着它们可以被全局化。在使用正则表达式指定多个文件路径时,这很有用。
2)默认情况下,TraceBuilder不会递归扫描输入文件夹中的作业历史记录文件。仅考虑将直接放置在输入文件夹下的文件用于生成跟踪。要通过递归扫描输入目录将所有文件添加到输入目录下,请使用“ -recursive”选项。
群集拓扑的用法如下:
要重建分割并确保正确模拟实际运行中看到的距离/延迟。
要为缺少拆分详细信息或合成生成的任务的任务推断拆分信息。
参数 | 描述 | 笔记 |
---|---|---|
-解复用器 | 用于读取作业历史文件。默认值为 DefaultInputDemuxer。 | Demuxer决定输入文件如何映射到作业历史文件。作业历史记录日志和作业配置文件通常是小文件,当以某些容器文件格式(例如SequenceFile或TFile)嵌入时,可以更有效地存储。为了支持这种使用情况,可以指定一个自定义的Demuxer类,该类可以从源文件中提取单个作业历史日志和作业配置文件。 |
-递归 | 递归遍历作业历史日志的输入路径。 | 该选项应用于通知TraceBuilder递归扫描输入路径并处理其下的所有文件。请注意,默认情况下,仅考虑直接位于输入文件夹下的历史记录日志来生成跟踪。 |
hadoop rumentrace \ 文件:///tmp/job-trace.json \ 文件:///tmp/job-topology.json \ hdfs:/// tmp / hadoop-yarn / staging / history / done_intermediate / testuser
这将分析存储在HDFS FileSystem 上的 / tmp / hadoop-yarn / staging / history / done_intermediate / testuser中的所有作业,并输出/tmp/job-trace.json中的 作业跟踪以及/ tmp / job-topology中的拓扑信息.json存储在本地 FileSystem上。
hadoop rumenfolder [选项] [输入] [输出]
此命令调用Rumen的Folder实用程序。折叠本质上是指结果轨迹的输出持续时间是固定的,并且调整作业时间线以符合最终输出持续时间。
到Folder的输入和输出应该是完全限定的FileSystem路径。因此,请使用file://指定本地 FileSystem 上的文件,并使用hdfs://指定HDFS上的文件。
参数 | 描述 | 笔记 |
---|---|---|
输入周期 | 定义折叠操作的基本时间单位。input-cycle没有默认值。 必须提供输入周期。 | ' -input-cycle 10m '意味着现在将以10分钟的间隔对整个跟踪运行进行切片。基本操作将在10m的块上完成。请注意,* Rumen *可以理解各种时间单位,例如 m(min),h(hour),d(days)等。 |
-输出持续时间 | 此参数定义跟踪的最终运行时间。如果为1小时,则为默认值。 | ' -output-duration 30m '表示生成的跟踪的最大运行时间为30分钟。输入跟踪文件中的所有作业将被折叠并缩放以适合此窗口。 |
-浓度 | 设置结果痕量的浓度。默认值为 1。 | 如果结果跟踪的总运行时间少于输入跟踪的总运行时间,那么与输入跟踪相比,结果跟踪将包含较少数量的作业。这实质上意味着输出被稀释。要增加作业的密度,请将浓度设置为较高的值。 |
-调试 | 在调试模式下运行文件夹。默认情况下,它设置为 false。 | 在调试模式下,文件夹将打印其他语句以进行调试。同样,暂存目录中生成的中间文件也不会被清除。 |
-种子 | 初始种子到随机数生成器。默认情况下,使用随机数生成器生成种子,并将种子值报告给用户以供将来使用。 | 如果传递了初始种子,则随机数发生器将以相同的顺序生成随机数,即,如果使用相同的种子,则随机数的序列将保持不变。文件夹使用随机数生成器来决定是否发出作业。 |
-temp目录 | 文件夹的临时目录。默认情况下,输出文件夹的父目录用作暂存空间。 | 这是Folder使用的暂存空间。最后,除非文件夹以调试模式运行,否则所有临时文件都将被清除。 |
-歪斜缓冲区长度 | 使文件夹能够容忍歪斜的作业。默认缓冲区长度为0。 | ' -skew-buffer-length 100 '表示如果作业在窗口大小100内出现乱序,则文件夹将按顺序将其发出。如果作业在此窗口外乱序显示,则文件夹将被保释,前提是未设置-allow-missorting。 文件夹报告在输入跟踪中看到的最大歪斜大小,以备将来使用。 |
-允许错过 | 使文件夹能够容忍无序的作业。默认情况下,不允许错误排序。 | 如果允许错误排序,则文件夹将忽略无法使用使用-skew-buffer-length指定的大小的歪斜缓冲区进行歪斜的乱序作业。如果不允许错误排序,则如果偏斜缓冲区无法容忍偏斜,则文件夹将出故障。 |
hadoop rumenfolder \ -输出持续时间1h 输入周期20m 文件:///tmp/job-trace.json \ 文件:///tmp/job-trace-1hr.json
如果折叠的作业不正常,则命令将退出紧急状态。
hadoop rumenfolder \ -输出持续时间1h 输入周期20m -允许错过\ -歪斜缓冲区长度100 文件:///tmp/job-trace.json \ 文件:///tmp/job-trace-1hr.json
如果折叠的作业不正常,则最多可以歪曲100个作业。如果101 日的工作是乱序,则该命令将保释出来。
MapReduce的751是引入的主要JIRA 瘤胃到MapReduce的。查看MapReduce 瘤胃组件以获取更多详细信息。