liusheng / liusheng.github.io

Liusheng's blog
http://liusheng.github.io
5 stars 1 forks source link

【笔记】Hadoop IntelliJ IDEA 应用调试方法 #29

Open liusheng opened 4 years ago

liusheng commented 4 years ago

在做Hadoop性能调优的过程中,不可避免的会涉及到Hadoop mapreduce程序的断点调试,这里做一个笔记备忘。 通常情况下,Hadoop 的mapreduce应用调试主要由两种:本地调试和远程调试,本地调试是不起Hadoop集群,使用Standalone的方式执行Hadoop的应用,再加断点调试,这种方法最简单。还有一种就是通过本地IDE远程连接到服务器上的Hadoop集群调试。这里用我现在使用的IDEA来调试。

1. 本地调试

首先打开Hadoop代码项目 Run->Edit Configurations中增加如下配置 image image 接下来点击Run->Run xxx或者Debug xxx就可以运行和调试了。

image

对于TeraSort,这里需要注意的是,输入和输出需要用file:\\\打头来指定使用本地文件系统作为输入和输出。

注意: 这里因为要指定hadoop的example jar包,所以,需要hadoop编译好,可以在hadoop官方网站上下载,但是官方网站上只有发布版本的Hadoop 包,可能存在和代码不一致的情况,调试起来可能会有问题,也可以在windows上编译,但是windows上编译比较麻烦,会出现各种各样的问题,我这里取了个巧,在我的Ubuntu环境上编译好,再讲整个Hadoop目录拷贝到本机打开的。

补充: 也可以使用这种方式: image

2. 远程调试

在Hadoop集群上执行的MapReduce程序会首先通过client端将应用提交到YARN的resource manager,然后YARN调度资源后会起一个子进程去执行MapReduce应用,所以具体调试的时候分为Client端调试和Server端调试。下面以Hadoop自带的TeraGen和Terasort测试程序为例。