说明
1、本地环境:win7(64位)、Intellij IDEA2016.3.5
2、集群环境:虚拟机系统centos6.5、hadoop2.6.0,共三个节点,其中master节点为192.168.137.2,slave1:192.168.137.3,slave2:192.168.137.4
3、本文以WordCount为例。
3、参考http://blog.csdn.net/u014695188/article/details/53888832、
http://blog.csdn.net/gong_xucheng/article/details/17396401、
http://blog.csdn.net/u013980127/article/details/52118528、
http://www.cnblogs.com/yjmyzz/p/how-to-remote-debug-hadoop-with-eclipse-and-intellij-idea.html
4、本来以为配置好之后在windows上直接调试运行MR程序会很方便,但是其实并不方便,也是各种麻烦,而且还是要打包运行,可能以后的版本中会改进吧。
5、运行时发现运行挺慢的。
6、因为参考了很多他人的教程,也遇到了很多问题,因此下面的步骤和配置不能保证都是必须的。
7、如若转载请注明出处哦^_^!
安装配置
1、首先将集群上的hadoop环境下载到本地,本文是下载到“E:\javaws”。
2、在本地配置环境变量
HADOOP_HOME=D:\yangjm\Code\study\hadoop\hadoop-2.6.0
HADOOP_BIN_PATH=%HADOOP_HOME%\bin
HADOOP_PREFIX=D:\yangjm\Code\study\hadoop\hadoop-2.6.0
另外,PATH变量在最后追加;%HADOOP_HOME%\bin
3、去网上下载对应hadoop版本的hadoop.dll、winutils.exe,分别放到目录“C:\Windows\System32”和“$HADOOP_HOME\bin”下。
说明:hadoop.dll主要是防止插件报各种莫名错误,比如空对象引用,我本来以为intellij idea不需要安装,结果被空指针错误拖了很久。
4、修改本地的hosts文件。在目录“C:\Windows\System32\drivers\etc”下。
添加集群的ip地址和hostname的对应关系。hosts的具体作用这里不再细说。
在该文件中添加:
192.168.137.2 master
192.168.137.3 slave1
192.168.137.4 slave2
5、在intellij idea下新建maven项目
我最终的项目结构图如下所示,注意是最终
其中,gkd.xgs.yxm是我的package,里面是WordCount.java程序。
resources是我新建的文件夹,里面需要存放hadoop集群中配置文件core-site.xml、mapred-site.xml、yarn-site.xml,此外,将log4j.properties文件也放在下面。
resources目录结构如下图:
其中core-site.xml、mapred-site.xml、yarn-site.xml我都是直接复制的集群中的文件未做修改,log4j.properties配置复制的别人的也未做修改:
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.6.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapred.remote.os</name>
<value>Linux</value>
<description><