• hadoop-1.1.0 rpm + centos 6.3 64虚拟机 + JDK7 搭建分布式集群



    第一步 ,环境准备. 
    宿主机为CentOS6.3 64位,3个虚拟机为CentOS6.3 64位.
    (注意:有个技巧,可以先创建一台虚拟机,在其上安装好JDK、hadoop后再克隆两台,这样省时又省力。)
    操作系统.
    CentOS 6.3 64

    hadoop版本
    hadoop 1.1.0 rpm


    开始安装
    以下所有的操作,都是用 root 身份执行

    以下安装,需要在每台机器上面安装. 

    下载好 jdk-7u9-linux-x64.rpm 和  hadoop-1.1.0-1.x86_64.rpm 



    1. 首先安装操作系统,并关闭防火墙,




    第二步,更改主机名
    修改主机名 namenode1,datanode1,datanode2

     

    vim /etc/sysconfig/network

    (分别修改为)

    HOSTNAME=n amenode1

    HOSTNAME=datanode1

    HOSTNAME=datanode2

     

    :wq保存并退出


    第三步,修改文件“/etc/hosts


        每台主机中的/etc/hosts文件有以下配置
    (IP设置可参考:http://blog.csdn.net/ljg888/article/details/9241069)

     

    vim /etc/hosts

    (添加以下内容)

    192.168.10.137   namenode1
    192.168.10.138   datanode1
    192.168.10.139   datanode2

         测试

     

    ping namenode1
    ping datanode1
    ping datanode2

     

    第四步.安装jdk,rpm版的会自动配置好环境变量
       

     

    rpm -ivh jdk-7u9-linux-x64.rpm       

           

          java -version 马上有反应,方便!


    第五步.安装hadoop,rpm版的会自动配置部分文件

     

    rpm -ivh  hadoop-1.1.0-1.x86_64.rpm

     






    (CentOS 6.3默认已经安装了openssh和rsync)

     

    2.2 配置Master无密码登录所有Salve

    1)SSH无密码原理

    Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在          Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥追加到所有的Slave的authorized_keys文件上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并从authorized_keys找到Master的公钥,然后用这个公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。


    以下操作,在  namenode1上面执行


    1. 创建 ssh 密钥,就是不用密码登陆  目标主机  ,以下命令直接敲默认回车,不用输入任何信息.

     

    ssh-keygen -t rsa

    cat /root/.ssh/id_rsa.pub  >>/root/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)

     

    2. 密钥生成完成以后,追加namenode的公钥到其他2台 datanode 上面,使得  namenode能访问其它  datanode 

     

    cat/root/.ssh/id_rsa.pub  |  ssh root@datanode1 "cat >>/root/.ssh/authorized_keys"
    cat/root/.ssh/id_rsa.pub  |  ssh root@datanode2 "cat >>/root/.ssh/authorized_keys"

     

    3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


          

         authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

         设置完之后记得 重启SSH服务 ,才能使刚才设置有效。

     

    service sshd restart




    3. 验证ssh 不要密码登陆是否成功

    ssh  namenode1

    ssh    d atanode1  

    ssh    d atanode2 


     如果SSH访问出现问题的话,可以试试下面的

        1)修改文件"authorized_keys"

        

    chmod 644 /root/.ssh/authorized_keys




     

    2.3 配置所有Slave无密码登录Master

        和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)


    用root登录datanode1


    1. 创建 ssh 密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.


     

    ssh-keygen -t rsa 

    cat/root/.ssh/id_rsa.pub  >>/root/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)

     

    2. 密钥生成完成以后,追加本机的公钥到其他2台机器上面


    cat/root/.ssh/id_rsa.pub  |  ssh root@namenode1 "cat >>/root/.ssh/authorized_keys"

    cat/root/.ssh/id_rsa.pub  |  ssh root@datanode2 "cat >>/root/.ssh/authorized_keys"

     



    3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


          

         authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

         设置完之后记得 重启SSH服务 ,才能使刚才设置有效。

     

    service sshd restart




    3. 验证ssh 不要密码登陆是否成功


    ssh   name node1  

    ssh   d atanode2

     


    如果SSH访问出现问题的话,可以试试下面的

        1)修改文件"authorized_keys"

        

    chmod 644 /root/.ssh/authorized_keys



     

    2.4 配置所有Slave无密码登录Master

        和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)


    用root登录datanode2


    1. 创建 ssh 密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.

     

    ssh-keygen -t rsa

    cat/root/.ssh/id_rsa.pub  >>/root/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)

     

    2. 密钥生成完成以后,追加本机的公钥到其他2台机器的 authorized_keys

     

    cat/root/.ssh/id_rsa.pub  |  ssh root@namenode1 "cat >>/root/.ssh/authorized_keys"
    cat/root/.ssh/id_rsa.pub  |  ssh root@datanode1 "cat >>/root/.ssh/authorized_keys"

     


    3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


          

         authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

         设置完之后记得 重启SSH服务 ,才能使刚才设置有效。

     

    service sshd restart



    3. 验证ssh 不要密码登陆是否成功

    ssh  namenode1 

    ssh  datanode1

     


    如果SSH访问出现问题的话,可以试试下面的

        1)修改文件"authorized_keys"

        

    chmod 644 /root/.ssh/authorized_keys




    ---------------------------------------------------------------------------------------------------------------------------------------------


     

     

    2.5 配置Hadoop

    每个节点都要进行以下的配置


    4. 创建必要的目录.首先创建 namenode 保存namenode 元信息的目录. 设置为  /usr/hadoop/tmp    目录下

    mkdir -p /usr/hadoop/tmp 

     

    5. 配置hadoop 运行环境.进入 /etc/hadoop 目录下面,修改hadoop的默认配置.
    首先修改 master 文件. master 文件很容易理解错误,master 文件是指 hadoop 机器里面的secondarynamenode.不是指本机(测试用所以配置上,实际上 namenode和 secondarynamenode放在同一个机子上不能增加可靠性,没什么意义! )


    vim /etc/hadoop/master

    (改为如下)

    192.168.10.137

     

    接着修改slaves 文件,salve 文件表示此集群的 datanode 节点.所以在本集群中,datanode 如下


    vim /etc/hadoop/slave

    (改为如下)

    192.168.10.138
    192.168.10.139 

     

        这里的IP实际上可以用主机名来代替,但当网格的DNS出问题的,就不能访问了,直接用IP就不用依赖DNS,提高集群可靠性!


            6. 设置 core-site.xml 文件内容如下

     

    <configuration>
            
            <!-- global properties -->
    <property>
        <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/tmp</value>
    </property>
      
    <!-- file system properties -->
      <property>
    <name>fs.default.name</name>
    <value>hdfs://namenode1:9000</value>
    </property>

    </configuration>
        

    3)配置hdfs-site.xml文件

    修改Hadoop中HDFS的配置,配置的备份方式默认为3,这里只有2个datanode,所以数据最大复制2份!

     

    <configuration>

     

    <property>

            <name>dfs.replication</name>

            <value>2</value>

        </property>


    </configuration>

       


    7. 设置 mapred-site.xml 件内容如下

    修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

     



    <configuration>

     

    <property>

    <name>mapred.job.tracker</name>

    <value>namenode1:9001</value>

    </property>


    </configuration>

     

       


    8. 修改 java 的运行环境变量,修改 hadoop-env.sh 如下行的内容如下

    vim  /etc/hadoop/hadoop-env.sh

     


    修改如下行内容为

    export JAVA_HOME=/usr/java/jdk1.7.0_09

     



    11. 设置每个节点上面的 服务为自动启动

    chkconfig --add hadoop-namenode
    chkconfig --add hadoop-jobtracker
    chkconfig hadoop-namenode on
    chkconfig hadoop-jobtracker on

     

     

    4.3 启动及验证

    1)格式化HDFS文件系统

    在"Master.Hadoop"上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化)

     

    hadoop namenode -format


    2)启动hadoop

    在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。

     

    service iptables stop


         不知道为什么root用户访问start-all.sh会提示无权限,所以直接修改了其所在文件夹的访问权限!(谁知道原来回复一下我,谢谢)

     

    chmod -R 777 /usr/sbin/ 

         


        启动 namenode

     

     

    start-all.sh

         

         

     

    可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。

           再启动jobtracker,然后启动tasktracker1,tasktracker2,…。


    启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。


         停止 namenode

    stop-all.sh

         




    (2)验证方式二:用"hadoop dfsadmin -report"

    用这个命令可以查看Hadoop集群的状态。


     

    4.4 网页查看集群

    1)访问jobtracker"http:192.168.10.137:50030"

     

           

     

    2)访问DFS : "http:192.168.10.137:50070"

           


        到此,Hadoop配置完毕,最大的感悟是rpm方式安装软件真是太方便了!

    参考:http://blog.csdn.net/irelandken/article/details/8122474

  • 相关阅读:
    dubbo源码解析-spi(3)
    dubbo源码解析-spi(二)
    dubbo源码解析-spi(一)
    java-nio之zero copy深入分析
    Java SPI(Service Provider Interface)简介
    分析 Java heap dump工具之IBM HeapAnalyzer
    深入理解分布式事务
    NIO中的heap Buffer和direct Buffer区别
    Guava之Iterables使用示例
    Android开发中常见的设计模式 MD
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3180106.html
Copyright © 2020-2023  润新知