Hadoop 集群安装过程

        最近研究并行机器学习并将在工作中用来训练CTR模型,因此申请了3台机器(ReadHeat系统),准备把目前比较流行的Parameter server并行计算框架搭建起来,由于会用到HDFS和YARN,因此先安装Hadoop集群,其中一台机器作为master,其余两台机器作为slave。。
    这里初步记录一下搭建Hadoop环境的过程,也欢迎大家提出意见和问题进行交流。
一,环境设置
    1,安装Java,执行命令:yum install java,然后通过whereis java命令可以看到idk所在的路径。
    对三台机器分别进行环境变量的设置:
    有两种方式:
        对所有用户生效:sudo vi /etc/profile,添加
        export JAVA_HOME=/usr/local/jdk1.7/
        export PATH=$JAVA_HOME/bin:$PATH
        然后:  source /etc/profile
        只对当前用户有效:sudo vi ~/.bashrc,添加:
        export JAVA_HOME=/usr/local/jdk1.7/
        export PATH=$JAVA_HOME/bin:$PATH
        然后source ~/.bashrc
    2,修改hosts文件(在三台机器上都进行下面的操作)
        sudo vi /etc/hosts
        添加(或者修改):
        10.101.2.88 master
        10.101.2.89 slave1
        10.101.2.90 slave2
        IP和hostname之间空格分隔。
      3,修改hostname文件(在三台机器上都进行下面的操作)
        sudo vi /etc/hostname
        在master主机上此文件中内容修改为:master
        在slave1主机上此文件中内容修改为:slave1
         在slave2主机上此文件中内容修改为:slave2
      4,ssh免密码登录:
        说明:master必须能免密码登录slave1, slave2, 并且要能免密码登录本机。
        ssh-keygen
        ssh-copy-id worker@10.101.2.89(slave1)
        ssh-copy-id worker@10.101.2.90(slave2)
        cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys(如果authorized_keys中已经有master的rsa,一定要先删除)
二, 安装Hadoop
    1, 下载hadoop-2.7.2, 解压到master机器的任意一个文件夹中
        cd hadoop-2.7.2
        mkdir hdfs;
        mkdir hdfs/name;
        mkdir hdfs/data;
        mkdir tmp
    2, 修改配置文件:
        2.1 ,进入hadoop-2.7.1/etc/hadoop文件夹,core-site配置文件如下:
    <configuration>
    <property>
         <name>hadoop.tmp.dir</name>
         <value>/home/worker/xiaoshu/hadoop/hadoop-2.7.1/tmp</value>
     </property>
     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://master:9000</value>
     </property>
     <property>
        <name>fs.hdfs.impl</name>
        <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
        <description>The FileSystem for hdfs: uris.</description>
     </property>
</configuration>
    2.2,hdfs-site.xml配置内容如下:
<configuration>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/worker/xiaoshu/hadoop/hadoop-2.7.1/hdfs/name</value>
    </property>
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/worker/xiaoshu/hadoop/hadoop-2.7.1/hdfs/data</value>
    </property>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>
    2.3,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.nodemanager.vmem-pmem-ratio</name>
<value>100</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>master:8031</value>
                    </property>
<property>
        <name>yarn.resourcemanager.admin.address</name>
                <value>master:8033</value>
                    </property>
<property>
        <name>yarn.resourcemanager.webapp.address</name>
                <value>master:8088</value>
                    </property>
</configuration>
    2.4,mapred-site.xml配置内容如下:
<configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
</configuration>
    配置完毕之后,将hadoop-2.7.2文件夹分别copy到slave1和slave2机器上,文件夹所在路径最好路径相同。
    3, 格式化namenode:
    只在master机器上执行:
    (格式化之前:要在hadoop-2.7.1/重新创建hdfs文件夹)
    ssh master ‘/home/worker/xiaoshu/hadoop/hadoop-2.7.1/bin/hdfs namenode -format -clusterId cluster1’
    4,启动namenode,datanode和resourceManager、nodeManager
    4.1 启动namenode:
    在master上执行:
    ssh master ‘/home/worker/xiaoshu/hadoop/hadoop-2.7.1/sbin/hadoop-daemon.sh start namenode’
    4.2 启动slave1上的datanode:
    在master上执行:
    ssh slave1 ‘/home/worker/xiaoshu/hadoop/hadoop-2.7.1/sbin/hadoop-daemon.sh start datanode’
    4.3 启动slave2上的datanode:
    ssh slave2 ‘/home/worker/xiaoshu/hadoop/hadoop-2.7.1/sbin/hadoop-daemon.sh start datanode’
    4.4 启动YARN:
    在master上执行:
    ssh master ‘/home/worker/xiaoshu/hadoop/hadoop-2.7.1/sbin/start-yarn.sh’
    最后,在master上输入jps,看到:
    5863 ResourceManager
    5657 NameNode
    5545 Jps
    在两个slave上输入jps看到:
    37136 NodeManager
    37009 DataNode
    86469 Jps
    出现以上结果表明hadoop集群已经安装成功。
    master节点上有NameNode,slave节点上有DataNode说明HDFS已经正常启动;master节点上有ResourceManager,slave节点上有NodeManager,说明YARN已经正常启动。

Leave a Reply

Your email address will not be published. Required fields are marked *