Eclips中直接调试MP程序中需要注意的问题
2014-03-17 20:57
190 查看
下面是我在Eclipse中调试第一个MapReduce程序时遇到的问题及解决方法,这些方法都是在参考其他网友解决类似问题的基础上结合自己的理解与实验总结出来的,记录在这里希望能对其他人有所帮助。
(1)在Eclipse中建立DFS Locations的时侯,要注意Map/Reduce
Master是指MapReduce Job Tracker,DFS Master是指Namenode的配置,要跟Core-site中的配置一致。
(2)在MP程序的Main方法(或者Run方法)中,需要声明配置Configuration对象,通过Configuration对象进行参数的设置。在参数设置时,语句conf.set("mapred.job.tracker","192.168.100.1:54311")用来指明Hadoop集群的JobTracker服务器,非常重要,一定不能省略。不要因为在DFSLocation中已经定义了Map/Reduce
Master就不写它,二者必须同时存在。前者用来建立eclips与Hadoop的连接,后者用来建立程序与Hadoop的连接。
(3)同上添加语句conf.set("fs.default.name","hdfs://192.168.100.1:8020"),用来指明程序运行的namenode,如果不对此加以指明,则Eclipse自动使用Project所在的本地文件夹。
(4)通过String[] ioArgs=new
String[]{"/user/hadoop/dup_in","/user/hadoop/dup_out"};
String[] otherArgs =newGenericOptionsParser(conf,ioArgs).getRemainingArgs();指明Hadoop集群上数据所在目录、输出结果所在目录,并且要注意的是输出目录不能存在,如果已经存在,必须删除。
(5)运行MP程序时,经常会报unkown host ‘h-master-01’错误(h-master-01为Namenode服务器的名称)。以管理员模式打开记事本,找到并打开c:\winodws\system32\drivers\hosts文件,在最后加上主机名与地址的解析关系:h-master-01
192.168.100.1,其中192.168.100.1就是Hadoop集群Namenode服务器的IP地址。
(6)运行程序的时候,如果出现AccessControlExceptioned:PermissionDenied:User=hadoop,……,在程序中,通过Conf.set()设置DFS.permission属性不起作用,需要在hdfs-site.xml添加属于对DFS.permission进行设置。
(7)程序设计完成后,在eclipse中,通过菜单功能File-Export,把项目打包成JAR文件,然后在程序中,通过conf.set("mapred.jar","d:/exam/hadoop/mp/wordcount.jar");指定打包文件在本地(运行Eclipse开发环境的机器)的标识符。如果不这样做,在RunAs
Hadoop时,会报如下错误:
14/01/08 17:40:06 WARNmapred.JobClient: No jobjar file set. User classes may not be found. See JobConf(Class)
orJobConf#setJar(String).
14/01/08 17:40:06 INFOinput.FileInputFormat:Total input paths to process : 2
14/01/08 17:40:06 WARNutil.NativeCodeLoader:Unable to load native-hadoop library for yourplatform... using builtin-javaclasses
where applicable
14/01/08 17:40:06 WARN snappy.LoadSnappy:Snappynative library not loaded
14/01/08 17:40:07 INFOmapred.JobClient: Runningjob: job_201401081346_0026
14/01/08 17:40:08INFOmapred.JobClient: map 0% reduce 0%
14/01/08 17:40:16 INFOmapred.JobClient: Task Id: attempt_201401081346_0026_m_000000_0, Status :FAILED
java.lang.RuntimeException:java.lang.ClassNotFoundException:
wordcount_idh$MapClass
atorg.apache.hadoop.conf.Configuration.getClass(Configuration.java:944)
atorg.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:200)
(1)在Eclipse中建立DFS Locations的时侯,要注意Map/Reduce
Master是指MapReduce Job Tracker,DFS Master是指Namenode的配置,要跟Core-site中的配置一致。
(2)在MP程序的Main方法(或者Run方法)中,需要声明配置Configuration对象,通过Configuration对象进行参数的设置。在参数设置时,语句conf.set("mapred.job.tracker","192.168.100.1:54311")用来指明Hadoop集群的JobTracker服务器,非常重要,一定不能省略。不要因为在DFSLocation中已经定义了Map/Reduce
Master就不写它,二者必须同时存在。前者用来建立eclips与Hadoop的连接,后者用来建立程序与Hadoop的连接。
(3)同上添加语句conf.set("fs.default.name","hdfs://192.168.100.1:8020"),用来指明程序运行的namenode,如果不对此加以指明,则Eclipse自动使用Project所在的本地文件夹。
(4)通过String[] ioArgs=new
String[]{"/user/hadoop/dup_in","/user/hadoop/dup_out"};
String[] otherArgs =newGenericOptionsParser(conf,ioArgs).getRemainingArgs();指明Hadoop集群上数据所在目录、输出结果所在目录,并且要注意的是输出目录不能存在,如果已经存在,必须删除。
(5)运行MP程序时,经常会报unkown host ‘h-master-01’错误(h-master-01为Namenode服务器的名称)。以管理员模式打开记事本,找到并打开c:\winodws\system32\drivers\hosts文件,在最后加上主机名与地址的解析关系:h-master-01
192.168.100.1,其中192.168.100.1就是Hadoop集群Namenode服务器的IP地址。
(6)运行程序的时候,如果出现AccessControlExceptioned:PermissionDenied:User=hadoop,……,在程序中,通过Conf.set()设置DFS.permission属性不起作用,需要在hdfs-site.xml添加属于对DFS.permission进行设置。
(7)程序设计完成后,在eclipse中,通过菜单功能File-Export,把项目打包成JAR文件,然后在程序中,通过conf.set("mapred.jar","d:/exam/hadoop/mp/wordcount.jar");指定打包文件在本地(运行Eclipse开发环境的机器)的标识符。如果不这样做,在RunAs
Hadoop时,会报如下错误:
14/01/08 17:40:06 WARNmapred.JobClient: No jobjar file set. User classes may not be found. See JobConf(Class)
orJobConf#setJar(String).
14/01/08 17:40:06 INFOinput.FileInputFormat:Total input paths to process : 2
14/01/08 17:40:06 WARNutil.NativeCodeLoader:Unable to load native-hadoop library for yourplatform... using builtin-javaclasses
where applicable
14/01/08 17:40:06 WARN snappy.LoadSnappy:Snappynative library not loaded
14/01/08 17:40:07 INFOmapred.JobClient: Runningjob: job_201401081346_0026
14/01/08 17:40:08INFOmapred.JobClient: map 0% reduce 0%
14/01/08 17:40:16 INFOmapred.JobClient: Task Id: attempt_201401081346_0026_m_000000_0, Status :FAILED
java.lang.RuntimeException:java.lang.ClassNotFoundException:
wordcount_idh$MapClass
atorg.apache.hadoop.conf.Configuration.getClass(Configuration.java:944)
atorg.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:200)
相关文章推荐
- 调试使用了函数模块的程序时需要注意的一个小问题
- 调试使用了函数模块的程序时需要注意的一个小问题
- web程序使用Oracle需要注意的问题.
- fl2440裸机调试需要注意的问题
- 专业的程序员需要具备的思考能力:写一个程序需要注意多少细节问题
- mysql通过直接复制数据库文件夹来还原数据时需要注意的问题
- 多线程原理、线程安全函数和多线程程序需要注意的问题
- BDC程序需要注意的问题!(常见问题集合)
- jeecg使用内嵌tomcat进行调试开发时需要注意的问题
- 关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)
- Windows Mobile程序获取google map切片时候需要注意的问题
- vml程序需要注意的问题
- J2EE程序需要注意的问题
- mysql通过直接复制数据库文件夹来还原数据时需要注意的问题
- JAVA别名问题----JAVA程序需要注意的对象引用
- APiCloud真机调试需要注意的几个问题
- 程序竞赛中需要注意的一些小问题2
- c#程序调用c++编写dll需要注意问题
- AT91SAM9263 WINCE 6.0 R2驱动开发-DM9000驱动调试需要注意问题
- Editplus编写java程序需要注意的问题。