博客新篇章之Hadoop0.20.2+eclipse3.7+java6.0开发环境配置

来源:互联网 发布:淘宝网首页轮播广告费 编辑:程序博客网 时间:2024/05/22 06:15

                   其他的废话就不说了,直接进入正题。

                   本文主要介绍如何搭建简单的Hadoop开发环境。

首先,为什么选用0.20.2这个版本的hadoop,我也用过高版本的2.2的,但是高版本的有一个问题,就是没有对应的资料书籍可以参考。然而用0.20.2的版本就有很多资料可供参考,比如《Hadoop实战》《Hadoop权威指南》这些书籍的作者都是使用的0.20这个版本来玩的。不要以为0.20和2.2版本是兼容的哦,在高版本中对软件的部署架构、空间的划分都出现了很大的差异,所以在0.20上运行正常的代码,要移植到高版本上还是要多花一翻功夫的,这里我们只是要快速的进入云计算的行列先学习一些基础在去玩高版本。

    第一步:首先是下载和安装要用的一些软件,我用的系统是Ubuntu12.04(系统的安装不在本文范围内各位协同自己安装)

可以直接使用

sudo apt-get install openjdk-6

安装完之后在终端中输入java -version是否能解析,能解析不报错就OK了。

另外:这里使用apt-get安装的软件都在/usr目录下面,其中我的机器是将java安装在/usr/lib/jva/java-6-openjdk下面的这个目录一定要找到需要在后面配置在Hadoop中的。

  第二步:安装eclipse

同样使用apt-get命令来安装

sudo apt-get install eclipse

使用命令安装的eclipse的版本是3.7的,记住这个版本这个版本和hadoop插件有关,Hadoop官网提供的插件不支持这个版本,需要自己配置编译文件后重新编译,我这里尝试来很久都没有成功,无奈就到网上下来一个插件就是下面这货hadoop-0.20.2-eclipse-plugin.jar


   第三步:配置hadoop和eclipse(这个是关键)

首先我们来配置hadoop让hadoop可以跑起来。这里附带我遇到的问题,在0.20.2版本的hadoop中的配置有下面几个文件需要注意的是core-site.xml应为在这个版本中所有的配置项都需要放在core-site.xml文件中,放在hdfs-site.xml和mapred-site.xml中是不起作用的。

只需要配置core-site.xml文件即可使用。下面是我的core-site.xml的配置内容。


接下来是配置hadoop-env.sh文件,在此文件中需要加上java路径的配置信息下图是在/conf/hadoop-env.sh文件中添加的代码


这里的java的安装路径是前面提到的那个地址,我的系统默认是在装在/usr/lib/jvm/java-6-openjdk文件夹下面。如果这里配置的路径不正确在运行hadoop时会出错的。

到这里hadoop文件配置完成。

第四步 配置SSH

首先使用命令 sudo apt-get install openssh-server

安装完成后

ssh-keygen

遇到提示输入文件名或是密码的地方不用管,只需按回车键即可。完成之后,在/home/username(“username”是登录名)目录下会有生成 一个".ssh"目录,“ls .ssh”之后会发现里面有两个文件,一个是id_rsa,另一个是id_rsa.pub,前者是私钥,后者是公钥。

在终端输入

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

建立信任连接列表

在终端输入

ssh localhost

如果有错误提示,类似"ssh: connect to host localhost port22: Connection refused",说明你没有安装ssh-client,此时只需要在终端输入

sudo apt-get install openssh-client

安装完成后,再输入“ssh localhost”就应该没有问题了。按照提示输入相关信息就可以了。

第五步 启动hadoop

  这时在bin目录下使用命令sudo ./hadoop namenode -format将hdfs格式化然后运行命令  ./start-all.sh脚本即可启动hadoop

hadoop启动信息如下截图:


此时可以检查hadoop上运行的程序如下截图:


这就表示hadoop已经启动,我这里安装的是单机模式,如果要安装正式环境需要配置conf/masters  文件和conf/slaves文件,本帖只介绍如何快速搭建开发环境。

OK 现在Hadoop的部分搞定来,接下来介绍一下eclipse的搭建。

第六步、eclipse 环境配置

  首先将hadoop的插件(前面提到过的,下面有下载地址),复制到eclipse的安装目录下的plugins文件中,在下次启动eclipse时就会自动加载这些插件。

复制完后打开eclipse(直接用命令eclipse就可打开,但是记得别强制关闭那个打开eclipse的终端,否则eclipse就会意外关闭),在菜单的window-》open perspective-->other下看是否出现如下图的一头蓝色的小象,如果有那么恭喜你,已经完成90%了。



接下来配置eclipse和hadoop的关联设置。

配置hadoop的安装文件地址(此时hadoop需要是运行的哦) 在eclipse菜单的window---》preferences下



打开eclipse菜单中的window-->show view-->other如下截图


打开Map/Reduce Locations配置,具体配置界面(这里需要新建才能出来配置界面,如下两图)如下图所示

上图中是我已经建立的链接,如果没有直接右键新增就可以出现下图的配置界面


只需要配置General就可以了。

配置完之后就OK 了。

第七步、运行示例程序

下面是我运行wordcount的示例程序,在运行之前需要进行参数配置在eclipse的菜单Run-->Run as Configurations下,我运行的参数是在hdfs系统中


向hdfs系统中写数据在eclipse中很简单不用使用命令在./hadoop fs -put  .......这种方式,在新建Map/Reduce程序的时候在eclipse的project Explorer窗体中有一个DFS Loation这个加载的hadoop系统就是我们刚刚配合的。直接在这里使用鼠标邮件新增目录上传文件都是OK 的。下面截图说明一下:


下面是运行效果图:


最后需要注意的是生成目录必须是不存在的如果存在会报错的,所有每次执行的时候最好将结果删除之后执行,之所以这样是应为hadoop处理的都是大量的数据运算,运算的结果是很珍贵的不能让其他的作业将其覆盖,如果覆盖那么之前做的就没有意义了,所以hadoop要求结果输出目录是不存在的。


到这里本帖基本完成,但是结合自己的配置过程将我遇到的问题现象和解决方案写在下面供大家参考:

异常一

 Exception in thread "main" java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.

localhost:      at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:214)

localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:135)

localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:119)

localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:481

解决方法:
在0.21.0版本上是配置mapred-site.xml,在之前的版本是配置core-site.xml,0.20.2版本中配置mapred- site.xml无效,只能配置core-site.xml文件

       异常二

          Call to localhost/127.0.0.1:9000 failed on connection exception:java.net.ConnectException

可能原因:

1、没有格式化文件系统./hadoop namenode -format

2、/etc/hosts文件中有::1   把这一行注释掉

我遇到这个问题是在第二天在运行hadoop时出现的,我是重新格式化来文件系统的就可以用来,第二种还没有试过。


hadoop-0.20.2的链接地址http://download.csdn.net/detail/foolish77/2543775

0 0
原创粉丝点击