美文网首页我爱编程
14. apache hadoop 4台分布式集群搭建-part

14. apache hadoop 4台分布式集群搭建-part

作者: 经纶先生 | 来源:发表于2017-09-01 15:01 被阅读0次

    上文链接
    13. apache hadoop 4台分布式集群搭建-part1

    下载程序并解压:

    cd /app/zpy 
    wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.6.2/hadoop-2.6.2.tar.gz
    tar zxvf hadoop-2.6.2.tar.gz
    mv hadoop-2.6.2 hadoop
    chown -R  hadoop:hadoop /app/zpy/hadoop
    

    配置环境变量

    vim /etc/profile.d/hadoop.sh
    添加
    export HADOOP_PRIFIX=/app/zpy/hadoop
    export PATH=$PATH:${HADOOP_PRIFIX}/bin:${HADOOP_PRIFIX}/sbin
    export HADOOP_YARN_HOME=${HADOOP_PRIFIX}
    export HADOOP_MAPPERD_HOME=${HADOOP_PRIFIX}
    export HADOOP_COMMON_HOME=${HADOOP_PRIFIX}
    export HADOOP_HDFS_HOME=${HADOOP_PRIFIX}
    
    

    master 节点的配置

    core-site.xml 文件配置

    cd  /app/zpy/hadoop/etc/hadoop
    vim core-site.xml
    
    <configuration>
     <property>
            <name>fs.defaultFS</name>
            <value>hdfs://test001.zipeiyi.corp:8020</value>
            <final>true</final>
     </property>
    </configuration>
    

    hdfs-site.xml配置

    把数值的1改为3
    使用三份副本会有一个问题,你的磁盘空间只会有三分之一使用率
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>
    </property>
    
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:///data/hadoop/hdfs/nn</value>
        </property>
    
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:///data/hadoop/hdfs/dn</value>
        </property>
    
        <property>
            <name>fs.checkpoint.dir</name>
            <value>file:///data/hadoop/hdfs/snn</value>
        </property>
    
        <property>
            <name>fs.checkpoint.edits.dir</name>
            <value>file:///data/hadoop/hdfs/snn</value>
        </property> 
    
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>
    </configuration>
    

    配置:mapred-site.xml

    cp mapred-site.xml.template  mapred-site.xml
    <configuration>
     <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
     </property>
    </configuration>
    

    yarn-site.xml配置

    vim 全局替换: :%s/源字符串/目的字符串/g
    
    <configuration>
     <property>
      <name>yarn.resourcemanager.address</name>
      <value>test001.zipeiyi.corp:8032</value>
     </property>
     
     <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>test001.zipeiyi.corp:8030</value>
     </property>
    
     <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>test001.zipeiyi.corp:8031</value>
     </property>
     
     <property>
      <name>yarn.resourcemanager.admin.address</name>
      <value>test001.zipeiyi.corp:8033</value>
     </property>
     
     <property>
      <name>yarn.resourcemanager.webapp.address</name>
      <value>test001.zipeiyi.corp:8088</value>
     </property>
    
     <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
     </property>
     
    
     <property>
      <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
     </property>
    
     
     <property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
     </property>
    
    <property>
       <name>yarn.nodemanager.pmem-check-enabled</name>
       <value>false</value>
    </property>
    
    <property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
    </property>
    
    <property>
     <description>Amount of physical memory, in MB, that can be allocated
    for containers.</description>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>31920</value>
    </property>
    
    
    
    <property>
     <description>vcores for nodemanager</description>
     <name>yarn.nodemanager.resource.cpu-vcores</name>
     <value>15</value>
    </property>
    
    
    </configuration>
    

    yarn.nodemanager.resource.memory-mb参数的作用:

    图片.png

    yarn.nodemanager.resource.cpu-vcores参数的作用:

    图片.png

    编辑slave文件:

    vim slaves 添加如下:
    test002.zipeiyi.corp
    test003.zipeiyi.corp
    test004.zipeiyi.corp
    

    slave节点的配置

    197 与 198  199 的配置与master 196一样:
    在主节点上使用hadoop用户复制
    su hadoop
    scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.197:/app/zpy/hadoop/etc/hadoop/  
    scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.198:/app/zpy/hadoop/etc/hadoop/
    scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 10.1.10.199:/app/zpy/hadoop/etc/hadoop/
    

    格式化HDFS

    与伪分布式模式相同,在HDFS集群的NN启动之前需要先初始化其用于存储数据的目录
    如果hdfs-site.xml中的dfs.namenode.name.dir 属性指定的目录不存在,格式化命令会自动创建;
    如果事先存在,请确保其权限设置正确,此时格式化操作会清除其内部所有数据并重新建立一个新的文件系统。

    在所有机器上执行:
    chown -R hadoop:hadoop /data/hadoop
    chown -R hadoop:hadoop /app/zpy/hadoop
    
     只在主节点执行:
    以hadoop用户执行:hdfs namenode -format
    看格式化是否成功,应该找到这样一句话
    17/04/17 10:07:17INFO common.Storage: Storage directory /data/hadoop/hdfs/nn has beensuccessfully formatted.
    
     对比主节点与从节点的目录:
    /data/hadoop/hdfs/nn/
    发现主节点的才有数据
    

    启动hadoop进程的两种方式(现在不做这个操作,后面做)

    启动hadoop集群的方法有两种:
    一是在各节点分别启动需要启动的服务
    二是在master节点启动整个集群

    第一种方式分别启动

    master节点需要启动
    Namenode与snn服务以及Resourcemanager服务 
    hadoop-daemon.sh(start|stop)namenode
    hadoop-daemon.sh(start|stop)secondarynamenode
    yarn-daemon.sh(start|stop)resourcemanager
    各slave节点需要分别启动HDFS的DataNode服务,以及YARN的NodeManager服务
    hadoop-daemon.sh(start|stop)datanode
    yarn-daemon.sh(start|stop)nodemanager
    

    第二种方式:在master节点启动整个集群(现在不做这个操作,后面做)

    cd /app/zpy/hadoop/sbin
    su hadoop 
    start-dfs.sh   
    start-yarn.sh  
    ps: 较早的版本会提供start-all.sh 和stop-all.sh 脚本来统一控制hdfs与mapreduce,但hadoop2.0及之后的方式不再建议使用此方式
    

    JAVA的配置

    如果你的java并非按照标准路径配置,强烈建议你启动前修改
    vim /app/zpy/hadoop/etc/hadoop/hadoop-env.sh
    关于java的路径修改为绝对路径,不然启动会有错误
    如下:
    export JAVA_HOME=/app/zpy/java/jdk1.8.0_51
    

    其他小细节

    vim /etc/ssh/ssh_config
    修改
    #   StrictHostKeyChecking ask
    去掉#号,然后修改如下:
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    
    一条命令修改:
    sed -i "s?#   StrictHostKeyChecking ask?StrictHostKeyChecking no \n UserKnownHostsFile /dev/null ?g" /etc/ssh/ssh_config
    
    chown -R hadoop:hadoop /data/hadoop
    chown -R hadoop:hadoop /app/zpy/hadoop
    chmod -R 700 /app/zpy/hadoop/logs/
    

    启动hadoop集群之HDFS(只在主节点启动)

    su hadoop 
    cd /app/zpy/hadoop/sbin/
    start-dfs.sh
    关闭:stop-dfs.sh
    
    [hadoop@hadoop-nn01hadoop]$ start-dfs.sh
    
    

    启动完毕后使用jps命令检查其余机器看是否已经启动相关角色

    上传一个大于64M的文件

    1)hdfs dfs -mkdir /test 
    2)hdfs dfs -put  /opt/mysql-bin.001477  /test
    3)hdfs dfs -ls -R   /test
    -rw-r--r--   3 hadoop supergroup  295394121 2017-04-19 10:13 /test/mysql-bin.001477
    
    4)我们去三台datanode服务器上去找一下我们真正的数据
    
    第一台:
    /data/hadoop/hdfs/dn/current/BP-1509373726-10.0.140.78-1492505099380/current/finalized/subdir0/subdir0
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741825_1001.meta
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741826_1002.meta
    -rw-rw-r-- 1 hadoop hadoop  26958665 Apr 19 10:13 blk_1073741827
    -rw-rw-r-- 1 hadoop hadoop    210623 Apr 19 10:13 blk_1073741827_1003.meta
    more blk_1073741825_1001.meta 可以明显看出就是log-bin的数据
    
    
    第二台:
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741825_1001.meta
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741826_1002.meta
    -rw-rw-r-- 1 hadoop hadoop  26958665 Apr 19 10:13 blk_1073741827
    -rw-rw-r-- 1 hadoop hadoop    210623 Apr 19 10:13 blk_1073741827_1003.meta
    
    
    第三台:
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741825
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741825_1001.meta
    -rw-rw-r-- 1 hadoop hadoop 134217728 Apr 19 10:13 blk_1073741826
    -rw-rw-r-- 1 hadoop hadoop   1048583 Apr 19 10:13 blk_1073741826_1002.meta
    -rw-rw-r-- 1 hadoop hadoop  26958665 Apr 19 10:13 blk_1073741827
    -rw-rw-r-- 1 hadoop hadoop    210623 Apr 19 10:13 blk_1073741827_1003.meta
    
    
    因为我们在配置文件hdfs-site.xml中做了如下定义:
        <property>
        <name>dfs.replication</name>
        <value>3</value>
        </property>
    
    

    启动hadoop集群之yarn(主节点启动)

    su hadoop
    cd /app/zpy/hadoop/sbin/
    start-yarn.sh
    使用jps命令观察角色
    主节点增加ResourceManager
    从节点增加NodeManager
    

    WEBUI监控

    HDFS和YARN ResourceManager 各自提供了一个web接口,通过这些接口可以检查HDFS集群以及YARN集群的相关状态信息。
    他们的访问接口分别为如下所示,具体使用中,需要将Namenode和RresourceManagerHost分别修改其相应的主机地址
    HDFS-NameNode:http://10.0.140.78:50070
    ResourceManager的web界面:http://10.0.140.78:8088
    
    HDFS WEBUI YARN WEBUI

    如何向hadoop提交程序并运行?

    ok,现在我们HDFS搭建完毕了,YARN也搭建完毕了,现在我们想在YARN上跑一个mapreduce程序。
    我又不会写map和reduce程序,hadoop为我们提供了测试包
    hadoop-YARN 自带了很多样例程序,他们位于hadoop安装路径下的
    share/hadoop/mapreduce/目录里,其中hadoop-mapreduce-examples-2.6.2.jar
    就可以作为mapreduce的程序测试!
    
    
    yarn  jar hadoop-mapreduce-examples-2.6.2.jar ,可以看出好多选项
    [hadoop@localhostmapreduce]$ yarn  jar  hadoop-mapreduce-examples-2.6.2.jar wordcount
    Usage: wordcount<in> [<in>...] <out>
    备注:out是目录,in 和 out都是HDFS文件
    
    
    ok,那我们再修改一下:
    yarn jar hadoop-mapreduce-examples-2.6.2.jar wordcount /test/mysql-bin.001477 /test/2
    
    运行的时候 查看web界面application项   
    http://10.0.140.78:8088,可以看到正在运行的application
    
    看下结果:
    hdfs dfs -lsr/test
    hdfs dfs -cat  /test/2/part-r-00000
    

    至此我们APACHE HADOOP 4台服务器集群已经搭建完毕了。
    博主正在做一个500台 CDH HADOOP集群的项目,关于更多spark、HIVE、YARN 的更多用法会在下面CDH相关文章内进行详细介绍

    相关文章

      网友评论

        本文标题:14. apache hadoop 4台分布式集群搭建-part

        本文链接:https://www.haomeiwen.com/subject/kdqcjxtx.html