Hadoop配置

花费了三天多时间,用Hadoop搭起了一个三台机器的小集群,发现网上的一些资料有时也有一些纰漏,有些用的hadoop版本较老,而新版本的hadoop(我用的是2.5.1)的配置有细微差别。特此尽可能详尽的记录下全过程。
使用版本:hadoop2.5.1, java1.8.0_20.

一、先列参考文献
[1]http://www.cnblogs.com/lanxuezaipiao/p/3525554.html
       [2]http://liubao0312.blog.51cto.com/2213529/1557657

     
 二、安装与配置过程
总体来讲,整个过程分为4个部分:修改机器名及用户名配置SSH无密码登陆安装与配置java jdk安装与配置hadoop。下面分别讲解。

1.修改机器名及用户名
修改机器名的目的是为了后续配置更方便,能更好的区分Master和Slaves,建议修改。这里我们的三台主机名分别为MasterHadoop, Slave1Hadoop, Slave2Hadoop。
修改用户名是必须的,三台机器必须用 相同 的用户名。这里我们的用户名为image。打开三台机器的控制台(ctrl + alt + T),会显示image@MasterHadoop, image@Slave1Hadoop, image@Slave2Hadoop。
请看下表,代表了三台机器的情况。 ifconfig 查看主机ip地址
系统 主机名 普通用户名  IP地址 
 ubuntu14.04   MasterHadoop   image      10.0.0.108 
ubuntu14.04  Slave1Hadoop  image       10.0.0.112 
 ubuntu14.04 Slave2Hadoop   image   10.0.0.102 

1.1.第一个问题来了,假设装系统的时候用的是其它主机名,怎么办?简单,修改主机名。
      sudo gedit /etc/hostname
     在打开的hostname文件中,删掉本来的内容, 分别在三台机器上写入 MasterHadoop,Slave1Hadoop,Slave2Hadoop。
      sudo gedit/etc/hosts
     在打开的hosts文件中,本来有的内容不要动,添加后变成如下内容(三台机器 全部修改成这样):
                  127.0.0.1    localhost
                   10.0.0.100  MasterHadoop    添加的内容
                  10.0.0.112  Slave1Hadoop
                  10.0.0.102  Slave2Hadoop  
                  #The following .....
     完成。
     注意: 不能像[1]中所说的那样加入 127.0.0.1  MasterHadoop(SlavaxHadoop),后面会导致连接不上,出现 http://blog.csdn.net/renfengjun/article/details/25320043 中所述的错误。

1.2.修改好了主机名,如何修改用户名?
     新建用户image。
第1步到此结束。

2.配置SSH无密码登陆
就是让Master和Slaves能相互无密码登陆。
2.1.安装ssh
sudo apt-get install openssh-server
必须保证三台电脑全部都先装上,再进行后续步骤。
2.2.在Master上配置ssh
参考[1]中的步骤和图示,要非常注意切换文件路径与图示一致。
在root用户和普通用户下,都完整的做一遍!
2.3. 在Slave1Hadoop 和 Slave2Hadoop 上配置ssh
步骤与2.2一样,只是 ssh-copy-id    image@Slave x Hadoop 
                         改为   ssh-copy-id    image@Master Hadoop
:如果在配置ssh的过程中遇到问题,建议参见[1]中的有关SSH的步骤及问题解决,很详细。
第2步到此结束。

3.安装与配置java jdk
以下操作在三台机器上都做一遍,所有机器的jdk版本必须相同,安装路径必须相同。
3.1.下载安装包
下载地址   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
                  Linux x64153.42 MB   jdk-8u20-linux-x64.tar.gz
(我用的是64位linux,所以这里是x64)
3.2. 创建文件夹并解压
一种情况当然是在控制台root下mkdir等进行文件夹建立,文件移动等操作(我不太熟练...)。
二种情况,如果实在不想在控制台做这些事,可以将root用户建立的文件夹的所有者改成自己的用户名,然后像在windows下的操作那样进行文件操作:
            sudo su #进入root
            chown image /usr    #这样就可以在usr文件夹下直接新建文件夹了
            在  计算机/usr 下,右键,创建文件夹 java  
     将  jdk-8u20-linux-x64.tar.gz复制到java文件夹下,并解压。
     结果得到    计算机/usr/java/jdk1.8.0_20
3.3. 配置java环境变量
     sudo gedit /etc/profile
     在打开的文件中的最后,加入如下内容
                    #jdk environment
                   export JAVA_HOME=/usr/java/jdk1.8.0_20   (注意:这要根据自己的路径和版本号来设定!)                               
                    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib        
                    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin  

           source /etc/profile  在image用户下执行一遍
           sudo su
           source /etc/profile    在root下再次执行一遍
           测试: java -version
       注意:三台机器都要装哦~
        第3步到此结束。

   4.安装与配置hadoop
       4 .1. 下载并安装(三台机器都安装)
             下载地址     http://apache.claz.org/hadoop/common/hadoop-2.5.1/
              只下载  hadoop-2.5.1.tar.gz 就可以了
              将安装包复制到 /usr 文件夹下,解压得到/usr/hadoop-2.5.1
              重命名文件夹,得到 /usr/hadoop
             chown image /usr/hadoop
             在/usr/hadoop 下手动创建tmp文件夹,即/usr/hadoop/tmp
        4.2. 配置环境变量(三台机器都配置)
              sudo gedit /etc/profile
             在打开的文件末尾添加
                          #set hadoop environment                                            
               export   HADOOP_HOME= /usr/hadoop          (注意:这要根据自己的路径来设定!) 
               export  PATH =$HADOOP_HOME /bin :$PATH                              
               export  CLASSPATH=$HADOOP_HOME /lib :$CLASSPATH   
               source /etc/profile       在image用户下执行一遍
              sudo su
               source /etc/profile        在root下再次执行一遍 
                 测试:hadoop version
       4.3. 配置hadoop文件
           需要配置的文件在 /usr/hadoop/etc/hadoop 文件夹下,共有6个文件需要配置,
           分别为:slaves;  hadoop-env.sh;  yarn-env.sh;     core-site.xml;  
                        hdfs-site.xml;  mapred-site.xml.template;  yarn-site.xml.
            注意 :三台机器上对这些文件的配置是相同的,所以可以 先在一台机器上配置,然后拷贝覆盖
           下面分别说明这7个文件的配置方法。   
            4.3.1.slaves
                    双击打开,里面内容清空,写入
                    Slave1Hadoop
                    Slave2Hadoop  (这些是DataNode的主机名)

             4.3.2. hadoop-env.sh
                     双击打开,将 export JAVA_HOME=${JAVA_HOME}修改为
                                          export JAVA_HOME= /usr/java/jdk1.8.0_20   
                                            (注意:这要根据自己的路径和版本号来设定!)  

              4.3.3. yarn-env.sh
                     在中间某一行找到 #some Java parameters
                                                 #export JAVA_HOME=。。。这一行本来是被注释掉的
                      改为:
                                将             #export JAVA_HOME =。。。前的注释符号#删掉
                                内容修改为   export JAVA_HOME= /usr/java/jdk1.8.0_20   
                                            (注意:这要根据自己的路径和版本号来设定!)  
                 4.3.4. core-site.xml
              右键,打开方式为gedit,配置为
     < configuration >
         < property >
                 < name >fs.default.name</ name >
                 < value >hdfs://MasterHadoop:9000</ value >  根据Master主机名来设定
         </ property >
         < property >
                 < name >hadoop.tmp.dir</ name >
                 < value >file:/usr/hadoop/tmp</ value  4.1中创建了tmp文件夹,根据路径设定
                 < description >Abase for other temporary directories.</ description >
         </ property >
     </ configuration >

 4.3.5. hdfs-site.xml
   < configuration >
         < property >
                 < name >dfs.namenode.name.dir</ name >
                 < value >file: /usr/hadoop/dfs/name </ value >
         </ property >
         < property >
                 < name >dfs.datanode.data.dir</ name >
                 < value >file: /usr/hadoop/dfs/data </ value >
         </ property >
         < property >
                 < name >dfs.replication</ name >
                 < value >1</ value >
         </ property >
         < property >
                 < name >dfs.webhdfs.enabled</ name >
                 < value >true</ value >
         </ property >
</ configuration >

4.3.6. mapred-site.xml.template
<configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value> MasterHadoop:9001</value>
        </property>
</configuration>

 4.3.7. yarn-site.xml( 非必须
< configuration >
         < property >
                 < name >yarn.nodemanager.aux-services</ name >
                 < value >mapreduce_shuffle</ value >
         </ property >
         < property >
                 < name >yarn.nodemanager.aux-services.mapreduce.shuffle.class</ name >
                 < value >org.apache.hadoop.mapred.ShuffleHandler</ value >
         </ property >
         < property >
                 < name >yarn.resourcemanager.address</ name >
                 < value > MasterHadoop :8032</ value >
         </ property >
         < property >
                 < name >yarn.resourcemanager.scheduler.address</ name >
                 < value >MasterHadoop:8030</ value >
         </ property >
         < property >
                 < name >yarn.resourcemanager.resource-tracker.address</ name >
                 < value >MasterHadoop:8031</ value >
         </ property >
         < property >
                 < name >yarn.resourcemanager.admin.address</ name >
                 < value >MasterHadoop:8033</ value >
         </ property >
         < property >
                 < name >yarn.resourcemanager.webapp.address</ name >
                 < value >MasterHadoop:8088</ value >
         </ property >
</ configuration >

      :这7个文件配置完毕后,拷贝到其它两台机器上,覆盖原文件。

  4.4.开启Hadoop
       关闭所有机器的防火墙   sudo ufw disable
       在MasterHadoop下进行初始化 
       cd /usr/hadoop
        bin/hadoop namenode -format
         每次初始化都会对dfs进行操作,一般只要初始化一次就可以了,
 因为如果dfs里面有数据的话会把它给弄丢的

      开启Hadoop(MasterHadoop下执行)
       sbin/start-all.sh

    测试:浏览器中打开  http://10.0.0.108:8088    这是MasterSlave的ip
                       http://10.0.0.108:50070

     调试: 如果某个datanode未启动,可能是多方面的原因,这是需要查看错误信息。哪里查看呢?
                比如Slave1Hadoop未正常工作,则在Slave1Hadoop机器上,路径 /usr/hadoop/logs 下
          有。。。.log文件, 里面记录了错误信息,然后根据错误信息参照[1]或[2]中的方案,或直接百
          度google之调试解决即可。
  第4步到此结束。

http://10.0.0.108:8088/
http://10.0.0.108:50070/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值