前言

使用Hadoop进行离线分析或者数据挖掘的project师,常常会须要对Hadoop集群或者mapreduce作业进行性能调优。

或许你知道通过浏览器訪问http://master:18088/conf来查看配置信息。例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

但是当Linuxproject师们仅仅面对命令行时,怎样查看呢?并且假设运维project师依据集群状况及运行历史使用shell、Python、ruby等脚本写些运维代码,甚至动态调整集群參数时,该怎么办呢?性能调优的前提是须要能准确知道眼下针对Hadoop集群或者mapreduce作业配置的參数。在MySQL中能够通过下面命令查询參数值:

SHOW VARIABLES LIKE 'some_parameter'

也能够使用下面命令查询參数值:

SELECT @@session.some_parameter
SELECT @@global.some_parameter

或者直接查询information_schema.GLOBAL_VARIABLES得到參数值。

可惜的是Hadoop没有提供相似的方式,这对于在Linux系统下查看參数进而改动參数添加了成本和负担。

虽然我们能够

本文将针对这一需求,基于Hadoop开发一个简单有用的工具查询查看各种參数。

准备工作

首先在Hadoop集群的Master节点的个人文件夹下创建workspace文件夹用于存储开发的Hadoop应用代码,命令例如以下:

mkdir workspace

进入workspace文件夹,開始编辑HadoopConfDisplay.java代码:


为便于大家使用。我把代码都列出来,这事实上也是借鉴了网上别人的一些内容:

import java.util.Map.Entry;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.util.*; public class HadoopConfDisplay extends Configured implements Tool { static {
Configuration.addDefaultResource("core-site.xml");
Configuration.addDefaultResource("hdfs-site.xml");
Configuration.addDefaultResource("mapred-site.xml");
Configuration.addDefaultResource("yarn-site.xml");
} @Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
for (Entry<String, String> entry: conf) {
System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
}
return 0;
} public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new HadoopConfDisplay(), args);
System.exit(exitCode);
}
}

在Hadoop的根文件夹下创建myclass,此文件夹用于存储个人开发的Hadoop应用代码编译后的class或者jar包。我本地的文件夹为/home/jiaan.gja/install/hadoop-2.6.0/myclass/

因为HadoopConfDisplay中使用了hadoop-common-2.6.0.jar中的类。所以编译HadoopConfDisplay.java时须要指定classpath。同一时候将编译后的class输出到/home/jiaan.gja/install/hadoop-2.6.0/myclass/文件夹下。运行命令例如以下:

进入myclass文件夹,将编译好的HadoopConfDisplay的class打到jar包里:

jar cvf mytest.jar *

运行步骤例如以下:

成果验证

经过以上准备。终于我们生成了mytest.jar包文件。如今到了验证输出Hadoop配置參数的时候。

输入下面命令:

hadoop jar mytest.jar HadoopConfDisplay

输出结果例如以下图:

因为參数的确非常多,这里仅仅展示了当中的一部分信息。

这里显示的信息虽然非常多,但是会发现非常多參数并没有包含进来。比方:

mapreduce.job.ubertask.enable

mapreduce.job.ubertask.maxreduces

mapreduce.job.ubertask.maxmaps

完好

    还记得本文刚開始说的通过web界面查看Hadoop集群參数的内容吗?我在我个人搭建的集群(有关集群的搭建能够參照《Linux下Hadoop2.6.0集群环境的搭建》)上訪问http://master:18088/conf页面时,能够找到以上缺失的參数例如以下所看到的:

<configuration>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>false</value>
<source>mapred-default.xml</source>
</property>
<!-- 省略其他參数属性 -->
<property>
<name>mapreduce.job.ubertask.maxreduces</name>
<value>1</value>
<source>mapred-default.xml</source>
</property>
<!-- 省略其他參数属性 -->
<property>
<name>mapreduce.job.ubertask.maxmaps</name>
<value>9</value>
<source>mapred-default.xml</source>
</property>
<!-- 省略其他參数属性 -->
</configuration>

从以上内容我们能够看见缺失的參数都配置在mapred-default.xml中,而我之前编写的HadoopConfDisplay类的代码中并未包含此配置。此外。未包含进来的配置文件还有yarn-default.xml、core-default.xml(说明Hadoop參数默认是从*-default.xml的几个文件里读取的)。

最后我们将这些内容也编辑进去,代码例如以下:

import java.util.Map.Entry;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.util.*; public class HadoopConfDisplay extends Configured implements Tool { static {
Configuration.addDefaultResource("core-default.xml");
Configuration.addDefaultResource("yarn-default.xml");
Configuration.addDefaultResource("mapred-default.xml");
Configuration.addDefaultResource("core-site.xml");
Configuration.addDefaultResource("hdfs-site.xml");
Configuration.addDefaultResource("mapred-site.xml");
Configuration.addDefaultResource("yarn-site.xml");
} @Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
for (Entry<String, String> entry: conf) {
System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
}
return 0;
} public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new HadoopConfDisplay(), args);
System.exit(exitCode);
}
}

最后我们依照之前的方式编译打包为mytest.jar。再运行命令验证的结果例如以下图所看到的:

之前缺失的參数都出来了,呵呵!

这下大家能够愉快的进行性能调优了。

后记:个人总结整理的《深入理解Spark:核心思想与源代码分析》一书如今已经正式出版上市。眼下京东、当当、天猫等站点均有销售,欢迎感兴趣的同学购买。

京东(现有满150减50活动)):http://item.jd.com/11846120.html 

当当:http://product.dangdang.com/23838168.html 

Hadoop2.6.0配置參数查看小工具的更多相关文章

  1. 在resin配置參数实现JConsole远程监控JVM

    在Resin配置參数实现JConsole远程监控JVM 在Resin中配置中配置下列參数,就能够是实现了! <jvm-arg>-Dcom.sun.management.jmxremote& ...

  2. Hadoop2.6.0配置参数查看小工具

    前言 使用Hadoop进行离线分析或者数据挖掘的工程师,经常会需要对Hadoop集群或者mapreduce作业进行性能调优.也许你知道通过浏览器访问http://master:18088/conf来查 ...

  3. C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具

    --首发于博客园, 转载请保留此链接  博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSS ...

  4. CloudStack全局配置參数

    參数 描写叙述 类型 默认值 account.cleanup.interval 清除用户账户所须要等待的时间(秒) 整数 86400 agent.lb.enabled If agent load ba ...

  5. AFNetworking 3.0携带參数上传文件Demo

    一.服务端代码: 服务端是java用国产nutz搞的,实际mvc框架都大同小异.就是提交文件的同一时候还带了个表单參数 @AdaptBy(type=UploadAdaptor.class, args= ...

  6. 配置JVM内存 查看内存工具

    一.配置JVM内存 1.配置JVM内存的參数有四个: -XmxJavaHeap最大值.默认值为物理内存的1/4.最佳设值应该视物理内存大小及计算机内其它内存开销而定. -XmsJavaHeap初始值, ...

  7. PHP Log时时查看小工具

    以前Log都是打印在一个文档中,然后打开文件夹,最后打开文档查看里面的内容,每次打开文件夹感觉很烦. 前些日子看到同事开发.NET的时候,用他自己的一个小工具能够时时查看到Log的内容,非常方便,所以 ...

  8. hibernate.cfg.xml文件的配置模板和不同数据库的配置參数

    (1)hibernate.cfg.xml文件的配置模板 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

  9. 无线路由器硬件配置參数 NetGear篇

    NetGear     WNDR4500(号称地球上最强的无线路由器)    450Mbps+450Mbps          京东¥1399 0MHz.配备了128MB的内存和128MB的闪存,再以 ...

随机推荐

  1. Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别

    经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> ...

  2. MRv2 工作机制 、 公平调度器、MR压缩、边数据

    对于节点数超过 4000 的大型集群,前一节描述的 MapReduce 系统开始面临着扩展的瓶颈. 2010 年 Yahoo 的团队开始设计下一代的 MapReduce. (Yet Another R ...

  3. linux svn命令具体解释

    检測是否安装svn:svnserve --version svn服务的关闭:killall svnserve 创建svn库:svnadmin create /opt/svn/repos 配置自己主动启 ...

  4. HDU 1023

    卡特兰数.把进栈看成是+1,出栈看成是-1,任何时候部分和都有a1+a2+....ak>=0.求这样的数列的个数.这明显是卡特兰数的一个解释嘛.在<组合数学>这本书就有这样的原本的证 ...

  5. MapReduce(十六): 写数据到HDFS的源代码分析

    1)   LineRecordWriter负责把Key,Value的形式把数据写入到DFSOutputStream watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  6. hdoj 2222 Keywords Search 【AC自己主动机 入门题】 【求目标串中出现了几个模式串】

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  7. sql server2008对字符串日期字段分区

    近期对公司产品的日志数据库做了一个数据分区,数据库使用的是sql server 2008,这里给大家提供一个參考. 须要特别说明的是,非常多网上的样例分区字段都使用的是时间类型的.而这里因为时间字段原 ...

  8. Python入门机器学习

    如何通过Python入门机器学习 我们都知道机器学习是一门综合性极强的研究课题,对数学知识要求很高.因此,对于非学术研究专业的程序员,如果希望能入门机器学习,最好的方向还是从实践触发. 我了解到Pyt ...

  9. 22.boost图模板

    //#pragma warning(disable : 4819) #include <boost/config.hpp> #include <iostream> // for ...

  10. vmware workstation pro 14 虚拟机无法开启、黑屏的解决方案汇总

    方案1:卸载鲁大师,重启. 方案2:管理员命令行,输入netsh winsock reset,重启. 方案3:360安全管家修复LSP,重启. 方案4:卸载14.0,安装12.0,手动导入虚拟机.