http://www.aboutyun.com/thread-6950-1-1.html
1、2方法中Eclipse是运行在linux中,3方法中Eclipse是运行在widows中
===================================================================
1、使用hadoop-Eclipse插件(使用插件时可以直接在Eclipse中查看并操作hadoop集群的dfs文件系统)
a、下载hadoop-Eclipse-plugin插件,把该插件添加到Eclipse安装目录下的plugin目录,重启Eclipse。
b、新建hadoop项目
new-->other-->Map/Reduce project,新建hadoop项目Map/Reduce project
c、 配置hadoop项目环境使之可以连接到hadoop集群Windouàshow view àotherà map/reduce loactions,
新建一个map/rudece location ,配置 Map/Reduce Master的Host 和port还有 DFS Master的Port ,这里需要和
hadoop集群的配置相吻合。其中Map/Reduce Master 的Host对应hadoop集群namenode机器的主机名或者ip,port
对应mapred-site.xml中mapred.jobhistory.address属性的值的端口。
DFS Master 的Port 对应core-site.xml中fs.defaultFS属性的值的端口。
d、运行项目(新建一个类如MyWordCount,把hadoop自带的wordcount demo 代码复制到到MyWordCount类中),运行方
式有两种,把项目打成jar包,放到hadoop集群中去运行,如在hadoop集群中运行wordcount demo
一样。另外一种是直接在Eclipse中运行。
在Eclipse中运行方式:右击MyWordCount-->run as -->run configrations-->arguments
在argument中配置hadoop文件系统dfs中的文件地址已经统计结果的输出地址:
hdfs://4Master:9000/user/hadoop/inputData/text
hdfs://4Master:9000/user/hadoop/outputData4
e、在Eclipse中运行完后可以直接在Eclipse中查看dfs文件系统的输出文件,也可以在hadoop集群中查看输出文件信息
如下:
[hadoop@4Master bin]$ hdfs dfs -ls
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2014-09-01 17:32 inputData
drwxr-xr-x - hadoop supergroup 0 2014-09-02 09:42 outputData4
[hadoop@4Master bin]$ hdfs dfs -ls outputData4
Found 2 items
-rw-r--r-- 3 hadoop supergroup 0 2014-09-02 09:42 outputData4/_SUCCESS
-rw-r--r-- 3 hadoop supergroup 28 2014-09-02 09:42 outputData4/part-r-00000
[hadoop@4Master bin]$ hdfs dfs -cat outputData4/*
demo 1
hadoop 1
is 2
this 2
ps:其中输入文件是inputData/text
[hadoop@4Master bin]$ hdfs dfs -cat inputData/text
this is hadoop
this is demo
[hadoop@4Master bin]
2、不使用插件时开发(此例子中,hadoop集群部署在linux中,Eclipse运行在hadoop集群的namenode机器中,Eclipse运行在windows中时此方法
会出错,因为windows系统需要安装cygwin模拟linux的环境,否则当Eclipse运行在windows中进行开发时,只能使用插件或者打成jar包放到
hadoop集群中去运行)
关于不使用hadoop-Eclipse插件时,只要导入外部jar包就可以,这里jar包都在哪里呢?
a、新建一个普通的java project项目。
b、导入hadoop集群的外部jar包。右击项目-->build path-->configure build path-->libraries-->add external jars
以CDH4.7为例子,在${HADOOP_HOME}/hadoop下的各个子目录下包含了hadoop所需要的全部jar包(一般导入common和mapreduce1
两个目录下的jar包和这两个目录下的lib目录下的jar包基本满足需要,common和mapreduce1下的lib包下的jar包有很多是相同的),直接
导入这些jar包就可以了。
c、运行项目(新建一个类如MyWordCount,把hadoop自带的wordcount demo 代码复制到到MyWordCount类中),运行方
式有两种,把项目打成jar包,放到hadoop集群中去运行,如在hadoop集群中运行wordcount demo
一样。另外一种是直接在Eclipse中运行。
在Eclipse中运行方式:右击MyWordCount-->run as -->run configrations-->arguments
在argument中配置hadoop文件系统dfs中的文件地址已经统计结果的输出地址:
hdfs://192.168.27.151:9000/user/hadoop/inputData/text
hdfs://192.168.27.151:9000/user/hadoop/outputData4
d、在Eclipse中运行完毕时可以在hadoop集群中查看dfs文件系统上的输出文件(如1使用插件开发时的e步骤一致,除不能在Eclipse中查看和
操作hadoop集群的dfs文件)
3、Eclipse真正的离群开发(Eclipse运行在windows系统中,当使用和不使用插件时开发步骤和1、2类似)
参考网址:http://blog.csdn.net/aaa1117a8w5s6d/article/details/20918221
需要在Eclipse中安装cygwin,模拟linux环境,否则直接在windows中Eclipse连接到linux系统的hadoop集群,会报以下错误:
Cannot run program "cygpath": CreateProcess error=2
hadoop集群在linux,eclipse调试环境是在windows,需要安装一个linux模拟器“cygwin”来支持程序的运行。
在windows开发服务器上安装好cygwin,然后在环境变量中添加cygwin的bin目录,比如“D:\Program\cygwin\bin”,成功后重启
myeclipse运行代码,问题得以解决。
注意是在系统环境变量的Path上加入“D:\Program\cygwin\bin”这样我们就行像在linux上运行命令一样在windows的dos窗口下执行ls,cd等命令。