zoukankan      html  css  js  c++  java
  • CentOS7 Hadoop 安装(完全分布式)

    一、hadoop集群安装模式
     
    单机模式
    直接解压,无需任何配置。主要用于测试代码。没有分布式文件系统。
     
    伪分布式
    完全分布式的一种形式,只是所有的进程都配置要一个节点上。有分布式文件系统,只不过是这个文件系统只有一个节点。
     
    完全分布式
    包含主节点和从节点,主节点namenode只有一个(一般来说,真实生产环境中namenode只会单独作为一个节点)namenode主要负责存储元数据,即datanode存储数据的描述,如数据存储在datanode的哪一个节点上,数据是谁上传的。datanode负责真正干活的,负责数据存储的。完全分布式中,如果namenode宕机了会造成整个集群无法使用,这也是完全分布式的一大缺点,存在单点故障问题。所以在一般生产环境中不太使用这种模式。
    高可用集群
    集群可以持续对外提供服务,做到7*24小时不间断,依赖于zookeeper。完全分布式的架构模式为一主多从,高可用集群架构为多主多从,也就是说高可用集群至少有两个namenode,但是同一时间只有一个是活跃的。我们把这个活跃的namenode称为active,其它的属于热备份状态,这们把这个namenode称之为standby,并且存储的元数据与active是一模一样的,当active宕机的时候,standby会立马切换为active。如果刚才宕机的namenode又恢复正常了,但是这个namenode只能是standby。但是这个集群也存在一个缺陷,就是在同一时间内只能有一个活跃的namenode。如果节点非常多(即元数据过多),这个活跃的namenode很容易崩溃。
    联邦机制
    同一个集群中可以有多个namenode,并且同一时间可以有多个活跃的namenode,这些namenode 共同使用集群中所有的datanode,每个namenode只负责管理集群中datanode上的一部分数据。但是联邦机制也会存在单点故障问题,如某一个活跃的namenode宕机了,会造成存在此namenode的数据无法访问,因此,一般的来说实际应用使用“联邦+高可用”模式搭建集群。

    二、完全分布式的安装步骤

    1.集群规划

    主机名 IP HDFS yarn
    hadoop01  192.168.220.141 namenode
    datanode
    nodeManager
    hadoop02 192.168.220.142 secondarynamenode
    datanode
    nodeManager
    hadoop03 192.168.220.143 datanode resourceManager
    nodeManager


      

    2.修改hostname 及 hosts

    $ vim /etc/hostname
    $ vim /etc/hosts
    

      

    所有的主机hosts文件均配置

    192.168.220.141    hadoop01
    192.168.220.142    hadoop02
    192.168.220.143    hadoop03

    配置完成后重启

    $ reboot
    

    3.设置 SSH key

    $ ssh-keygen -t rsa
    

    一直按回车即可

    4.将公钥信息保存至授权认证中

     将公钥信息保存至授权认证中 authorized_keys,以后可以进行免登录处理

    $ cd .ssh
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    

      

    5.登录测试

    $ ssh root@hadoop02

    使用hadoop01分别登录hadoop02和hadoop03测试,是否能免密登录。然后通过hadoop02登录hadoop01和hadoop03,是否也能免密登录,以此类推。

    6.文件配置

    一共需要配置主要的6个文件:
      hadoop-x.x.x/etc/hadoop/hadoop-env.sh
      hadoop-x.x.x/etc/hadoop/yarn-env.sh
      hadoop-x.x.x/etc/hadoop/core-site.xml
      hadoop-x.x.x/etc/hadoop/yarn-site.xml         相关的job处理
      hadoop-x.x.x/etc/hadoop/hdfs-site.xml         可以确定文件的备份个数及数据文件夹的路径
      hadoop-x.x.x/etc/hadoop/mapred-site.xml

    1)配置 core-site.xml 
    添加tmp目录 
    [root@hadoopm ~]# mkdir hadoop_tmp

    <configuration>
        <!-- 指定namenode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop01:9000</value>
        </property>
        <!-- 用来指定使用hadoop时产生文件的存放目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop</value>
        </property>    
    </configuration

    fs.defaultFS:HDFS的URI,文件系统://namenode标识:端口号
    hadoop.tmp.dir:namenode上本地的hadoop临时文件夹
    注:hadoop.tmp.dir 如果路径配置为 hadoop-x.x.x/tmp ,一但重新启动,所以的信息hadoop环境全部失效


    2)配置 hdfs-site.xml 
    [root@hadoopm tmp]# mkdir dfs dfs/name dfs/data

    如果hadoop出现问题,这些文件需要彻底清除掉,并重新配置

    <configuration>  
        <!-- 指定hdfs保存数据的副本数量 -->
        <property>  
            <name>dfs.replication</name>  
            <value>2</value>  
        </property>  
        <!-- 指定hdfs中namenode的存储位置 -->
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/name</value>
        </property>
        <!--指定hdfs中datanode的存储位置-->
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/data</value>
        </property>  
        <property>
            <name>dfs.secondary.http.address</name>
            <value>hadoop02:50070</value>
        </property>     
    </configuration>

    3)配置yarn-site.xml 

    <configuration>
        <!-- nomenodeManager获取数据的方式是shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <!-- 指定Yarn的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>hadoop03:50090</value>
        </property>
    </configuration>

    4)配置mapred-site.xml 

    <configuration>
        <!-- 告诉hadoop以后MR(Map/Reduce)运行在YARN上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

    5)配置slaves
    hadoop01 
    hadoop02 
    hadoop03


    远程发送或者每一个节点都配置一次

    创建目录 
    /home/hadoop/data
    /home/hadoop/name

    7.集群配置

     1)在/usr/local/hadoop-2.7.7/etc/hadoop 目录下创建一个masters文件,配置主机名称,即内容为hadoopm

    $ cd /usr/local/hadoop-2.7.7/etc/hadoop/
    $ echo hadoopm > masters
    

      

    2)修改从节点文件 slaves,配置主机名称,即内容为hadoopm
    $ echo hadoopm > slaves
    

      

    8.格式化文件系统

    $ hdfs namenode -format

    出现如下信息表示格式化成功

    9.启动hadoop

    1)启动hdfs,在任意节点上启动均可

    $ start-dfs.sh
    

    2)启动yarn,在yarn的主节点上启动

    $ start-yarn.sh
    

      

    10.查看进程

    $ jps
    

      

    11.测试HDSF是否能正常使用

     三、安装过程中可能遇到的问题

    启动过程中某些进程启动不了
     
    正常情况下有5个进程:
    namenode
    secondarynamenode
    datanode
    nodemanager
    resourcemanager
     
    解决方式一:
    全部关闭集群重新启动
    执行 stop-dfs.sh  命令,可以在任意节点上执行。
    执行 stop-yarn.sh 命令,在yarn的节点上执行。
    执行 start-dfs.sh 命令
    执行 start-yarn.sh 命令
     
    解决方式二:
    单独启动某些未启动的进程
    单独启动hdfs相关进程,可以通过执行 hadoop-daemon.sh start 进程 命令来启动
    单独启动yarn相关进程,可以通过执行 yarn-daemon.sh start 进程 命令来启动
     
     
    $ cd /usr/local/hadoop-2.7.7/
    $ cd /sbin
    $ hadoop-daemon.sh start namenode
    $ hadoop-daemon.sh start datanode
    $ yarn-daemon.sh start nodemanager
    $ yarn-daemon.sh start resourcemanager
    

    重新格式化datanode启动不了

    如果想要重新格式化,则需要先删除data目录。

    $ rm -rf /home/hadoop/data
    $ hadoop namenode -format
    

      

  • 相关阅读:
    LeetCode 104
    LeetCode 100
    LeetCode 27
    LeetCode 7
    LeetCode 8
    蘑菇街2017春招笔试
    codeforces 5D
    codeforces 5C
    codeforces 875B
    codeforces 876B
  • 原文地址:https://www.cnblogs.com/caoxb/p/11280425.html
Copyright © 2011-2022 走看看