热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

07Hadoop安装部署

Hadoop安装部署hadoop安装部署思维导图下载链接伪分布式伪分布部署操作系统环境依赖软件ssh,jdk安装JDKrpm-ijdk-7u67-linux-x64.rpmw
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=PATH:PATH:PATH:JAVA_HOME/bin
      • source /etc/profile

    • 时间同步

    • 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=PATH:PATH: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] 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 }

            ]|[–set

            ]]

          • [-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=PATH:PATH: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=PATH:PATH:PATH:JAVA_HOME/bin
    • SSH免密

      • NN需要分发公钥
  • hadoop

    • profile环境变量

      • export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
        PATH=PATH:PATH: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=PATH:PATH: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

推荐阅读
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 如何使用 `org.opencb.opencga.core.results.VariantQueryResult.getSource()` 方法及其代码示例详解 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
author-avatar
留盏灯开扇门
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有