eclipse下开发hadoop程序配置(二)

   1、安装hadoop eclipse插件,如果eclipse版本在3.5以上,需要重新编译eclipse插件(参见window环境,eclipse下开发hadoop程序配置(一)帖子)。
       2、配置hadoop插件,设定相应属性(在第五周视频里有具体说明,这里我贴一些图再说明一下):
             1)、安装后如下图:
                        
             2)、在Map/Reduce Locations配置相关信息,主要配置dfs,job tracker相关信息,其中host配置为hadoop namenode节点ip或机器名,如下图:
                        
             3)、在Advanced parameters做相关设置,主要是用户名(这个和集群节点中装linux的用户名一致,如hadoop用户)和hadoop.tmp.dir(这个和core-site.xml中配置的一样),如下图:
                      eclipse.plug-in.user.name配置
                        
                      hadoop.job.ugi配置,注[用户名],Tardis,必须是这种格式
                        
                      hadoop.tmp.dir配置,此参数涉及到许多目录的配置,如果core-site.xml中配置了请配置,如果没有设置,为默认值/tmp/hadoop-${user.name}
                        
             4)、配置插件的hadoop installation directory,这个属性说明插件创建map reduce 工程时用到的hadoop jar包,与连接的hadoop集群目录无关,如下图:
                        
       3、经过前2个步骤设定,eclipse已经可以访问dfs目录了并可以操作目录上传文件等,但是如果运行尝试运行hadoop mapreduce程序会报错,如下图:
             1)、DFS Locations下可以操作dfs文件系统
                        
             2)、此时运行hadoop mapreduce,如Test_1程序,报错
                        

       4、前面错误表示无法创建chmod进程,window下没有chmod,所以要安装cygwin模拟linux环境,请各位童鞋下载cygwin一路next安装,然后在window的环境变量下PATH下设定cygwin bin目录,最后要重启eclipse,如下图:
             1)、cygwin安装参照  http://www.cygwin.cn/site/install/
             2)、设定环境变量,首先设定CYGWIN_HOME到cygwin安装目录,然后Path下设定%CYGWIN_HOME%/bin;
                        
             3)、重启eclipse后再次运行Test_1程序,继续报错,如下错误:
                      12/10/13 22:31:19 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
                      12/10/13 22:31:20 WARN mapred.JobClient: No job jar file set.  User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
                      12/10/13 22:31:20 INFO input.FileInputFormat: Total input paths to process : 2
                      12/10/13 22:31:21 INFO mapred.JobClient: Running job: job_local_0001
                      12/10/13 22:31:21 INFO input.FileInputFormat: Total input paths to process : 2
                      12/10/13 22:31:21 WARN mapred.LocalJobRunner: job_local_0001
                       org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=xuxuan-                      think\xuxuan, access=WRITE, inode="xuxuan":xuxuan:supergroup:rwxr-xr-x
                       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                       at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
                       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
                       at java.lang.reflect.Constructor.newInstance(Unknown Source)
                       at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:96)
                       at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:58)
                       at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:914)
                       at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:262)
                       at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1120)
                       at org.apache.hadoop.mapred.FileOutputCommitter.setupJob(FileOutputCommitter.java:49)
                       at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:160)
                      Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=xuxuan-                      think\xuxuan, access=WRITE, inode="xuxuan":xuxuan:supergroup:rwxr-xr-x
                       at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.check(PermissionChecker.java:176)
                       at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.check(PermissionChecker.java:157)
                       at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.checkPermission(PermissionChecker.java:105)
                       at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:4514)
                       at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:4484)
                       at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInternal(FSNamesystem.java:1766)
                       at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:1735)
                       at org.apache.hadoop.hdfs.server.namenode.NameNode.mkdirs(NameNode.java:542)
                       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.ipc.RPC$Server.call(RPC.java:508)
                       at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
                       at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
                       at java.security.AccessController.doPrivileged(Native Method)
                       at javax.security.auth.Subject.doAs(Subject.java:396)
                       at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)
                       at org.apache.hadoop.ipc.Client.call(Client.java:740)
                       at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)
                       at $Proxy0.mkdirs(Unknown Source)
                       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                       at java.lang.reflect.Method.invoke(Unknown Source)
                       at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
                       at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
                       at $Proxy0.mkdirs(Unknown Source)
                       at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:912)
                       ... 4 more
                      12/10/13 22:31:22 INFO mapred.JobClient:  map 0% reduce 0%
                      任务名称:Test_1
                      12/10/13 22:31:22 INFO mapred.JobClient: Job complete: job_local_0001
                      12/10/13 22:31:22 INFO mapred.JobClient: Counters: 0
                      任务成功:否
                      输入行数:0
                      输出行数:0
                      跳过的行:0
                      任务开始:2012-10-13 22:31:19
                      任务结束:2012-10-13 22:31:22
                      任务耗时:0.053066667 分钟

       5、前面错误说明cygwin下的用户名与linux hadoop namenode机器上的用户名不一致,可以在hdfs-site.xml做如下设置:
                        <property> 
                            <name>dfs.permissions</name> 
                            <value>false</value> 
                        </property>
                         这样在操作hdfs是忽略权限,注意生产环境处于安全考虑不要这么搞!
                        如果大家能将cygwin的用户名和hadoop namenode的用户名一致,还请发帖告诉大家怎么设置!

       6、重新设置hdfs-site.xml配置文件后,重启集群,重启eclipse,就可以运行map reduce程序了,如下图:
             1)、运行结果如下:
                        
             2)、mapreduce程序创建的output目录,所属用户名是window机器名,和第5点说明的一样,不影响调试程序,但生产环境请不要这样设置
                        

       经过以上6个步骤,就可以完成在window下开发调试hadoop程序了,和我一样环境的童鞋不妨可以试一下!

       7、在eclipse中断点调试map reduce程序,如图:
               

21.png (122.4 KB, 下载次数: 0)

下载附件  保存到相册

2012-10-14 22:04 上传



               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值