IDEA远程连接Hadoop集群

环境

  • 服务器:CentOS 7
  • Hadoop版本:2.7.7
  • cli端:Windows 10
  • 开发工具:intellij IDEA

连接前提

  • 已成功创建Hadoop集群,即能正常访问hdfs和mapreduce的web界面(本人是在虚拟机建的集群)
  • 创建Maven项目并新建java class WordCount(此处以单词统计为例子)

Window环境准备

  • 下载hadoop压缩包并解压到Window下(版本为集群所用的hadoop版本)

    • 下载地址:https://hadoop.apache.org/releases.html
  • 下载winutils-master(Windows环境需要),解压后将其中对应版本的bin目录下的文件复制到第一步解压的hadoop文件的bin目录下(覆盖原有的)

    • 下载地址:http://www.pc0359.cn/downinfo/92994.html
  • winutils-master中的hadoop.dll文件复制到Windows的C:\Windows\System32目录下

    • 参考:https://blog.csdn.net/zimojiang/article/details/80473201
  • 配置Window环境变量

    • 在系统环境变量中加入:HADOOP_HOME=D:\yangjm\Code\study\hadoop\hadoop-2.6.0
    • 在Path中加入:%HADOOP_HOME%\bin

IDEA相关准备

  • pom.xml中加入相关依赖
   <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.7</version>
        </dependency>
    </dependencies>
  • 将搭建好的hadoop集群的配置文件log4j.propertiescore-site.xml复制后粘贴到IDEA创建的Java项目的resource文件夹下

  • 为项目导入本地hadoop的相关jar包(下面图片来自腾讯云社区)

    • 打开Moudle设置

    51eg4f4syf

    • 导入hadoop相关jar包(在hadoop的\share\hadoop\common目录下) vbu5uan13q uz93dmlsxx

    • 给导入的lib取个名字,如hadoopezmgol3yz4

  • 设置运行参数:

    • 以空格隔开,第一个为hdfs中需要处理的文件,第二个为处理结果保存在hdfs的路径(hdfs地址在core-site.xml中) 捕获
  • 以上配置完后基本可以正常运行

可能出现的Bug

  • 运行时出现权限问题
    • 解决:在JAVA代码中修改为有高级权限的用户
    • 参考:https://blog.csdn.net/diqijiederizi/article/details/82753573

参考