基于Eclipse的Hadoop环境搭建指南

时间:2022-09-18 15:05:22

一、下载并配置Cygwin

    1、新建系统变量【CYGWIN】,变量值为【ntsc tty】

    2、编辑系统变量【Path】,加入【c:\cygwin\bin】

二、 安装java

    配置 JAVA_HOME;

三、配置eclipse

    1、把hadoop安装包下的 contrib/ 目录下的插件 hadoop-*-eclipse-plugin.jar  放到eclipse目录的 plugins 目录下;

    2、其他配置过程参考网络其他文档;

    3、进行运行时配置,选择Run As—>Open Debug Dialog选项,在Arguments选项卡中设置:【D:\workspace\hadoop-test\in D:\workspace\hadoop-test\out】 ,在其中填写两个目录,分别为数据输入目录和输出目录,中间用空格分隔;

    四、可能遇到的问题

        1、如果遇到这个错误:org.apache.hadoop.security.AccessControlException: Permission denied: user=administrator, access=EXECUTE, inode="job_201111031322_0003":heipark:supergroup:rwx-

            问题原因:本地用户administrator(本机windows用户)想要远程操作hadoop系统,没有权限引起的。

            解决办法:

                  a、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。

                  b、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。

                         注意第一次设置的时候可能没有hadoop.job.ugi参数,报错后在去看就有了。

    2、运行例子时出现:IOException: Cannot run program "chmod": CreateProcess error=2,

       问题原因:没有安装cygwin 或 没有配置环境变量;
       解决办法:安装并配置环境变量 bin到 path下 重启 eclipse   问题解决;

    3、如果出现下面问题

             11/11/03 12:21:31 WARN mapred.LocalJobRunner: job_local_0001
             java.lang.OutOfMemoryError: Java heap space
              at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:781)
              at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:350)
              at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
              at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
             11/11/03 12:21:31 INFO mapred.JobClient:  map 0% reduce 0%
             11/11/03 12:21:31 INFO mapred.JobClient: Job complete: job_local_0001
             11/11/03 12:21:31 INFO mapred.JobClient: Counters: 0
             Exception in thread "main" java.io.IOException: Job failed!
              at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252)
              at mapred.WordCount.main(WordCount.java:110)

             问题原因:客户端程序运行时java虚拟机内存分配不够

             解决办法:修改run configuration,选择Arguments选项卡,在VM arguments栏中加入-Xmx1024m,保存即可解决问题。