[转帖]eclipse 下 hadoop debug 笔记_Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3274 | 回复: 0   主题: [转帖]eclipse 下 hadoop debug 笔记        下一篇 
周逸涵
注册用户
等级:少校
经验:871
发帖:83
精华:0
注册:2013-7-8
状态:离线
发送短消息息给周逸涵 加好友    发送短消息息给周逸涵 发消息
发表于: IP:您无权察看 2013-7-9 10:36:49 | [全部帖] [楼主帖] 楼主

1. 搭建hadoop 伪分布式集群

http://hadoop.apache.org/docs/stable/single_node_setup.html
core-site.xml
[html]view plaincopy

  1. <configuration>  
  2. <property>  
  3.   <name>fs.default.name</name>  
  4.   <value>hdfs://localhost:9000</value>  
  5. </property>  
  6. <property>  
  7.   <name>hadoop.tmp.dir</name>  
  8.   <value>/home/user/data/temp</value>  
  9. </property>  
  10. <property>  
  11.   <name>dfs.name.dir</name>  
  12.   <value>/home/user/data/name</value>  
  13. </property>  
  14. <property>  
  15.   <name>dfs.data.dir</name>  
  16.   <value>/home/user/data/data</value>  
  17. </property>  
  18. <property>  
  19.   <name>dfs.replication</name>  
  20.   <value>1</value>  
  21. </property>  
  22. </configuration>  


注意: 在conf/hadoop-env.sh 中修改JDK路径  export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26 

2.  开启远端监听端口

在bin/hadoop 或 conf/hadoop-env.sh 加入以下内容,一次只能开启一个, 这里ip为10.13.249.132

[plain]view plaincopy

  1. HADOOP_NAMENODE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8788,server=y,suspend=y"  
  2. #HADOOP_SECONDARYNAMENODE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8789,server=y,suspend=y"  
  3. #HADOOP_DATANODE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8790,server=y,suspend=y"  
  4. #HADOOP_BALANCER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8791,server=y,suspend=y"  
  5. #HADOOP_JOBTRACKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8792,server=y,suspend=y"    
  6. #HADOOP_TASKTRACKER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8793,server=y,suspend=y"  



在conf/mapred-site.xml中添加以下配置项, 限制能启动task 的child数为1:

[html]view plaincopy

  1. <configuration>  
  2.   <property>  
  3.     <name>mapred.job.tracker</name>  
  4.     <value>localhost:9001</value>  
  5.   </property>  
  6.   <property>  
  7.     <name>mapred.child.java.opts</name>  
  8.     <value>-agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=y</value>  
  9.   </property>  
  10. </configuration>  



此时开启hadoop,能看到namenode开启监听端口,如图:

北京联动北方科技有限公司

3. eclipse java远程调试

装 eclipse 和 hadoop plugin 

    hadoop plugin 可以从源码编译出来 Hadoop 1.0.3/src/contrib/eclipse-plugin,  或使用聂永哥打包好的 下载地址

可用版本 eclipse3.7 + hadoop-eclipse-plugin-1.0.2 + Hadoop 1.0.3 , 

1) 配置hadoop插件

eclipse perspective -> Map/Reduce
General
Map/Reduce Master Host: localhost , Post: 9001
DFS Master Host: localhost, Post: 9000
User name: user
Advanced


dfs.data.dir, dfs.name.dir, dfs.tmp.dir 等填入 core-site.xml 中的值

mapred.child.java.opts = -Xmx200m -Xdebug -Xrunjdwp:transport=dt_socket,address=8883,server=y,suspend=y


2) eclipse开启远程调试功能,连接到运行hadoop的Ip与端口。如下图所示:

北京联动北方科技有限公司

设置之后,在namenode的main()中设置一个断点,然后点击上图的debug,等待一会儿便能连上hadoop的namenode,这时便能调试hadoop的namenode了,datanode与jobtracker, tesktracker 类似。

3) 调试mapreduce程���

无参数 WordCount.java

[java]view plaincopy

  1. public class WordCount { 
  2.       
  3.        public static class TokenizerMapper 
  4.        extends Mapper<Object, Text, Text, IntWritable>{ 
  5.             
  6.              private final static IntWritable one = new IntWritable(1); 
  7.              private Text word = new Text(); 
  8.             
  9.              public void map(Object key, Text value, Context context 
  10.              ) throws IOException, InterruptedException { 
  11.                    StringTokenizer itr = new StringTokenizer(value.toString()); 
  12.                    while (itr.hasMoreTokens()) { 
  13.                          word.set(itr.nextToken()); 
  14.                          context.write(word, one); 
  15.                    } 
  16.              } 
  17.        } 
  18.       
  19.        public static class IntSumReducer 
  20.        extends Reducer<Text,IntWritable,Text,IntWritable> { 
  21.              private IntWritable result = new IntWritable(); 
  22.             
  23.              public void reduce(Text key, Iterable<IntWritable> values, 
  24.              Context context 
  25.              ) throws IOException, InterruptedException { 
  26.                    int sum = 0; 
  27.                    for (IntWritable val : values) { 
  28.                          sum += val.get(); 
  29.                    } 
  30.                    result.set(sum); 
  31.                    context.write(key, result); 
  32.              } 
  33.        } 
  34.       
  35.        public static void main(String[] args) throws Exception { 
  36.              Configuration conf = new Configuration(); 
  37.             
  38.              Job job = new Job(conf, "word count"); 
  39.              job.setJarByClass(WordCount.class); 
  40.              job.setMapperClass(TokenizerMapper.class); 
  41.              job.setCombinerClass(IntSumReducer.class); 
  42.              job.setReducerClass(IntSumReducer.class); 
  43.              job.setOutputKeyClass(Text.class); 
  44.              job.setOutputValueClass(IntWritable.class); 
  45.             
  46.              FileInputFormat.addInputPath(job, new Path("/wordcount/input")); 
  47.              FileOutputFormat.setOutputPath(job, new Path("/wordcount/out")); 
  48.             
  49.              System.exit(job.waitForCompletion(true) ? 0 : 1); 
  50.        } 



如果有参数, 选择“Run Configurations”,弹出窗口,点击“Arguments”选项卡,在“Program argumetns”处预先输入参数:

hdfs://master:9000/user/root/input2 hdfs://master:9000/user/root/output2


右键,选择“Run on Hadoop”, 就可以运行了.

设置断点(右键 –> Debug As – > Java Application),即可debug.

note1: 每次运行前删除out目录. 

note2: 如果提示hdfs中out目录权限不够,使用hadoop dfs chmod 770 /out 授权( Linux 下 ) .

note3:SafeModeException, 在主节点处,关闭掉安全模式: #bin/hadoop dfsadmin –safemode leave

另外,该插件会在eclipse对应的workspace\.metadata\.plugins\org.apache.hadoop.eclipse下,自动生成jar文件,以及其他文件,包括Haoop的一些具体配置等。

引用

eclipse调试hadoop源代码 http://hi.baidu.com/shenh062326/blog/item/b04a810cb48315f8aa645713.html

Hadoop学习笔记之在Eclipse中远程调试Hadoop http://www.blogjava.net/yongboy/archive/2012/04/26/376486.html

通过eclipse调试MapReduce任务 http://rdc.taobao.com/team/jm/archives/1761




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论