zoukankan      html  css  js  c++  java
  • hadoop 完全分布式集群搭建

    1、在伪分布式基础上搭建,伪分布式搭建参见VM上Hadoop3.1伪分布式模式搭建

    2、虚拟机准备,本次集群采用2.8.3版本与3.X版本差别不大,端口号所有差别

    192.168.44.10 vmhome10.com
    192.168.44.11 vmhome11.com
    192.168.44.12 vmhome12.com

    3、关闭防火墙,因为需要打开的端口太多,测试的环境,为了避免干扰先关闭防火墙

    systemctl stop firewalld

    4、三台虚机之间打开ssh免密登录,账户hadoop

    ssh-keygen -t rsa 生产密钥
    
    ssh-copy-id 192.168.44.10 发布密钥

    5、配置JAVA_HOME

    在${HADOOP_HOME}/etc/hadoop目录下的三个脚本
    hadoop-env.sh 
    yarn-env.sh
    mapred-env.sh
    都需要配置JAVA_HOME变量,全路径:
    export JAVA_HOME=/home/java/jdk1.8.0_201

    6、三个节点分配职能

    vmhome10.com:NameNode,DataNode,NodeManager   #NameNode与SecondaryNameNode不能在一个节点上
    vmhome11.com:DataNode,ResourceManager,NodeManager #ResourceManager需要单独一个节点
    vmhome12.com:SecondaryNameNode,DataNode,NodeManager #DataNode可以每个节点都放一个

    7、集群配置

    7.1 core-site.xml

    <configuration>
     <property>
          <name>fs.defaultFS</name>
          <value>hdfs://vmhome10.com:9000</value>
          <description>HDFS的URI,文件系统://namenode标识:端口号</description>
       </property>
       <property>
          <name>hadoop.tmp.dir</name>
          <value>/opt/hadoop/data-2.8.3/tmp</value>
          <description>namenode上本地的hadoop临时文件夹</description>
       </property>
    </configuration>

    7.2 hdfs-site.xml

    <configuration>
      <property>
           <name>dfs.replication</name>
           <value>3</value>
           <description>副本个数,配置默认是3,应小于datanode机器数量</description>
       </property>
    
       <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/hadoop/data-2.8.3/dfs/name</value>
            <description>namenode在本地存储hdfs名字空间元数据 </description>
       </property>
    
       <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/hadoop/data-2.8.3/dfs/data</value>
            <description>datanode上数据块的物理存储位置</description>
       </property>
    
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>vmhome12.com:50090</value>
            <description>指定Hadoop辅助名称节点主机配置,注意3.x后端口已经改变</description>
       </property>
    
    </configuration>

    7.3 yarn-site.xml

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
    
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>vmhome11.com</value>
    <description>yarn的主机,运行resoucemanager</description> </property> </configuration>

    7.4 mapred-site.xml

    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>

    7.5 历史服务配置

    mapred-site.xml

    <!-- 历史服务器端地址 -->
    <property>
    <name>mapreduce.jobhistory.address</name>
    <value>vmhome12.com:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>vmhome12.com:19888</value>
    </property>

    7.6 日志聚集

    yarn-site.xml

    <!-- 日志聚集功能使能 -->
    <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    </property>
    
    <!-- 日志保留时间设置7天 -->
    <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
    </property>

    8、slaves

    #集群,群起方式需要配置所有的节点在这个文件
    vmhome10.com
    vmhome11.com
    vmhome12.com

    9、复制配置到其他节点

    scp -r hadoop-2.8.3/ hadoop@vmhome11.com:/opt/hadoop/
    scp -r hadoop-2.8.3/ hadoop@vmhome12.com:/opt/hadoop/

    10、群起集群

    在NameNode的主机节点上执行(首次启动集群前,不要忘记先格式化namenode)
    start-dfs.sh
    
    在ResourceManager的主机节点上执行
    start-yarn.sh
    
    注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

    10.2 启动日志服务

    在vmhome12.com节点上启动服务
    mr-jobhistory-daemon.sh start historyserver

    11、启停命令

    各个服务组件逐一启动/停止
    (1)分别启动/停止HDFS组件
    hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode
    (2)启动/停止YARN
    yarn-daemon.sh  start / stop  resourcemanager / nodemanager
    
    
    各个模块分开启动/停止(ssh免密)
    (1)整体启动/停止HDFS
    start-dfs.sh   /  stop-dfs.sh
    (2)整体启动/停止YARN
    start-yarn.sh  /  stop-yarn.sh

    12、web页面

    用yarn的主机节点看yarn资源分配情况
    http://192.168.44.11:8088/
    
    用Namnode的主机节点看hdfs的情况
    http://192.168.44.10:50070/

     13、停止强制检查虚拟内存

    在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false,如下:
     
    
        <property>  
            <name>yarn.nodemanager.vmem-check-enabled</name>  
            <value>false</value>  
        </property>
    
    
    目的是在开发环境用的虚拟机一般虚拟内存都不够hadoop的缺省配置,解除强制检查,省得测试程序的时候容器被kill。

     14、NameNode的本地目录可以配置成多个,且每个目录存放内容相同,增加可靠性,如果配置在NFS上,可作为一份元数据备份。即配置的多个目录里都有相同的内容(元数据信息)。

    在hdfs-site.xml里配置name的多个dir,之间用逗号分隔
    
    <property>
        <name>dfs.namenode.name.dir</name>
    <value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
    </property>

     15、DataNode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本。

    在hdfs-site.xml中:
    
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
    </property>

    16、退役节点

    16.1 白名单方式,添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。

    在etc/hadoop/下新增一个dfs.hosts文件,文件名可自己定义,在里面添加datanode节点
    
    vi dfs.hosts
    vmhome10.com
    vmhome11.com
    vmhome12.com
    在hdfs-site.xml配置文件里新增:
    <property>
    <name>dfs.hosts</name>
    <value>/opt/hadoop/etc/hadoop/dfs.hosts</value>
    </property>
    
    然后分发到其他节点
    刷新NameNode和ResourceManager
    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    节点退役后,如果数据不均衡,可以用命令实现集群的再平衡数据。
    
    start-balancer.sh

    16.2 黑名单方式

    在hadoop的etc/hadoop/下新增dfs.hosts.exclude文件
    里面配置需要退役的节点:
    vi dfs.hosts.exclude
    
    vmhome9.com
    在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
    <property>
          <name>dfs.hosts.exclude</name>
          <value>/opt/hadoop/etc/hadoop/dfs.hosts.exclude</value>
    </property>
    刷新NameNode和ResourceManager
    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    在Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
    
    等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
    
    注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。
    注意:不允许白名单和黑名单中同时出现同一个主机名称
     
  • 相关阅读:
    LeetCode 623. Add One Row to Tree
    LeetCode 894. All Possible Full Binary Trees
    LeetCode 988. Smallest String Starting From Leaf
    LeetCode 979. Distribute Coins in Binary Tree
    LeetCode 814. Binary Tree Pruning
    LeetCode 951. Flip Equivalent Binary Trees
    LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List
    LeetCode 889. Construct Binary Tree from Preorder and Postorder Traversal
    LeetCode 687. Longest Univalue Path
    LeetCode 428. Serialize and Deserialize N-ary Tree
  • 原文地址:https://www.cnblogs.com/asker009/p/11322205.html
Copyright © 2011-2022 走看看