07-Hadoop安装部署

Hadoop安装部署

hadoop安装部署思维导图下载链接

伪分布式

伪分布部署

  • 操作系统环境

    • 依赖软件ssh,jdk

      • 安装JDK

        • rpm -i jdk-7u67-linux-x64.rpm

        • whereis java

          • 查看安装路径
      • SSH

        • ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
        • cat id_dsa.pub >> authorized_keys
        • ssh localhost
    • 环境的配置

      • vi + /etc/profile

        • export JAVA_HOME=/usr/java/jdk1.7.0_67
        • export PATH= P A T H : PATH: JAVA_HOME/bin
      • source /etc/profile

    • 时间同步

      扫描二维码关注公众号,回复: 9082113 查看本文章
    • hosts

      • IP映射
    • hostname

      • 主机名
  • 创建目录

    • mkdir -p /opt/sxt/
  • 解压、环境配置

    • tar xf hadoop-2.6.5.tar.gz -C /opt/sxt/

    • vi + /etc/profile

      • export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
      • export PATH= P A T H : PATH: HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 配置文件修改(cd /hadoop/etc/hadoop/)

    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • vi core-site.xml

      fs.defaultFS
      hdfs://localhost:9000

      hadoop.tmp.dir
      /var/sxt/hadoop/pseudo

    • vi hdfs-site.xml

      dfs.replication
      1

      dfs.namenode.secondary.http-address
      localhost:50090

    • vi slaves

      • localhost
  • 格式化hdfs

    • hdfs namenode -format (只能格式化一次,再次启动集群不要执行)
  • 启动集群

    • start-dfs.sh
  • 浏览器访问

    • ss -nal
    • http://1.1.1.1:50070
  • 命令

    • hdfs

      • dfs

        • hdfs dfs

          • [-appendToFile … ]
          • [-cat [-ignoreCrc] …]
          • [-checksum …]
          • [-chgrp [-R] GROUP PATH…]
          • [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
          • [-chown [-R] [OWNER][:[GROUP]] PATH…]
          • [-copyFromLocal [-f] [-p] [-l] … ]
          • [-copyToLocal [-p] [-ignoreCrc] [-crc] … ]
          • [-count [-q] [-h] …]
          • [-cp [-f] [-p | -p[topax]] … ]
          • [-createSnapshot []]
          • [-deleteSnapshot ]
          • [-df [-h] [ …]]
          • [-du [-s] [-h] …]
          • [-expunge]
          • [-get [-p] [-ignoreCrc] [-crc] … ]
          • [-getfacl [-R] ]
          • [-getfattr [-R] {-n name | -d} [-e en] ]
          • [-getmerge [-nl] ]
          • [-help [cmd …]]
          • [-ls [-d] [-h] [-R] [ …]]
          • [-mkdir [-p] …]
          • [-moveFromLocal … ]
          • [-moveToLocal ]
          • [-mv … ]
          • [-put [-f] [-p] [-l] … ]
          • [-renameSnapshot ]
          • [-rm [-f] [-r|-R] [-skipTrash] …]
          • [-rmdir [–ignore-fail-on-non-empty] …]
          • [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} ]|[–set <acl_spec> ]]
          • [-setfattr {-n name [-v value] | -x name} ]
          • [-setrep [-R] [-w] …]
          • [-stat [format] …]
          • [-tail [-f] ]
          • [-test -[defsz] ]
          • [-text [-ignoreCrc] …]
          • [-touchz …]
          • [-usage [cmd …]]
    • 实例

      • hdfs dfs -mkdir -p /user/root
      • hdfs dfs -ls -R /
      • hdfs dfs -put hadoop-2.6.5.tar.gz /user/root

全分布安装

全分布部署

  • 操作系统环境

    • hostname

      • 主机名
    • hosts

      • IP映射
    • 服务器设置

      • cat /etc/sysconfig/selinux

        • SELINUX=disabled
    • 时间同步

      • date -s “2020-2-6 16:24:40”
    • JDK

      • 安装JDK

        • rpm -i jdk-7u67-linux-x64.rpm

        • whereis java

          • 查看安装路径
      • 环境的配置

        • vi + /etc/profile

          • export JAVA_HOME=/usr/java/jdk1.7.0_67
          • export PATH= P A T H : PATH: JAVA_HOME/bin
        • source /etc/profile

  • SSH

    • ssh-keygen -t dsa
    • ssh-copy-id ***
  • Hadoop配置文件

    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • vi core-site.xml

      fs.defaultFS
      hdfs://node0001:9000

      hadoop.tmp.dir
      /var/sxt/hadoop/full

    • vi hdfs-site.xml

      dfs.replication
      3

      dfs.namenode.secondary.http-address
      node0002:50090

    • vi slaves

      • node0002
      • node0003
      • node0004
  • 存储小文件

    • hdfs dfs -D dfs.blocksize=1048276 -put test.txt

高可用HA

Hadoop 2.0产生背景

  • Hadoop 1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题HDFS存在的问题(2个)

    • NameNode单点故障,难以应用于在线场景 HA(high availability高可用)
    • NameNode压力过大,且内存受限,影扩展性 F(federation联邦)
  • MapReduce存在的问题响系统

    • JobTracker访问压力大,影响系统扩展性
    • 难以支持除MapReduce之外的计算框架,比如Spark、Storm等

Hadoop 1.x与Hadoop 2.x

  • Hadoop 2.x由HDFS、MapReduce和YARN三个分支构成:

    • HDFS:NN Federation(联邦)、HA;

      • 2.X:只支持2个节点HA,3.0实现了一主多从
    • MapReduce:运行在YARN上的MR;

      • 离线计算,基于磁盘I/O计算
    • YARN:资源管理系统

HDFS 2.x

  • 解决HDFS 1.0中单点故障和内存受限问题。

  • 解决单点故障

    • HDFS HA:通过主备NameNode解决
    • 如果主NameNode发生故障,则切换到备NameNode上
  • 解决内存受限问题

    • HDFS Federation(联邦)
    • 水平扩展,支持多个NameNode;
    • (2)每个NameNode分管一部分目录;
    • (1)所有NameNode共享所有DataNode存储资源
  • 2.x仅是架构上发生了变化,使用方式不变

  • 对HDFS使用者透明

  • HDFS 1.x中的命令和API仍可以使用

HDFS 2.x HA

  • 主备NameNode

  • 解决单点故障(属性,位置)

    • 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
    • 所有DataNode同时向两个NameNode汇报数据块信息(位置)
    • JNN:集群(属性)
    • standby:备,完成了edits.log文件的合并产生新的image,推送回ANN
  • 两种切换选择

    • 手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
    • 自动切换:基于Zookeeper实现
  • 基于Zookeeper自动切换方案

    • ZooKeeper Failover Controller:监控NameNode健康状态,
    • 并向Zookeeper注册NameNode
    • NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active

联邦

HDFS 2.x Federation

  • 通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。
  • 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。

高可用搭建理论(未设置自动故障转移)

安装部署

  • 环境

    • JDK

      • profile环境变量

        • export JAVA_HOME=/usr/java/jdk1.7.0_67
          PATH= P A T H : PATH: JAVA_HOME/bin
    • SSH免密

      • NN需要分发公钥
  • hadoop

    • profile环境变量

      • export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
        PATH= P A T H : PATH: HADOOP_HOME/bin:$HADOOP_HOME/sbin
    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • hdfs-site.xml

      dfs.replication
      3

    dfs.nameservices
    mycluster

    -
    dfs.ha.namenodes.mycluster
    nn1,nn2

    -
    dfs.namenode.rpc-address.mycluster.nn1
    node0001:8020


    dfs.namenode.rpc-address.mycluster.nn2
    node0002:8020

    -
    dfs.namenode.http-address.mycluster.nn1
    node0001:50070


    dfs.namenode.http-address.mycluster.nn2
    node0002:50070

    -
    dfs.namenode.shared.edits.dir
    qjournal://node0001:8485;node0002:8485;node0003:8485/mycluster

    -
    dfs.client.failover.proxy.provider.mycluster
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

    -
    dfs.ha.fencing.methods
    sshfence


    dfs.ha.fencing.ssh.private-key-files
    /root/.ssh/id_rsa

    -
    dfs.journalnode.edits.dir
    /var/sxt/hadoop/ha/journalnode

    • vi core-site.xml

    fs.defaultFS
    hdfs://mycluster

    -
    hadoop.tmp.dir
    /var/sxt/hadoop/ha

    • vi slaves

      • node0002
      • node0003
      • node0004

高可用搭建实操(自动故障转移)

高可用部署

  • hadoop

    • hdfs-site.xml

    dfs.ha.automatic-failover.enabled
    true

    • core-site.xml

    ha.zookeeper.quorum
    node0002:2181,node0003:2181,node0004:2181

  • zookeeper

    • profile环境变量

      • export ZOOKEEPER_HOME=/opt/sxt/zookeeper-3.4.6
        PATH= P A T H : PATH: ZOOKEEPER_HOME/bin
    • zoo.cfg

      • dataDir=/var/sxt/zk
      • server.1=node0002:2888:3888
        server.2=node0003:2888:3888
        server.3=node0004:2888:3888
    • echo 1 >/var/sxt/zk/myid

    • 命令

      • zkServer.sh start
      • zkServer.sh status
  • 首次启动

    • zkServer.sh start

    • hadoop-daemon.sh start journalnode

    • hdfs namenode -format

    • hadoop-daemon.sh start namenode

    • hdfs namenode -bootstrapStandby

    • hdfs zkfc -formatZK

    • 验证

      • zkCli.sh

        • ls /
      • ls /hadoop-ha/mycluster

      • get /hadoop-ha/mycluster/ActiveBreadCrumb

      • get /hadoop-ha/mycluster/ActiveStandbyElectorLock

      • hadoop-daemon.sh stop zkf

    • start-dfs.sh

    • ss -nal

  • 之后启动

    • zkServer.sh start
    • start-dfs.sh
发布了20 篇原创文章 · 获赞 1 · 访问量 259

猜你喜欢

转载自blog.csdn.net/weixin_43555997/article/details/104223800