美文网首页大数据学习
大数据学习之Hadoop——02Hadoop集群安装

大数据学习之Hadoop——02Hadoop集群安装

作者: Jiang锋时刻 | 来源:发表于2020-05-30 02:04 被阅读0次

    欢迎关注我的CSDN: https://blog.csdn.net/bingque6535

    一. Hadoop伪分布式安装:

    1. 自身免秘钥(前提):

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
    image
    在这里插入图片描述

    2. 安装hadoop:

    1. 解压hadoop安装包

      tar xf hadoop-2.6.5.tar.gz
      
      在这里插入图片描述
    2. 移动到指定目录


      在这里插入图片描述
    3. 配置环境变量

      vi /etc/profile
      
      在这里插入图片描述
    4. 配置"JAVA_HOME"的路径

      修改hadoop-env.sh、mapred-env.sh、/yarn-env.sh三个文件中 ”JAVA_HOME” 的路径

      [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/hadoop-env.sh
      [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/mapred-env.sh 
      [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/yarn-env.sh
      
      export JAVA_HOME=/usr/java/jdk1.7.0_67
      
      在这里插入图片描述
    5. 配置主节点信息:
      编辑“core-site.xml”文件,并配置主节点名称

      vi /opt/hjf/hadoop/etc/hadoop/core-site.xml
      
      在这里插入图片描述
    6. 配置从节点信息:

      • 编辑“hdfs-site.xml”文件

        vi /opt/hjf/hadoop/etc/hadoop/hdfs-site.xml
        
      • 配置副本数量【伪分布式只需要一个副本即可】


        在这里插入图片描述
      • 配置从节点名称。即哪些主机做datenode。


        在这里插入图片描述
        在这里插入图片描述
    7. 再次修改“hdfs-site.xml”文件:

      https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

      在这里插入图片描述

      配置代码

      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>node01:9868</value>
          </property>
      </configuration>
      
      在这里插入图片描述
    8. 再次修改“core-site.xml”文件:

      https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml

      在这里插入图片描述

      Hadoop.tmp.dir默认指向的路径是一个临时目录,但是“hdfs-site.xml”文件中多次调用的这个路径,如果不修改的话数据存在丢失的风险。

     ![在这里插入图片描述](https://img.haomeiwen.com/i2193837/bad10035347fa261.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
     ![在这里插入图片描述](https://img.haomeiwen.com/i2193837/7cf29090d006a07f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![在这里插入图片描述](https://img.haomeiwen.com/i2193837/8593a1b01d770295.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    配置代码

    ```powershell
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node01:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/var/hadoop/pseudo</value>
        </property>
    </configuration>
    ```
    
    
    
    
    ![在这里插入图片描述](https://img.haomeiwen.com/i2193837/ada2db8a3328bf1e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    1. 格式化:

      hdfs namenode -format
      

      格式化后一定要看是否出现了“successful”字样,如果没有出现,则之前的配置上有问题,后续的操作上也会出现问题。


      在这里插入图片描述

    3. 启动hadoop集群:

    start-dfs.sh
    
    在这里插入图片描述
    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    4. HDFS一般操作

    1. 查询hdfs命令:

      hdfs dfs
      
      在这里插入图片描述
    2. 递归创建目录
      hdfs dfs -mkdir -p /user/root


      在这里插入图片描述
    3. 文件上传:

      hdfs dfs -put ~/tengine-2.1.0  /user/root/tengine
      
      在这里插入图片描述

      本机存储位置:


      在这里插入图片描述

    5. 关闭hadoop集群:

    stop-dfs.sh
    
    在这里插入图片描述

    二. 全分布式:

    1. 免秘钥(前提)

    1. 生成秘钥

      $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
      $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
      
      在这里插入图片描述
    2. 执行后目录中包含以下文件


      在这里插入图片描述
    3. 秘钥分发
      此时node01可以免秘钥访问node02、node03、node04

      scp id_dsa.pub node01:`pwd`/node01.pub
      scp id_dsa.pub node02:`pwd`/node01.pub
      scp id_dsa.pub node03:`pwd`/node01.pub
      
      在这里插入图片描述

    2. 安装hadoop:

    1. 解压hadoop安装包


      在这里插入图片描述
    2. 移动hadoop


      在这里插入图片描述
    3. 环境变量配置:

      vi /etc/profile
      
      在这里插入图片描述
    4. 配置JAVA_HPME路径

      修改hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中 ”JAVA_HOME” 的路径
      1. 修改文件的具体路径
      powershell [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/hadoop-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/mapred-env.sh [root@node01 hadoop]# vi /opt/hjf/hadoop/etc/hadoop/yarn-env.sh
      2. 配置java环境变量
      powershell export JAVA_HOME=/usr/java/jdk1.7.0_67

    5. 配置主节点信息:

      1. 编辑“core-site.xml”文件, 配置主节点名称和临时文件存放路径

        vi /opt/hjf/hadoop/etc/hadoop/core-site.xml
        
        在这里插入图片描述
      2. 编辑mapred-env.sh 和 yarn-env.sh文件, 指定java jdk的安装路径

        ```powershell
        export JAVA_HOME=/usr/java/jdk1.7.0_67
        ```
        ![mapred-env.sh文件](https://img.haomeiwen.com/i2193837/952a3fc8c57cc68b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        ![yarn-env.sh文件](https://img.haomeiwen.com/i2193837/de0507feb5dfa66d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    1. hdfs-site.xml文件中设置副本数量以及secondary节点

      在这里插入图片描述
    2. 设置从节点:

      vi /opt/hjf/hadoop/etc/hadoop/slaves
      
      在这里插入图片描述
    3. 分发配置文件:

      scp -r /opt/hjf/ node02:`pwd`
      scp -r /opt/hjf/ node03:`pwd`
      scp -r /opt/hjf/ node04:`pwd`
      
      在这里插入图片描述
    4. 为所有虚拟机配置环境变量:

      export JAVA_HOME=/usr/java/jdk1.7.0_67
      export HADOOP_HOME=/opt/hjf/hadoop
      
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
      在这里插入图片描述
    5. 环境变量配置后需要重新加载:

      . /etc/profile
      
    6. 格式化主节点:

      hdfs namenode -format
      

      注意: 从节点不需要格式化

    三. zookeeper:

    1. zookeeper安装:

    1. 将zoo_simple.cfg重命名为zoo.cfg

    2. 配置zoo.cfg文件


      在这里插入图片描述
      • 设置路径:

        dataDir=/var/zk
        
      • 指定zookeeper集群包含有哪些主机,以及为主机设置编号

        server.1=node02:2888:3888
        server.2=node03:2888:3888
        server.3=node04:2888:3888
        

        其中:2888是主从结点间的通讯端口;3888是主节点选举时的通讯端口。

        在这里插入图片描述
    3. zookeeper分发:

      scp -r  zookeeper/ node03:`pwd`
      scp -r  zookeeper/ node04:`pwd`  
      
    4. 创建myid文件用于指定zookeeper主机编号:
      mkdir -p /var/zk
      echo 1 > /var/zk/myid 【node02中执行】
      echo 2 > /var/zk/myid 【node03中执行】
      echo 3 > /var/zk/myid 【node04中执行】


      在这里插入图片描述
    1. 配置环境变量:

      export JAVA_HOME=/usr/java/jdk1.7.0_67
      export HADOOP_HOME=/opt/hjf/hadoop
      export ZOOKEEPER_HOME=/opt/hjf/zookeeper
      export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
      
      在这里插入图片描述

    2. 启动zookeeper:

    1. 在node02、node03、node04三台主机上启动zookeeper

      zkServer.sh start
      
    2. zookeeper集群启动成功的前提是集群中超过1半以上的主机启动

    3. 查询zookeeper主机的状态

      zkServer.sh status
      
      在这里插入图片描述
      在这里插入图片描述

      默认情况只有一个leader,同时启动集群中所有主机时,leader选取的依据是启动的zookeeper主机中编号最大的为leader,其他为follower。当leader已经选取好了之后如果出现编号更大的主机也不会更改,只有再下一次切换时才会重新分配。

    4. 启动zookeeper客户端:

      zkCli.sh
      
      在这里插入图片描述
      在这里插入图片描述

    3. 关闭Zookeeper

    1. 关闭namenode

      关闭状态为active的namenode节点时,通过浏览器不能访问。并且状态为standby的namenode节点会自动切换成active

      hadoop-daemon.sh stop namenode
      
    2. 关闭zkfc:

      关闭状态为active的namenode节点的zkfc时,通过浏览器能访问,NameNode的状态变为standby。并且状态为standby的namenode节点会自动切换成active
      powershell hadoop-daemon.sh stop zkfc

      在这里插入图片描述

    4. Zookeeper客户端的一般操作

    1. help:帮助

      在这里插入图片描述
    2. create:创建节点

      在这里插入图片描述
    1. delete:删除节点


      在这里插入图片描述
    2. get:获取节点信息

      • cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
      • mZxid:是节点的修改时间所对应的Zxid格式时间戳。
      • pZxid:节点的子目录修改时间所对应的Pxid格式时间戳。

    3. set:修改节点信息

      在这里插入图片描述

    四. Hadoop高可用安装:

    https://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

    1. 两个NN结点间要相互免秘钥。

    见前面的详细内容

    2. 配置在hdfs-site.xml中的内容:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <name>dfs.nameservices</name>
            <value>mycluster</value>
        </property>
        <property>
            <name>dfs.ha.namenodes.mycluster</name>
            <value>nn1,nn2</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn1</name>
            <value>node01:8020</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn2</name>
            <value>node02:8020</value>
        </property>
        <property>
            <name>dfs.namenode.http-address.mycluster.nn1</name>
            <value>noed01:50070</value>
        </property>
        <property>
            <name>dfs.namenode.http-address.mycluster.nn2</name>
            <value>node02:50070</value>
        </property>
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
        </property>
        <property>
            <name>dfs.client.failover.proxy.provider.mycluster</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
        </property>
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/root/.ssh/id_dsa</value>
        </property>
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/var/hadoop/ha/journalnode</value>
        </property>
    </configuration>
    
    在这里插入图片描述 在这里插入图片描述

    3. 配置core-site.xml文件:

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://mycluster</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/var/hadoop/ha</value>
        </property>
    
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>node02:2181,node03:2181,node04:2181</value>
        </property>
    </configuration>
    
    在这里插入图片描述

    4. 配置文件分发:

    scp core-site.xml hdfs-site.xml node02:`pwd`
    scp core-site.xml hdfs-site.xml node03:`pwd`
    scp core-site.xml hdfs-site.xml node04:`pwd`
    
    在这里插入图片描述

    5. 启动journalnode

    1. 在node01、node02、node03三台主机上启动journalnode

      hadoop-daemon.sh start journalnode
      
      在这里插入图片描述
    2. 格式化NameNode主机的一个节点【任选一个即可】

      hdfs namenode -format
      
      在这里插入图片描述
    3. 启动刚才格式化的那台NameNode主机:

      hadoop-daemon.sh start namenode
      
      在这里插入图片描述
    4. 将格式化后的内容同步给另一个节点。

      hdfs namenode -bootstrapStandby
      
      在这里插入图片描述

    五. Hadoop集群的启动和关闭

    1. Hadoop集群启动:

    1. 启动zookeeper集群

      分别启动zookeeper所有节点

      zkServer.sh start
      
    2. 启动HDFS集群

      start-dfs.sh
      
    在这里插入图片描述
    在这里插入图片描述
    1. 启动yarn集群

      start-yarn.sh
      

      注意: HDFS集群和Yarn集群可以用 start-all.sh 命令一起启动

    2. 启动ResourceManager节点

      每个ResourceManager节点都需要单独启动
      powershell yarn-daemon.sh start resourcemanager

    3. WebUI


      在这里插入图片描述
      在这里插入图片描述
    4. 集群节点信息


      在这里插入图片描述 在这里插入图片描述
      在这里插入图片描述

    2. Hadoop集群关闭:

    1. 关闭 HDFS集群和yarn集群

      stop-dfs.sh
      stop-yarn.sh
      

      注意:

      1. HDFS集群和Yarn集群可以用 stop-all.sh 命令一起关闭
      2. 在一个NameNode节点关闭即可
    2. 关闭resourcemanager节点

      每个ResourceManager节点都需要单独关闭
      powershell yarn-daemon.sh stop resourcemanager

    3. 关闭zookeeper集群

      需要在每个节点单独关闭
      powershell zkServer.sh stop

    欢迎关注我的CSDN: https://blog.csdn.net/bingque6535

    相关文章

      网友评论

        本文标题:大数据学习之Hadoop——02Hadoop集群安装

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