CentOs6.7 + hadoop2.8 安装

来源:互联网 发布:重返十七岁电影知乎 编辑:程序博客网 时间:2024/06/08 14:51

一、环境与软件

首先,要安装centos操作系统,为系统安装配置ip、配置/etc/hosts文件下的相关主机信息。配置namenode和datanode之间的无ssh验证的登录方式。以及后面的必要软件(java\glibc、解压安装hadoop)这些东西都是参照《细细品味hadoop hadoop集群第五集》操作的。

然后,重点在于hadoop的一系列的配置文件的配制方法也基本可以参照这篇细细品味。

但是,细细品味的hadoop版本是1.x的。与我们的2.x在配置文件上有不少的出入,特别是2.x的mapreduce是集成在yarn上的。所以2.x要配置yarn-site.xml。这部分配置错误会造成后续的http://namenode:8088打不开的情况发生。而且2.x也不再使用50030端口,改用9000端口了。这部分一定要注意。下图是我的配置文件,可以参考。


到这里为止,如果一切正常,hadoop就能运行起来了。


二、wordcount

能跑起来之后,就要考虑跑一个mapreduce的程序看看效果了。

这里建议执行hadoop fs -help看看这个fs命令下都有哪些命令可用。

然后建立一个hdfs格式的文件夹,比如路径在/usr/local/hadoop/input下。注意这里用fs命令建立的文件夹,你是无法在linux操作系统下使用普通的ls等命令看到的(我曾经用ls和find找了好久这个新建的input找不到。。。)。然后把随便一个文件放到这个input目录下。

然后进入到/usr/local/hadoop/share/hadoop/mapreduce目录,执行hadoop自带的hadoop-mapreduce-examples-2.8.0.jar这个jar包,这里面有个wordcount的完全可用的样例代码。然后执行hadoop jar hadoop-mapreduce-examples-2.8.0.jar wordcount /usr/local/hadoop/input /usr/local/hadoop/output,如果运行正常就能在/usr/local/hadoop/output下面找到运算后的结果了。(这个/output路径完全不必提前建立,因为你提前建立了,hadoop反而不会把操作结果放进去,它需要一个空的目录。空的目录,空的目录。)

有一个细节需要注意,可能在执行的时候,会报找不到主机路由的错误(Caused by: java.net.NoRouteToHostException: No route to host),

建议关闭防火墙

chkconfig iptables off

service iptables stop

chkconfig iptables --list      //查看防火墙开机的状态

service iptables status      //查看防火墙当前状态

三、eclipse + 远程hadoop 执行wordcount.java

这里也能跑通了,就可以考虑在windows的eclipse上跑一个wordcount玩儿玩儿了。目的是为了以后本地调试方便。

首先需要找一个靠谱的hadoop-eclipse-plugin的jar包添加到eclipse的plugin目录下。这个hadoop-eclipse-plugin.jar包对eclipse的版本还是有点儿挑剔的。主要取决于编译这个插件jar包的人的环境。

至少我尝试过在一个eclipse4.5的版本上,放了一个hadoop-eclipse-plugin-2.8.jar搭配jdk1。8,然后在eclipse上面配置map/reduce后是连接不到我的远程的hadoop上的。然后我换回我一直在用的eclipse的3.7版本+hadoop-eclipse-plugin-2.7.jar+jdk1.7就完全没问题。可以连接到远程的hadoop上并且获取到hadoop下的hdfs格式的文件目录,见下图


然后要做的一个关键点,就是需要在windows下放一个hadoop的安装包,其实这个安装包我觉得有没有都没关系,里面的配置改不改也没关系,hadoop的服务启不启动也没关系,最主要的是在环境变量的系统变量中配置HADOOP_HOME,然后在系统变量的path中追加上%HADOOP_HOME%\bin,同时需要在hadoop的bin目录下放上hadoop.dll和winutils.exe。虽然不知有啥用,但是没有会报错。

然后在eclipse下配置本地hadoop的路径,同时配置map/reduce的hadoop的路径基本就ok了,见下图





这样wordcount.java就可以在eclipse中跑起来并且把远程linux服务器中的hadoop某个输入路径下的文件操作后存到远程hadoop的某个路径下了。

原创粉丝点击