[大牛翻译系列]Hadoop(8)MapReduce 性能调优:性能测量(Measuring)
6.1 测量MapReduce和环境的性能指标
性能调优的基础系统的性能指标和实验数据。依据这些指标和数据,才能找到系统的性能瓶颈。性能指标和实验数据要通过一系列的工具和过程才能得到。
这部分里,将介绍Hadoop自带的工具和性能指标。还将捎带介绍性能监控工具。
6.1.1 作业统计数据抽取工具
这一章中介绍的很多技术都需要从Hadoop中抽取作业和任务的性能指标。有以下三种办法抽取这些统计数据:
- 用JobTracker UI来查看作业和任务的计数器。
- 用Hadoop CLI(命令行界面)来查看作业和任务计数器。此外,还可以从作业历史信息中获得其他性能指标。
- 用本书提供的工具来从作业历史中抽取性能指标
后两种工具的优势在于,既可以看现状信息,也可以看历史信息。好了,现在就开始介绍作业历史信息,以及怎么用Hadoop CLI和本书的工具来从中抽取性能指标。
作业历史信息和CLI(命令行界面)
每个MapReduce都会生成作业统计数据文件。在文件中有作业和任务的统计信息。查看这些统计信息的最便捷的方法就是使用Hadoop CLI。把这些统计信息抽取到HDFS的output目录中的过程命令如下:
$ hadoop job -history output
Hadoop job: job_201112081615_0181
=====================================
Job tracker host name: localhost
Submitted At: 23-Dec-2011 08:55:22
Launched At: 23-Dec-2011 08:55:22 (0sec)
Finished At: 23-Dec-2011 08:55:37 (15sec)
Status: SUCCESS
Counters: |Group Name |Counter name |Map Value |Reduce Value|Total |
-------------------------------------------------------------------
|FileSystem |FILE_BYTES_READ |0 |961,831 |961,831
|FileSystem |HDFS_BYTES_READ |696,068 |0 |696,068
|FileSystem |FILE_BYTES_WRITTEN |1,071,837 |1,071,519 |2,143,356
|FileSystem |HDFS_BYTES_WRITTEN |0 |784,221 |784,221
... Analysis
=========
Time taken by best performing map task 2sec
Average time taken by map tasks: 2sec
Worse performing map tasks:
TaskId Timetaken
task_201112081615_0181_m_000001 2sec
...
上述输出信息只是这个命令得到的结果中的一小部分。如果要深入了解,还是亲自执行一下命令,看看全部的输出信息。在上述输出信息中,包含任务任务执行时间的平均值和最差值。通过这些信息,可以很快了解全体性能指标的大致状况。那么,作业的历史信息文件在哪呢?图6.1说明了它的位置:

作业历史信息文件的后缀名是jar。尽管很迷惑人,但它实际上是文本文件,由JobHistory类整理而成。如果有兴趣,可以用JobHistory类来对这个jar文件作逆向工程,生成一个java形式的文件。这里可以只用Hadoop CLI来从HDFS ouput目录和NameNode log目录中抽取作业的统计信息。其实,本书提供的工具也可以完成这些工作。
6.1.2 监控
监控正在运行的MapReduce作业的CPU,内存,网络等各项性能指标无疑是重要的。了解这些指标可以避免硬件系统的部分闲置和过载。如果硬件系统过载了,那么由此而来的资源竞争,CPU上下文切换,内存页交换等就会浪费大量时间。如果硬件系统部分闲置了,那就是浪费资源。
要对系统的运行状态进行自动监控,然后才能够得到硬件系统的历史性能信息,并在特定的情况下发出警告信息。现在有很多这方面的工具:
- Linux内置的系统活动收集器和报告工具
- Nagios
- Ganglia。Ganglia是监控集群的开源项目。它提供了富客户端和图表工具。并能够从Hadoop中获取统计信息。(图6.2)

[大牛翻译系列]Hadoop(8)MapReduce 性能调优:性能测量(Measuring)的更多相关文章
- [大牛翻译系列]Hadoop 翻译文章索引
原书章节 原书章节题目 翻译文章序号 翻译文章题目 链接 4.1 Joining Hadoop(1) MapReduce 连接:重分区连接(Repartition join) http://www.c ...
- 【Xamarin挖墙脚系列:应用的性能调优】
原文:[Xamarin挖墙脚系列:应用的性能调优] 官方提供的工具:网盘地址:http://pan.baidu.com/s/1pKgrsrp 官方下载地址:https://download.xamar ...
- [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...
- [大牛翻译系列]Hadoop(15)MapReduce 性能调优:优化MapReduce的用户JAVA代码
6.4.5 优化MapReduce用户JAVA代码 MapReduce执行代码的方式和普通JAVA应用不同.这是由于MapReduce框架为了能够高效地处理海量数据,需要成百万次调用map和reduc ...
- [大牛翻译系列]Hadoop(11)MapReduce 性能调优:诊断一般性能瓶颈
6.2.4 任务一般性能问题 这部分将介绍那些对map和reduce任务都有影响的性能问题. 技术37 作业竞争和调度器限制 即便map任务和reduce任务都进行了调优,但整个作业仍然会因为环境原因 ...
- MapReduce性能调优记录
MapReduce原理 要知道怎么对MapReduce作业进行调优前提条件是需要对Map-Reduce的过程了然于胸. Map-Reduce运行原理图: Map Side 1.从磁盘读取数据并分片 默 ...
- [大牛翻译系列]Hadoop(14)MapReduce 性能调优:减小数据倾斜的性能损失
6.4.4 减小数据倾斜的性能损失 数据倾斜是数据中的常见情况.数据中不可避免地会出现离群值(outlier),并导致数据倾斜.这些离群值会显著地拖慢MapReduce的执行.常见的数据倾斜有以下几类 ...
- [大牛翻译系列]Hadoop(12)MapReduce 性能调优:诊断硬件性能瓶颈
6.2.5 硬件性能问题 尽管单独的硬件的MTTF(平均失效前时间)都数以年记,然而在集群中就完全不是这么一回事了.整个集群的MTTF就要小得多.这一节要介绍如何确定CPU,内存,磁盘和网络是否过度利 ...
- [大牛翻译系列]Hadoop(9)MapReduce 性能调优:理解性能瓶颈,诊断map性能瓶颈
6.2 诊断性能瓶颈 有的时候作业的执行时间会长得惊人.想靠猜也是很难猜对问题在哪.这一章中将介绍如何界定问题,找到根源.涉及的工具中有的是Hadoop自带的,有的是本书提供的. 系统监控和Hadoo ...
随机推荐
- A Multipart Series on Grids in ASP.NET MVC
A Multipart Series on Grids in ASP.NET MVC Displaying a grid of data is one of the most common tasks ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- [转]epoll技术
在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是epoll. 相比于select,epoll最大的好处在于它不会随着监听fd数目 ...
- 《算法导论》习题解答 Chapter 22.1-3(转置图)
一.邻接表实现 思路:一边遍历,一边倒置边,并添加到新的图中 邻接表实现伪代码: for each u 属于 Vertex for v 属于 Adj[u] Adj1[v].insert(u); 复杂度 ...
- (转)WIN7更改用户名访问共享文件夹
原文地址: http://ryy8013.blog.163.com/blog/static/71729589201210610533778/ 一直以来,windows7客户端访问windows ser ...
- java 动态代理范例 InvocationHandler与Proxy
java 动态代理范例 InvocationHandler与Proxy,拦截与代理 java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxy ...
- VMware系统运维(十)部署虚拟化桌面 Horizon View 5.2 Connection Server安装
部署桌面虚拟化,首先得安装连接服务器,下面我们开始安装Connection Server. 1.下载并安装以下软件,提示:只能在Win2008R2上安装,Win2012R2无法安装. 2.双击打开程序 ...
- 初识 Asp.Net内置对象之Session对象
Session对象 Session对象用于存储在多个页面调用之间特定用户的信息.Session对象只针对单一网站使用者,不同的客户端无法相互访问.Session对象中止联机机器离现时,,也就是当网站使 ...
- C#之使用随机数
1.C#自带随机数函数 using System; System.Random ran = new System.Random();int n = ran.Next(100, 1000);//产生10 ...