myeclipse配置hadoop开发环境,及遇到问题解决

eclipse版本:eclipse-jee-indigo-SR2-win32

1、安装Hadoop开发插件 hadoop安装包contrib/目录下有个插件hadoop-1.2.1-eclipse-plugin.jar,拷贝到eclipse根目录下/dropins目录下。2、 启动eclipse,打开Perspective:【Window】->【Open Perspective】->【Other…】->【Map/Reduce】->【OK】

3、 打开一个View:【Window】->【Show View】->【Other…】->【MapReduce Tools】->【Map/Reduce Locations】->【OK】

4、 添加Hadoop location:

location name: 我填写的是:amber-hadoop.Map/Reduce Master 这个框里Host:就是jobtracker 所在的集群机器,这里写192.168.1.121Hort:就是jobtracker 的port,这里写的是9001这两个参数就是mapred-site.xml里面mapred.job.tracker里面的ip和portDFS Master 这个框里Host:就是namenode所在的集群机器,这里写192.168.1.121Port:就是namenode的port,这里写9000这两个参数就是core-site.xml里面fs.default.name里面的ip和port(Use M/R master host,这个复选框如果选上,就默认和Map/Reduce Master这个框里的host一样,如果不选择,就可以自己定义输入,这里jobtracker 和namenode在一个机器上,所以是一样的,就勾选上)user name:这个是连接hadoop的用户名,因为我是用grid用户安装的hadoop,而且没建立其他的用户,所以就用grid。 然后点击finish按钮,此时,这个视图中就有多了一条记录。重启myeclipse并重新编辑刚才建立的那个连接记录,现在我们编辑advance parameters tab页(这里要根据hadoop环境conf目录下文件里面配置一致)

(重启编辑advance parameters tab页原因:在新建连接的时候,这个advance paramterstab页面的一些属性会显示不出来,显示不出来也就没法设置,所以必须重启一下eclipse再进来编辑才能看到)这里大部分的属性都已经自动填写上了,其实就是把core-defaulte.xml、hdfs-defaulte.xml、mapred-defaulte.xml里面的一些配置属性展示出来。因为在安装hadoop的时候,其site系列配置文件里有改动,所以这里也要弄成一样的设置。主要关注的有以下属性:fs.defualt.name:这个在General tab页已经设置了mapred.job.tracker:这个在General tab页也设置了dfs.replication:这个这里默认是3,因为我在hdfs-site.xml里面设置成了1,所以这里也要设置成1然后点击finish,然后就连接上了(先要启动sshd服务,启动hadoop进程),连接上的标志如图:

5、新建Map/Reduce Project:【File】->【New】->【Project…】->【Map/Reduce】->【Map/Reduce Project】->【Project name: WordCount】->【Configure Hadoop install directory…】->【Hadoop installation directory: F:\hadoop-1.2.1】->【Apply】->【OK】->【Next】->【Allow output folders for source folders】->【Finish】

6、新建WordCount类:

第一个错误13/11/04 20:42:53 INFO file.FileUtile: Read File :F:\Workspaces\MyEclipse 10\FileTest\src\tf.txt1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890abcdefghijklmnopqrst123456789013/11/04 20:42:53 INFO file.FileUtile: Read Contetn size 130Exception in thread "main" org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create /user/grid/in/hw.txt.Name node is in safe mode.The reported blocks is only 5 but the threshold is 0.9990 and the total blocks 8. Safe mode will be turned off automatically.at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1561)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1527)at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:710)at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:689)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在主节点处,关闭掉安全模式,当然你等待下一些时间等备份复制完毕,这个错误也会消失的#bin/hadoop dfsadmin –safemode leav第二个错误:org.apache.hadoop.security.AccessControlException:Permission denied:user=SEVEN,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。  问题原因:本地用户SEVEN(本机windows用户)想要远程操作hadoop系统,没有权限引起的。 解决办法: a、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。<property><name>dfs.permissions</name><value>false</value><description>If "true", enable permission checking in HDFS.If "false", permission checking is turned off,but all other behavior is unchanged.Switching from one parameter value to the other does not change the mode,owner or group of files or directories.</description></property> b、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。(注意第一次设置的时候可能没有hadoop.job.ugi参数,报错后在去看就有了,或者关闭重启之后。)    c、因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop ,由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限 , 命令如下 :$ hadoop fs -chmod 777我是用直接把windows用户改成grid用户运行成功后的结果如下所示:

第三个错误13/11/04 21:33:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable13/11/04 21:33:34 ERROR security.UserGroupInformation: PriviledgedActionException as:grid cause:java.io.IOException: Failed to set permissions of path: \home\grid\hadoop-1.2.1\tmp\mapred\staging\grid1670184777\.staging to 0700Exception in thread "main" java.io.IOException: Failed to set permissions of path: \home\grid\hadoop-1.2.1\tmp\mapred\staging\grid1670184777\.staging to 0700at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:691)at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:664)at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:514)at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:349)at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:193)at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:126)at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:942)at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)出现不能在HDFS里面创建文件.权限问题修改了F:\hadoop-1.2.1\src\core\org\apache\hadoop\fs中的FileUtil.java,checkReturnValue 里面内容注释掉重新编译打包hadoop-core-1.2.1.jar,替换掉hadoop-1.2.1根目录下的hadoop-core-1.2.1.jar即可。当然也和我一样小白,编译打包不成功的,直接下载个免权限的hadoop-core-1.2.1.jar即可.我会放附件上第四个错误13/11/05 18:25:53 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable13/11/05 18:25:53 INFO mapred.JobClient: Cleaning up the staging area file:/home/grid/hadoop-1.2.1/tmp/mapred/staging/grid489274882/.staging/job_local489274882_000113/11/05 18:25:53 ERROR security.UserGroupInformation: PriviledgedActionException as:grid causerg.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://h1:9000/user/grid/out already existsException in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://h1:9000/user/grid/out already existsat org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:137)at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:973)这个只要在hdfs里的目录指定新的目录,或者删除原有目录就ok

第五问题 ,上修改完毕之后再次运行结果又出错了13/11/05 18:36:41 INFO mapred.MapTask: Processing split: hdfs://h1:9000/user/grid/in/test1.txt:0+1213/11/05 18:36:41 INFO mapred.MapTask: io.sort.mb = 10013/11/05 18:36:41 INFO mapred.LocalJobRunner: Map task executor complete.13/11/05 18:36:41 WARN mapred.LocalJobRunner: job_local1365353611_0001java.lang.Exception: java.lang.OutOfMemoryError: Java heap spaceat org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)Caused by: java.lang.OutOfMemoryError: Java heap space1、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m注意:只有startup.bat启动tomcat,设置才能生效,,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms384m -Xmx384m没起作用2、在Eclilpse中修改启动参数,在VM arguments 加入了-Xms384m -Xmx384m,设置如下图所示

因害怕失败而不敢放手一搏,永远不会成功

myeclipse配置hadoop开发环境,及遇到问题解决

相关文章:

你感兴趣的文章:

标签云: