Hadoop实战

模拟部署Hadoop集群

  1. 创建三台虚拟机 master slave slave1

  2. 配置时钟同步

    1
    crontab -e

    会自动打开/tmp/crontab.HNLfTD文件

    1
    2
    * * * /user/sbin/ntpdate cn.pool.ntp.org
    * * * /user/sbin/ntpdate aliyun.com

    星号是cron时间表达式,也可以直接输入后面的命令进行手动同步时间

  3. 配置主机名

    1
    2
    3
    4
    5
    vim /etc/sysconfig/network
    #确认修改生效
    hostname master
    #验证
    hostname
  4. 配置网络环境

    1
    2
    3
    4
    5
    6
    7
    #配置ip
    setup
    Network configuration
    #重启网络服务
    service network restart
    #查看状态
    ifconfig
  5. 关闭防火墙

    1
    2
    setup
    Firewall configuration
  6. 配置hosts列表

    1
    2
    3
    4
    #修改host
    vim /etc/hosts
    #验证
    ping master
  7. 安装JDK

    1
    2
    3
    4
    mkdir /usr/java 
    cp /home/ydh/jdk-7u71-linux-x64.gz /usr/java
    cd /usr/java
    tar –zxvf jdk-7u71-linux-x64.gz
  8. 配置环境变量

    1
    2
    3
    4
    5
    6
    7
    #配置给普通用户
    vim /home/ydh/.bash_profile
    export JAVA_HOME=/usr/java/jdk1.7.0_71
    export PATH=$JAVA_HOME/bin:$PATH
    source /home/ydh/.bash_profile
    #验证是否安装成功
    javac
  9. 设置SSH免密登陆

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #master普通用户下生成密钥
    ssh-keygen –t rsa
    #生成的密钥在/home/ydh/.ssh/目录下,私钥为id_rsa,公钥为id_rsa.pub
    #复制公钥文件到authorized_keys文件中
    cat /home/ydh/.ssh/id_rsa.pub >> /home/ydh/.ssh/authorized_keys
    #修改authorized_keys文件的权限,只有当前用户ydh有权限操作authorized_keys文件
    chmod 600 /home/ydh/.ssh/authorized_keys
    #将 HadoopMaster 主节点生成的 authorized_keys 公钥文件复制到 HadoopSlave 和HadoopSlave1从节点
    scp /home/ydh/.ssh/authorized_keys ydh@slave:/home/ydh/.ssh/
    scp /home/ydh/.ssh/authorized_keys ydh@slave1:/home/ydh/.ssh/
    #在从节点修改文件权限为当前用户可读可写
    chmod 600 /home/ydh/.ssh/authorized_keys
    #主节点验证免密登陆
    ssh slave
  10. 上传hadoop安装文件并解压

    1
    2
    3
    tar –zxvf hadoop-2.5.2.tar.gz 
    cd hadoop-2.5.2
    ls –l
  11. 配置环境变量hadoop-env.sh

    1
    2
    vim /home/ydh/Hadoop-2.5.2/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=/usr/java/jdk1.7.0_71
  12. 配置环境变量yarn-env.sh

    1
    2
    vim /home/ydh/Hadoop-2.5.2/etc/hadoop/yarn-env.sh
    export JAVA_HOME=/usr/java/jdk1.7.0_71
  13. 配置核心组件core-site.xml

    1
    vim /home/ydh/Hadoop-2.5.2/etc/hadoop/core-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version=“1.0” encoding=“UTF-8”?>
    <?xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>
    <!— Put site-specific property overrides in this file. —> <configuration>
    <!—HDFS文件系统的入口地址信息—>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
    </property>
    <!—HDFS 文件系统数据落地到本地磁盘的路径信息,/home/ zkpk/hadoopdata 该目录需要单独创建,后面将在启动hadoop集群时统一 创建 —>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/ zkpk/hadoopdata</value>
    </property>
    </configuration>
  14. 配置文件系统hdfs-site.xml

    1
    vim /home/ydh/hadoop-2.5.2/etc/hadoop/hdfs-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version=“1.0” encoding=“UTF-8”?> 
    <?xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>
    <!— Put site-specific property overrides in this file. —> <configuration>
    <property>
    <!—配置数据块的副因子(即副本数)为2–>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    </configuration>
  15. 配置配置YARN资源系统yarn-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version=“1.0”?> 
    <configuration>
    <!— yarn.nodemanager.aux-services 是 NodeManager 上运行的附属服务,其值需要配置成mapreduce_shuffle,才可以运行MapReduce程序—>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <!— yarn.resourcemanager.address 是ResourceManager对客户端暴露的访问地址,客户端通过该地址向ResourceManager提交或结束MapReduce应用程序—>
    <property>
    <name>yarn.resourcemanager.address</name>
    <value>master:18040</value>
    </property>
    <!-yarn.resourcemanager.scheduler.address是ResourceManager对ApplicationMaster (客户端将MapReduce应用程序提交到集群中,ResourceManager接受客户端应用程序的提交后,将该应用程序分配给某一个NodeManager,对该MapReduce应用程序进行初始化,进而产生一个应用程序初始化Java对象,将这个Java对象称为ApplicationMaster)暴露的访问地址,ApplicationMaster通过该地址向ResourceManager申请MapReduce应用程序在运行过程中所需要的资源,以及程序运行结束后对使用资源的释放等—>
    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:18030</value>
    </property>
    <!— yarn.resourcemanager.resource-tracker.address 是ResourceManager对NodeManager暴露的访问地址,NodeManager通过该地址向ResourceManager发送心跳数据,汇报资源使用情况以及领取ResourceManager将要分配给自己的任务等—>
    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:18025</value>
    </property>
    <!— yarn.resourcemanager.admin.address 是ResourceManager对管理员admin暴露的访问地址,管理员可通过该地址向ResourceManager发送管理命令等—>
    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:18141</value>
    </property>
    <!— yarn.resourcemanager.webapp.address 是 ResourceManager YARN 平台提供用户查看正在运行的MapReduce程序的进度和状态的WEB UI系统的访问地址,可通过该地址在浏览器中查看应用程序的运行状态信息 —>
    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:18088</value>
    </property>
    </configuration>
  16. 配置计算框架mapred-site.xml

    1
    vim /home/ydh/hadoop-2.5.2/etc/hadoop/mapred-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version=“1.0”?> 
    <?xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>
    <configuration>
    <!—MapReduce计算框架的资源交给YARN来管理—>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
  17. 在HadoopMaster节点配置slaves

    1
    2
    3
    4
    vim /home/ydh/hadoop-2.5.2/etc/hadoop/slaves
    #写入以下内容
    slave
    slave1
  18. 复制到从节点

    1
    2
    scp –r /home/ydh/hadoop-2.5.2 ydh@slave:~/ 
    scp –r /home/ydh/hadoop-2.5.2 ydh@slave1:~/
  19. 配置Hadoop主节点和从节点启动的系统环境变量

    1
    2
    3
    4
    5
    6
    7
    vim /home/ydh/.bash_profile
    #追加以下内容
    #Hadoop Path configuration
    export HADOOP_HOME=/home/ydh/hadoop-2.5.2
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    #生效配置
    source /home/ydh/.bash_profile
  20. 主从节点创建数据目录

    1
    mkdir /home/ydh/hadoopdata
  21. 格式化分布式文件系统

    1
    hdfs namenode –format
  22. 启动hadoop

    1
    2
    cd /home/ydh/hadoop-2.5.2 
    sbin/start-all.sh
  23. 查看是否启动成功

    1
    2
    3
    jps
    cd hadoop-2.5.2/share/hadoop/mapreduce/
    hadoop jar hadoop-mapreduce-examples-2.5.1.jar pi 10 10

    http://master:50070/
    http://master:18088/