`
duming115
  • 浏览: 114392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop 下的debug

阅读更多
2011.12.20
1. hadoop 集群环境中对namenode,datanode,jobtracker,tasktracker的监控甚至是debug.
  要修改hadoop-env.sh文件:

export HADOOP_TASKTRACKER_OPTS=" -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.port=9051 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9052 "

export HADOOP_TASKTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_TASKTRACKER_OPTS"

这样可以通过 jconsole远程连接 tasktracker_server_ip:9051 查看jvm的运行状态,包括线程,堆栈,运行参数等.
可以通过Eclipse Remote debug 连接tasktracker_server_ip:9052,打断点来跟踪TaskTracker的程序运行步骤.

2. 当设置 mapred.job.reuse.jvm.num.tasks 设置为-1时,只有属于同一个job的多个map(分配给一台同样的服务器)才会在同一个jvm中运行,对于属于同一个job的map,reduce还未知.

3. 对于map及reduce任务,都是由TaskController(默认为DefaultTaskController)生成一个taskjvm.sh 文件,然后由java的Process类来执行,通过process.waitFor()来返回exitCode,如果exitCode==0说明进程正常结束,如果返回非0,说明进程非正常退出,在taskjvm.sh可以看到所有的运行参数和变量(可以通过grep tasktracker.log日志找到),通过查看task日志来分析原因,每个task的日志在 ${hadoop.log.dir}/userlogs/${job_id}/${task_id}/ 目录下,有stderr 错误输出,stdout 标准输出,syslog 运行日志,log.index 前面三个文件的数据大小.

4. 如果jvm设置为重用,对于一个job的debug可以通过设置属性来对job进行jmx和debug
<property>
<name>mapred.map.child.java.opts</name>
<value>-Xmx512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.port=21000 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=22000 </value>
</property>

<property>
<name>mapred.reduce.child.java.opts</name>
<value>-Xmx512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.port=10011 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10012 </value>
</property>

2012.01.19
  1. hadoop -D参数的设置位置:
hadoop  jar hbase-json-test.jar -Dmapred.output.compress=true -Dmapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec /maxthon/mac_export/20120115/ duming/mac_hfile/20120121/

2012.05.11
  1. hadoop distcp
hadoop distcp -Dmapred.map.child.java.opts=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=22000 " -skipcrccheck -update -m 1 hftp://namenode-bj.hadoop.maxthon.cn:50070/user/yangfeng/tttt.txt /user/hadoop/duming/
  不版本间的数据迁移要注意:
  a. source 用hftp协议.
  b. 迁移到的hadoop集群版本比较高, 最好设置-skipcrccheck选项也-update选项, skipcrccheck忽略FileChecksum校验, 因为版本的升级可能带来Checksum值不一样, cdh4与cdh3就是这样.

2012.06.01
1. load数据到现有的partition 下, 报错误, 但最终还是能将数据转移过去, 最终原因是没有使用use views;

2012.06.09
org.apache.hadoop.hive.ql.parse.SemanticException: org.apache.hadoop.hive.ql.metadata.HiveException: Invalid partition for table chukwa
at org.apache.hadoop.hive.ql.optimizer.pcr.PcrOpProcFactory$FilterPCR.process(PcrOpProcFactory.java:122)
at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:89)
at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:88)
at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(DefaultGraphWalker.java:125)
at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:102)
at org.apache.hadoop.hive.ql.optimizer.pcr.PartitionConditionRemover.transform(PartitionConditionRemover.java:78)
at org.apache.hadoop.hive.ql.optimizer.Optimizer.optimize(Optimizer.java:87)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:7306)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:255)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:212)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:554)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:200)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: Invalid partition for table chukwa
at org.apache.hadoop.hive.ql.metadata.Hive.getPartitionsByNames(Hive.java:1696)
at org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner.pruneBySequentialScan(PartitionPruner.java:376)
at org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner.prune(PartitionPruner.java:233)
at org.apache.hadoop.hive.ql.optimizer.pcr.PcrOpProcFactory$FilterPCR.process(PcrOpProcFactory.java:112)
... 21 more
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Invalid partition for table chukwa
at org.apache.hadoop.hive.ql.metadata.Partition.initialize(Partition.java:207)
at org.apache.hadoop.hive.ql.metadata.Partition.<init>(Partition.java:106)
at org.apache.hadoop.hive.ql.metadata.Hive.getPartitionsByNames(Hive.java:1691)
... 24 more
Caused by: MetaException(message:Invalid partition key & values)
at org.apache.hadoop.hive.metastore.Warehouse.makePartName(Warehouse.java:407)
at org.apache.hadoop.hive.metastore.Warehouse.makePartName(Warehouse.java:392)
at org.apache.hadoop.hive.ql.metadata.Partition.initialize(Partition.java:190)
... 26 more
是因为数据库 PARTITION_KEY_VALS中对应某个PART_ID的分区数据少一个logType记录,
hive存储的meta信息位于数据库中, 类为ObjectStore,
2012.07.03
  hadoop  jar  hbase-promote-0.0.1-SNAPSHOT.jar com.maxthon.hbase.promote.etl.EtlPromoteDriver -Dmapred.map.child.java.opts="-Xdebug -Xrunjdwp:transport=dt_socket,address=9090,server=y,suspend=y,address=22000 " /hive/warehouse/maxthon.db/chukwa/logtype=com_ios.g.maxthon.com/logday=20120630/loghour=00 /user/yangfeng/promote_ios/01

2012.07.04
mapred.min.split.size MxCombineFileInputFormatShim.getSplits
mapred.min.split.size.per.node MxCombineFileInputFormatShim.getSplits
mapred.max.split.size  256000000
mapreduce.input.fileinputformat.split.minsize.per.node  1
mapreduce.input.fileinputformat.split.maxsize  256000000  每个block块的大小 MxCombineFileInputFormatNew.getSplits, MxCombineFileInputFormatNew.OneFileInfo判断

2012.07.10
  1. 通过-D更改参数, main方法调用, 参考DistCp
    JobConf job = new JobConf(DistCp.class);
    DistCp distcp = new DistCp(job);
    int res = ToolRunner.run(distcp, args);
分享到:
评论
1 楼 Gauss.Deng 2012-07-14  
这个很好。

相关推荐

    hadoop lzo debug jar

    hadoop用于解析lzo的包,这个问题在使用presto的时候需要将此包添加到presto的工具包中,以支持lzo格式文件的查询。

    如何在Windows下的eclipse调试Hadoop2.2.0分布式集群

    在Windows环境下,使用Eclipse进行Hadoop 2.2.0分布式集群的调试是一项重要的技能,这可以帮助开发者更好地理解和优化Hadoop程序。以下是一些关键的知识点,将指导你完成这个过程。 首先,Hadoop是一个开源的分布式...

    hadoop winutils hadoop.dll

    然后,通过配置Eclipse的Run/Debug Configuration,设置正确的Java运行参数,如HADOOP_HOME指向Hadoop的安装目录。 在使用winutils.exe和hadoop.dll时,可能会遇到一些常见问题,如找不到相关文件的错误、权限问题...

    Hadoop plugin for eclipse

    2. **hadoop.dll**: 这是Windows系统下的Hadoop动态链接库文件,用于Windows环境下Hadoop本地库的调用。在Windows上运行Hadoop时,这个文件是必需的,它实现了某些系统级别的功能,如文件系统的操作。 3. **...

    hbase和hadoop数据块损坏处理

    * hdfs debug recoverLease -path 文件位置 -retries 重试次数:修复指定路径的 HDFS 文件 六、自动修复 HDFS HDFS 自动修复可以通过 directoryscan 和 blockreport 机制来实现。当数据块损坏后,DN 节点会执行 ...

    hadoop mapreduce helloworld 能调试

    3. **使用 DebugFlag**:在提交作业时,可以设置 `-Dmapred.map.task.debug.script` 和 `-Dmapred.reduce.task.debug.script` 参数,使得 Map 或 Reduce 任务在完成时生成一个脚本,用于进一步分析。 4. **使用可视...

    hadoop-2.6.0版本所需插件.zip

    6. **运行和调试**:写好代码后,右键点击项目,选择"Hadoop" &gt; "Run on Cluster"或"Debug on Cluster",Eclipse会自动将你的程序提交到Hadoop集群上运行。你可以在"Console"视图中查看运行日志,也可以在...

    hadoop2x-eclipse-plugin

    2. 调试MapReduce任务:通过"Debug As" -&gt; "Hadoop Job",Eclipse提供了调试功能,可以在Mapper和Reducer中设置断点,逐步执行代码,查看变量状态,帮助找出问题所在。 六、优化与维护 Hadoop2x-eclipse-plugin还...

    eclipse连接hadoop插件2.6.0/5 2.7.3

    - 运行和调试:通过Eclipse的Run或Debug配置,可以直接提交MapReduce任务到Hadoop集群,并实时查看日志和结果。 5. **插件功能扩展**: 一些插件还可能包含其他有用的功能,如HDFS浏览器,用于可视化查看Hadoop...

    windows-hadoop-2.6.4-bin

    在Windows环境下搭建Eclipse与Hadoop 2.6.4的开发环境是一项具有挑战性的任务,因为Hadoop最初是为Linux设计的,但在Windows上运行则需要额外的配置步骤。以下是一些关键知识点,帮助你理解和解决在这个过程中可能...

    Eclipse下搭建Hadoop2.7.3开发环境

    将下载的`hadoop-eclipse-plugin-2.7.1.jar`文件复制到Eclipse的`plugins`目录下。重启Eclipse后,插件会被自动加载。如果在Eclipse的“帮助”菜单中看到“Hadoop Map/Reduce视图”,则表示插件安装成功。 2. **...

    hadoop2x-eclipse-plugin-master

    《Hadoop2x-Eclipse-Plugin:掌握大数据开发利器》 在大数据技术领域,Hadoop作为开源分布式计算框架,已经成为处理海量数据的核心工具。而Eclipse作为Java开发者的常用集成开发环境(IDE),其功能强大,深受...

    eclipse+maven+hadoop+文件增删改查

    5. **项目结构**:在Eclipse中,你需要创建一个Maven项目,并在`src/main/java`目录下编写Hadoop程序。在`src/main/resources`下放置配置文件,如Hadoop的配置XML。`pom.xml`文件中应包含Hadoop相关的依赖,如`...

    Hadoop IDEA 本地调试MR 包含文档和所有的资源

    在IDEA中,你可以创建一个新的Run/Debug Configuration,选择“Application”类型,设置Main Class为你的Job类,添加VM options来模拟Hadoop环境,例如`-Dmapreduce.jobtracker.address=localhost:8021`。...

    hadoop模块编译与日志调试.doc|hadoop模块编译与日志调试.doc

    对于`hadoop-common`模块,可以进入`/usr/local/hadoop-2.10.0-src/hadoop-common-project/hadoop-common/target/`目录,将生成的`hadoop-common-2.10.0.jar`替换到Hadoop安装目录的`share/hadoop/common/`下。...

    Hadoop环境搭建 附件.rar

    此外,确保Hadoop的JVM允许远程调试,如在`mapred-site.xml`中添加`&lt;property&gt;&lt;name&gt;mapreduce.map.debug.port&lt;/name&gt;&lt;value&gt;5005&lt;/value&gt;&lt;/property&gt;`,指定调试端口。 12. **测试远程调试**: 在你的IDE(如...

    hadoop-0.20.2-cdh3u6

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的出现主要解决了大数据处理的难题。"hadoop-0.20.2-cdh3u6"是Cloudera公司基于Hadoop的一个发行版本,名为CDH(Cloudera Distribution Including Apache ...

    eclipse3.6+hadoop-0.21.0插件配置使用

    这个插件使得开发人员能在熟悉的IDE环境下进行Hadoop编程,提高了开发效率,减少了在命令行操作的繁琐过程。然而,要注意的是,随着Hadoop的发展,新版本的Hadoop可能不再兼容旧版插件,因此在实际开发中,应尽量...

    win7安装hadoop及eclipse调试mapreduce的配置方法

    【标题】: "win7环境下Hadoop安装及Eclipse调试MapReduce配置教程" 【描述】: "本教程详细讲解在Windows 7操作系统中如何安装Hadoop,并配置Eclipse进行MapReduce程序的调试,涵盖可能出现的问题及其解决方案。" ...

    Hadoop on redhat enterprise 5.4部署安装手记

    1. 在`/mnt`目录下创建`cdrom`目录,然后挂载光驱到该目录,以便安装中文包。 2. 使用`mount -t auto /dev/cdrom /mnt/cdrom`命令挂载光驱,注意光驱可能是只读的。 3. 按照指定顺序通过`rpm -ivh`命令安装中文包。 ...

Global site tag (gtag.js) - Google Analytics