Windows下使用Eclipse工具搭建Hadoop2.6.4开发环境

转自:Windows下使用Eclipse工具搭建Hadoop2.6.4开发环境


Windows下使用Eclipse工具搭建Hadoop2.6.4开发环境
循序渐进解析使用Eclipse工具搭建hadoop2.6.4开发环境的步骤,理解配置的缘由。
  1. 下载插件包hadoop-eclipse-plugin-2.6.4.jar,或者自己编译hadoop插件Windows下使用Ant编译hadoop-eclipse-plugin-2.x插件
    拷贝插件到eclipse安装目录下的plugins目录
    拷贝到plugins目录下
  2. 下载Hadoop,这里选择2.6.4版本,即搭建伪分布式环境的版本
    将hadoop-2.6.4.tar.gz文件解压至本地目录下(就是为了配置eclipse用,实际联调的时候,是连接虚拟机上的hadoop2.6.4伪分布式
    注:hadoop文件存放目录不要带有空格,不然新建工程时会出现jar包找不到。
  3. 启动eclipse,菜单栏Window -> Preferences,找到Hadoop Map/Reduce选项卡,配置Hadoop installation directory目录,指向hadoop的安装目录
    配置hadoop目录
  4. 打开Map/Reduce Locations
    Window -> Show View -> Other -> Map/Reduce Tools
    show view
    点击mapreducetools
  5. 右键选择New Hadoop location或点击右边小象图标,配置连接虚拟机上Hadoop伪分布式环境
    new连接
  6. ①Location name:可以任意起名,标识一个”Map/Reduce Location”
    ②Map/Reduce(V2) Master
    Host:192.168.1.200(虚拟机的IP地址, 与linux集群的mapred-site.xml文件中配置的一样)
    注:Host若不使用IP,使用IP映射的话,那么Windows系统C:\Windows\System32\drivers\etc目录下找到配置文件hosts,编辑增加一行内容
    windows下hosts配置
    使用IP映射的配置
    主机映射配置
    Port:9001(与linux集群的mapred-site.xml文件中配置的一样)
    ③DFS Master
    Use M/R Master host:勾上(因为我们的NameNode和JobTracker都在一个机器上)
    Port:9000(与linux集群的core-site.xml文件中配置的一样)
    IP配置
  7. 配置完成,在Project Explorer视图显示HDFS连接信息,此时显示的信息是hadoop2.6.4伪分布式运行wordcount时的信息
    hdfs文件系统
    注:Hadoop集群启动了才能连接成功
    至此,hadoop的eclipse插件已经配置好了。
  8. 创建hadoop中的Map/Reduce工程
    打开File -> New -> Other,或者右键 -> New -> Other
    新建mapreduce工程
    选择Map/Reduce Project,输入工程名Project name,点击Finish即可。
    此时发现Hadoop相关联的包都引入到工程里,如果Hadoop安装目录有空格,就会出现jar包找不到的情况
    error文件路径不能有空格错误
  9. 运行Hadoop的WordCount源码
    • 9.1 src下新建包名org.apache.hadoop.examples
    • 9.2 拷贝WordCount源码
      在Hadoop的安装目录下..\hadoop-2.6.4\share\hadoop\mapreduce\sources,找到hadoop-mapreduce-examples-2.6.4-sources.jar,将包下的hadoop-mapreduce-examples-2.6.4-sources.jar\org\apache\hadoop\examples\WordCount.java直接拷贝到新建的包名下,因为包名起的和Hadoop的WordCount源码包名一致,所以不需要修改包名
    • 9.3 初次运行
      右键Run As -> Run on Hadoop
      右键run as
      出现log4j的警告,以及WordCount运行需要的参数配置
      初次运行log
    • 9.4 配置参数
      HDFS上导入要统计的文本,可以直接在Eclipse上DFS Locations新建文件夹,上传要统计的文本;也可使用HDFS的shell操作上传文本,生成两个文本文件,注意感叹号后面的空格
      > 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;
      文件下自己输入的单词
      上传到HDFS文件系统
      上传成功
      Eclipse上DFS Locations右键刷新或重连可以看到上传的文件
      input上传成功
      右键Run As -> Run Configurations,配置WordCount运行的参数Arguments,分别为HDFS输入文件和输出文件
      配置好参数close
    • 9.5 再次运行
      此时Run或使用Run on Hadoop,会报错
      报错了
      原因是,没有安装补丁。下载hadoop.dll和winutils.exe,将winutils.exe放到Windows中hadoop安装目录的bin目录下,把hadoop.dll拷贝到C:\Windows\System32下面即可。log4j的警告处理:在工程目录的src下面添加log4j.properties文件,并且在该文件中配置:
      log4j.rootLogger=debug,stdout,R  
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
      log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n  
      log4j.appender.R=org.apache.log4j.RollingFileAppender  
      log4j.appender.R.File=mapreduce_test.log  
      log4j.appender.R.MaxFileSize=1MB  
      log4j.appender.R.MaxBackupIndex=1  
      log4j.appender.R.layout=org.apache.log4j.PatternLayout  
      log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%  
      log4j.logger.com.codefutures=DEBUG  
      注:如果没有把hadoop.dll拷贝到C:\Windows\System32下面,会出现Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z错误
      没有hadoop.dll报错
    • 9.6 此时运行WordCount程序,会出现HADOOP_HOME没有设置以及权限被拒绝的错误
      winutil没有设置 null
      配置hadoop环境变量:
      HADOOP_HOME=F:\data\hadoop-2.6.4
      PATH=PATH;%HADOOP_HOME%\bin;
      验证hadoop是否配置成功:
      hadoop命令
      hadoopversion
      注:由于hadoop依赖于java jdk,所以jdk环境变量需要先配置;另外jdk安装目录也不能有空格,不然会出现JAVA_HOME没有正确设置的错误
      jdk安装目录不能有空格
      此次运行除了提示HADOOP_HOME没有设置的错误,还会出现权限被拒绝。
      权限-不能建文件夹
      解决:取消hadoop hdfs的用户权限检查,在集群环境中修改hdfs-site.xml文件,参见hadoop2.6.4伪分布式,增加配置
      <property>
          <name>dfs.permissions</name>
          <value>false</value>
          <description>权限关闭</description>
      </property>
      hdfs-site权限关闭
      保存文件后重启集群。
    • 9.7 此时再次运行WordCount,会出现下面的错误
      winutil没有设置 null
      没有设置hadoophome后续报错
      由于现在Windows下的配置以及集群的权限都配置好了,这个问题是配置好HADOOP_HOME后,需要重启Eclipse
    • 9.8 重启Eclipse后再次运行
      如果出现HDFS输出目录已存在,可直接在DFS Locations里右键Delete删除
      输出时文件夹已存在hdfsoutput文件夹已存在
      运行过后Eclipse控制台运行成功
      win下运行成功的截图
      本地查看结果正常
      本地运行看出结果
此时Windows下Hadoop2.6.4版本的Eclipse开发环境搭建成功。