• hadoop 完全分布式安装


     

    一个完全的hadoop分布式安装至少需要3个zookeeper,3个journalnode,3个datanode,2个namenode组成。

    也就是说需要11个节点,但是我云主机有限,只有3个,所以把很多节点搭在了同一个服务器上。

     

    步骤:

    1.关闭防火墙

    service iptables stop

    2.修改主机名

    vim /etc/sysconfig/network

    三台主机都需要修改

    HOSTNAME=hadoop01 # 第一台
    HOSTNAME=hadoop02 # 第二台
    HOSTNAME=hadoop03 # 第三台

    例如:

    3.修改hosts文件进行映射

    vim /etc/hosts

    三台主机都要修改

    10.42.127.183   hadoop01
    10.42.8.245     hadoop02
    10.42.62.96     hadoop03

    例如:

    4.免密登录

    产生秘钥:ssh-keygen

    进行复制:ssh-copy-id 用户名@主机

    第一台主机操作示例:

    ssh-keygen

    回车

    回车

    ssh-copy-id hadoop01@10.42.127.183

    ssh-copy-id hadoop02@10.42.8.245

    ssh-copy-id hadoop03@10.42.62.96

    其余两台进行相同操作。

    5.重启三台服务器

    reboot

    6.安装jdk

    7.安装zookeeper

    安装zookeeper过程

    8.启动zookeeper

    9.安装hadoop

    (1) 编辑 hadoop-env.sh,并且重新生效

    vim hadoop-env.sh

    export JAVA_HOME=/home/presoftware/jdk1.8
    export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop

    (2)编辑 core-site.xml

    vim core-site.xml

        <!--指定hdfs的nameservice,为整个集群起一个别名-->
        <property>
            <name>fs.defaultFS</name>        
            <value>hdfs://ns</value>
        </property>
        <!--指定Hadoop数据临时存放目录-->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/software/hadoop-2.7.1/tmp</value>
        </property>
        <!--指定zookeeper的存放地址-->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>

    (3)编辑 hdfs-site.xml

    vim hdfs-site.xml

        <!--执行hdfs的nameservice为ns,注意要和core-site.xml中的名称保持一致-->
        <property>
            <name>dfs.nameservices</name>
            <value>ns</value>
        </property>
        <!--ns集群下有两个namenode,分别为nn1, nn2-->
        <property>
            <name>dfs.ha.namenodes.ns</name>
            <value>nn1,nn2</value>
        </property>
        <!--nn1的RPC通信-->
        <property>
            <name>dfs.namenode.rpc-address.ns.nn1</name>
            <value>hadoop01:9000</value>
        </property>
        <!--nn1的http通信-->
        <property>
            <name>dfs.namenode.http-address.ns.nn1</name>
            <value>hadoop01:50070</value>
        </property>
        <!-- nn2的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.ns.nn2</name>
            <value>hadoop02:9000</value>
        </property>
        <!-- nn2的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.ns.nn2</name>
            <value>hadoop02:50070</value>
        </property>
        <!--指定namenode的元数据在JournalNode上存放的位置,这样,namenode2可以从journalnode集
        群里的指定位置上获取信息,达到热备效果-->
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
        </property>
        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/home/software/hadoop-2.7.1/tmp/journal</value>
        </property>
        <!-- 开启NameNode故障时自动切换 -->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>
        <!-- 配置失败自动切换实现方式 -->
        <property>
            <name>dfs.client.failover.proxy.provider.ns</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <!-- 配置隔离机制 -->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
        </property>
        <!-- 使用隔离机制时需要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/root/.ssh/id_rsa</value>
        </property>
        <!--配置namenode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
        <property>  
            <name>dfs.namenode.name.dir</name>  
            <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>  
        </property>  
        <!--配置datanode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
        <property>  
            <name>dfs.datanode.data.dir</name>  
            <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>  
        </property>
        <!--配置复本数量-->  
        <property>  
            <name>dfs.replication</name>  
            <value>3</value>  
        </property> 
        <!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->          
                               
        <property>  
            <name>dfs.permissions</name>  
            <value>false</value>  
        </property>  

    (4)编辑 mapred-site.xml

    vim mapred-site.xml

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

    (5) 编辑 yarn-site.xml

    vim yarn-site.xml

        <!--配置yarn的高可用-->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>
        <!--指定两个resourcemaneger的名称-->
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>
        <!--配置rm1的主机-->
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>hadoop01</value>
        </property>
        <!--配置rm2的主机-->
        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>hadoop03</value>
        </property>
        <!--开启yarn恢复机制-->
        <property>
            <name>yarn.resourcemanager.recovery.enabled</name>
            <value>true</value>
        </property>
        <!--执行rm恢复机制实现类-->
        <property>
            <name>yarn.resourcemanager.store.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
        </property>
        <!--配置zookeeper的地址-->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>
        <!--执行yarn集群的别名-->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>ns-yarn</value>
        </property>
        <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
        <property>  
            <name>yarn.nodemanager.aux-services</name>  
            <value>mapreduce_shuffle</value>  
        </property> 
        <!-- 指定resourcemanager地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop03</value>
        </property>

    (6)编辑 slaves

    vim slaves

    hadoop01
    hadoop02
    hadoop03

    (7)配置环境变量

    vim /etc/profile

    export HADOOP_HOME=/home/software/hadoop-2.7.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    (8)将hadoop拷贝到另外两个主机

    scp -r hadoop-2.7.1 hadoop02:/home/software/

    scp -r hadoop-2.7.1 hadoop03:/home/software/

    (9)配置另外两个主机的环境变量

    export HADOOP_HOME=/home/software/hadoop-2.7.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    10.在任意一个节点上进行Zookeeper格式化注册

    hdfs zkfc -formatZK

    11.创建指定的目录

    cd hadoop-2.7.1/

    mkdir tmp

    cd tmp

    mkdir journal

    mkdir hdfs

    cd hdfs/

    mkdir data

    mkdir name

    12.在三台节点上分别启动journalnode

    hadoop-daemon.sh start journalnode

    13.格式化第一个节点

    hadoop namenode -format

     14.启动第一个节点的namenode

    hadoop-daemon.sh start namenode

     15.格式化第二个节点上的namenode

    hdfs namenode -bootstrapStandby

    16.启动第二个点的namenode

    hadoop-daemon.sh start namenode

    17.在三个节点上分别启动datanode

    hadoop-daemon.sh start datanode

    18.在第一个节点和第二个节点上启动zkfc实现状态的切换

    hadoop-daemon.sh start zkfc

    19.在第一个节点上启动yarn

    start-yarn.sh

    20.在第三个节点上启动resourcemanager

    yarn-daemon.sh start resourcemanager

     21.浏览器访问

    第一个服务器:http://10.42.127.183:50070

    第二个服务器:http://10.42.8.245:50070

     出现上图所示即为成功。

  • 相关阅读:
    【转】解决在Android设备播放音频与其他应用重音的问题,并监听耳机的控制按钮
    【转】wamp 3.0.6(apache 2.4.23) 403 forbidden 解决办法
    身份证第18位(校验码)的计算方法
    【转】Win10开机密码忘了?教你破解Win10开机密码
    【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能
    钉钉自定义机器人 发送文本 换行 无效果
    屏蔽右键+f12
    【转】理解WebKit和Chromium: JavaScript引擎简介
    第2章 排序 | 第10节 计数排序练习题 && 基数排序
    图像处理-深入探索插值操作
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/10114331.html
Copyright © 2020-2023  润新知