红联Linux门户
Linux帮助

RedHat安装Hadoop0.20.2小集群

发布时间:2015-04-21 22:10:55来源:linux网站作者:vickyway

在安装Hadoop之前先确保每台机器都装有jdk,版本什么路径什么的最好一样,然后配置好master对其他slavers的SSH无密码访问。

确保上述条件满足之后就可以开始安装Hadoop了

首先我的版本信息:

LinuxOS:RedHat Enterprise 6.0 两台(VMWare虚拟机),一台master,两台slave,master也是slave

Hadoop:0.20.2<下载地址:http://archive.apache.org/dist/hadoop/core/>

系统配置:master 主机名:rh01 ip:192.168.1.8

slave    主机名:rh02 ip:192.168.1.9

得确保机器之间能够互相访问


下面开始Hadoop安装

1.将下载hadoop文件解压,tar文件使用tar -zxvf file_name    可以在后面加上-C指定解压路径,最好放到一个固定地方,所有机器路径必须保证一直


2.解压之后在hadoop-0.20.2(安装根目录)下会看到一个conf文件夹,所有的hadoop配置都在这个文件夹下,也是最主要的


3.配置Hadoop环境变量:

export JAVA_HOME=/develop/java/jdk1.7.0_25
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/develop/hadoop/hadoop-0.20.2

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin


4.配好环境变量之后可以选择重启机器让prfile文件生效,或者执行source /etc/profile也可


5.下面开始配置Hadoop配置文件,有hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves6个文件需要修改

(1)hadoop-env.sh:在hadoop-env.sh后面添加JAVA_HOME值,这个值被注释掉了,可以直接去掉注释然后将值改成你jdk安装路径即可

(2)core-site.xml:在configuration节点中添加,其中ip为master ip,9000为端口,注意必须是以hdfs开头,不是http

<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.8:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/develop/hadoop/tmp</value>
</property>
(3)hdfs-site.xml:在configuration节点中添加,其中dfs.replication值需要注意,如果你的salves机器数<3,那就写1或者2,大于2就写3就可以了,我这里是两个slave,所以写2
<!-- dfs.replication,设置数据块的复制次数,默认是3,如果slave节点数少于3,则写成相应的1或者2 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>  
<!-- DFS中存储文件命名空间信息的目录 -->  
<name>dfs.name.dir</name>  
<value>/develop/hadoop/dfs/name</value>  
</property>
<property>  
<!-- DFS中存储文件数据的目录 -->  
<name>dfs.data.dir</name>  
<value>/develop/hadoop/dfs/data</value>  
</property>  
<property>  
<!-- 是否对DFS中的文件进行权限控制(测试中一般用false)-->  
<name>dfs.permissions</name>  
<value>false</value>  
</property>

(4)mapred-site.xml:没有这个文件就新建一个即可,其中mapred.job.tracker 是配置jobtracker,ip为master ip,端口 9001,注意必须是以hdfs开头,不是http<PRE class=html name="code"><configuration>
<property>  
<!-- JobTracker节点 -->  
<name>mapred.job.tracker</name>  
<value>hdfs://192.168.1.8:9001</value>  
</property>  
<property>  
<!-- map/reduce的系统目录(使用的HDFS的路径) -->  
<name>mapred.system.dir</name>  
<value>/develop/hadoop/mapred/system</value>  
</property>  
<property>  
<!-- map/reduce的临时目录(可使用“,”隔开,设置多重路径来分摊磁盘IO) -->  
<name>mapred.local.dir</name>  
<value>/develop/hadoop/mapred/local</value>  
</property>  

</configuration>

(5)master:这个文件中写的是master ip(也有资料说是应该写SecondaryNameNode,新手我们就不管吧,反正只要写master ip就可以了)

(1)hosts第一行127.0.0.1后面不要写主机名,也就是HOSTNAME值

(6)slaves:这个文件写的是slave ip,有几个写几个,分行写,master也可以作为slave节点,同master最好都写ip,不要写hostname


6.将Hadoop安装目录整个copy到所有salve主机上,使用scp -r命令即可,同时也可以将/etc/profile文件也copy过去,反正profile和hadoop都得保证完全一致,路径也是


7.到这里配置应该就完成了,再启动hadoop前我们需要先格式化namenode:#hadoop namenode -format,这里如果如果提示没有hadoop命令,则先到profile中确认$HADOOP_HOME/bin加入到path中,其次可以进入到hadoop安装目录下使用:#bin/hadoop namenode -format试试,如果还是不行就那检查你的上面配置的文件是否有错.


8.格式化成功之后就可以启动hadoop了,可以直接启动start-all.sh(配置完全正确情况下这个命令无论在什么目录下都可以执行),之后就可以看到hadoop启动了,你会发现显示将启动日志保存到一个路径下,这些日志在hadoop安装目录的logs文件夹下,是很重要的,但是当你出错时可以清空logs下所有文件,然后重新启动机器让他生成日志,在查看日志信息,因为日志比较多,看起来就不方便,嘿嘿。如果日志没问题那就OK。


9.在每台机器上使用:#jps 可以查看hadoop进程情况,启动成功slave应该显示:tasktracker jps datanode三个进程,master显示:jobtracker namenode sencondarynamenode jps要是master也是slave的话会多tasktracker datanode两个进程


10.一切OK之后可以使用浏览器访问http://192.168.1.8:50030/ ip是master ip,查看hadoop运行情况,之后可以试着做hadoop自带的小测试,自己去网上找吧。

我知道一次安装成功可以性很小,你是新手的话,所以会出现各种各样的问题,在这里说下可能会出现的问题吧,也是我遇到的问题
java.io.IOException: Call to /192.168.1.8:9000 failed on local exception: java.net.NoRouteToHostException: No route to host
(1)hadoop版本问题,劝新手不要一开始就是用2.0版本及以上的,首先2.0的资料较少,其他不是很稳定貌似,配置也比较繁琐,我反正弄了一周没搞好,然后果断换了0.20.2才搞定。
(2)如果启动失败,log中显示无法连接master什么的,那问题就出在/etc/hosts文件中,这里配置了主机信息,hosts文件配置有点怪,下面是我的master hosts和slave hosts
master:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
HOSTNAME=rh01
192.168.1.8 rh01
192.168.1.9 rh02

slave:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
HOSTNAME=rh02
192.168.1.9 rh02

192.168.1.8 rh01

注意之处在于

(1)hosts第一行127.0.0.1后面不要写主机名,也就是HOSTNAME值

(2)在HOSTNAME后面写ip与主机名映射的时候一定要先写本机ip
(3)防火墙,这个坑爹的货在hadoop中始终是个麻烦,在启动hadoop之前需要将所有机器防火墙关闭,使用:#service iptables stop,也可以直接使用:#chkconfig iptables off命令设置防火墙不自启动,这样下次防火墙就不会自启动了

我就总结出这三点可能会影响hadoop启动的,错误都是无法连接主机,要是其他错误那就好好看看conf下的那些配置文件是否有错了。


好了,安装吧,启动吧,开心吧,查看吧,失望吧,排错吧,绝望吧,总之坚持住你就能搞定。