Hadoop开发分为两个内容:Hadoop集群的搭建、Eclipse开发环境的配置。上面的几篇文章已经详细的记录了我的Hadoop集群搭建过程,成功搭建了由一个Master和两个Slave构成的简单的Hadoop-1.2.1集群,下面通过在Eclipse中安装Hadoop插件的方法搭建Hadoop开发环境,离开发Hadoop应用程序又进了一步~Hadoop的开发者开发出了Hadoop Eclipse插件,在Hadoop的开发环境中嵌入了Eclipse,实现了开发环境的图形化,降低了Hadoop应用程序编写和调试的难度。在Eclipse安装Hadoop插件,配置相关信息后,如果用户创建Hadoop程序,插件会自动导入Hadoop编程接口的JAR文件,这样用户就可以在Eclipse的图形化界面中编写、调试、运行Hadoop程序(包括单机程序和分布式程序),也可以在其中查看自己程序的实时状态、错误信息和运行结果,还可以查看、管理HDFS以及文件。
我的Hadoop开发环境结构如下图所示。其中一台CentOS6.5的主机上有配置了Hadoop插件的Eclipse, 用于编写Hadoop应用程序的源代码;其他三台CentOS6.5的主机搭建了Hadoop集群。把这四台主机组建成立一个局域网,子网掩码为255.255.255.0, IP地址的分配如图所示。需要注意的是,在装有Eclipse主机上的用户要和Hadoop集群的用户一致,避免在应用程序运行过程中出现权限问题。在Hadoop集群搭建过程中,用户为sunnie,则用于应用程序开发的主机上也要以用户sunnie登录。
下面开始配置Eclipse开发环境。第一步是在CentOS6.5上面安装Eclipse, 由于我在安装系统时选择安装程序开发相关软件,我的CentOS是自带Eclipse的。在CentOS上安装Eclipse也非常简单,可以自行百度~有了Eclipse, 接下来就是安装和设置Hadoop插件,参考基于Eclipse的Hadoop应用开发环境配置 步骤如下:
1、安装Hadoop源码:在安装Eclipse之前先下载hadoop-1.2.1.tar.gz解压到/home/sunnie/Documnes/目录下
2、插件的获取:我的Hadoop集群版本为Hadoop-1.2.1, 因此在Eclipse中要安装Hadoop-1.2.1的插件。Hadoop开发者释放出的Hadoop包含源码的包,包含相关的Eclipse插件的源码,0.20.x以后的版本不含有eclipse插件的jar包,由于eclipse的版本不一,所以就需要自己编译源码生成对应的插件。Eclipse插件编译方法参考hadoop 1.2.1 eclipse 插件编译这里我偷了个懒,直接从这篇博客的链接中下载了编译好的插件,解压后为hadoop-eclipse-plugin-1.2.1.jar
3、插件的安装:首先要关闭Eclipse, 如果它在运行的话。su - 切换到root用户,把上面获取的hadoop-eclipse-plugin-1.2.1.jar复制到/usr/share/eclipse/dropins/目录下,切换回Hadoop集群的用户sunnie, 就是这么简单~
4、Hadoop installation directory的配置:首先启动Hadoop集群,然后启动Eclipse. 打开Window-->Preferens,如果安装成功,会发现Hadoop Map/Reduce选项,在这个选项里需要配置Hadoop installation directory, 即步骤1中Hadoop源码的安装目录,我的源码位于/home/sunnie/Documents/hadoop-1.2.1配置完成后退出。
5、Map/Reduce Locations的配置:在Eclipse中选择window->Open Perspective->Other, 选择大象图标的Map/Reduce, 即可切换到Map/Reduce工作目录。在Eclipse工作窗口下面的"Map/Reduce Locations"进行右击,选择New Hadoop Location, 配置Location name,如Hadoop或Master,还有Map/Reduce Master和DFS Master,这里面的Host、Port分别为在Hadoop集群搭建过程中的mapred-site.xml、core-site.xml文件中配置的地址及端口,配置完成后点击finish退出。我的配置如下图所示:
在Hadoop集群正常启动运行的情况下,在Eclipse左侧窗口中点击DFS Locations下的大象图标,如果显示文件夹(3)说明配置成功,如下图所示:
下面在Eclipse中创建Map/Reduce项目。File-->New-->Other-->Map/Reduce Project , Project name取为try1, 点击finish. 可以看到Eclipse自动把开发Hadoop应用程序用到相关的jar包载入了新建的项目中