RedHat安装Hadoop0.20.2小集群

在安装Hadoop之前先确保每台机器都装有jdk,版本什么路径什么的最好一样,然后配置好master对其他slavers的SSH无密码访问(可以参考:Linux下配置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个文件需要修改

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

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

      1
      2
      3
      4
      5
      6
      7
      8
      <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>
    • hdfs-site.xml:在configuration节点中添加,其中dfs.replication值需要注意,如果你的salves机器数<3那就写1或者2,大于2就写3就可以了,我这里是两个slave,所以写2。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      <!-- 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>
    • mapred-site.xml:没有这个文件就新建一个即可,其中mapred.job.tracker 是配置jobtracker,ip为master ip,端口 9001,注意必须是以hdfs开头,不是http

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      <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>
    • master:这个文件中写的是master ip(也有资料说是应该写SecondaryNameNode,新手我们就不管吧,反正只要写master ip就可以了)

      hosts第一行127.0.0.1后面不要写主机名,也就是HOSTNAME值
    • 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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下的那些配置文件是否有错了

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


申明有参考网上其他文章