Hadoop2.0探讨

2023-10-10 23:29
文章标签 探讨 hadoop2.0

本文主要是介绍Hadoop2.0探讨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 8. Hadoop 再探讨
        • 8.1 Hadoop的优化与发展
        • 8.2 HDFS 的FA和Federation(Hadoop2.0新特性)
          • 8.2.1 HDFS HA
          • 8.2.2 HDFS Federation
        • 8.3 YARN
          • 8.3.1 MapReduce1.0的缺陷
          • 8.3.2 Yarn设计思路
          • 8.3.3 Yarn体系结构
          • 8.3.4 Yarn工作流程
          • 8.3.5 Yarn框架和MapReduce1.0框架对比分析
          • 8.3.6 Yarn框架的发展目标
        • 8.4 Hadoop生态系统中具有代表性的组件
          • 8.4.1 Pig
          • 8.4.2 Tez
          • 8.4.3 Spark和Kafka

8. Hadoop 再探讨

8.1 Hadoop的优化与发展
  • Hadoop1.0的局限和不足

    • 抽象层次低,需人工编码:编写一个非常简单的代码都需要人工编写MapReduce代码,进行编译打包运行
    • 表达能力有限:现实中的一些问题不是使用Map和Reduce就能完成的
    • 开发者需要自己管理作业(Job)之间的依赖关系:多个MapReduce任务之间的前后关系需要人工管理
    • 难以看到程序整体逻辑
    • 执行迭代操作效率低:每次迭代都需要将结果先写入到HDFS中,下一个MapReduce任务再从HDFS中读取数据
    • 资源浪费:整个任务执行过程中Map任务结束之后才能进行Reduce任务,导致Reduce一直处于空闲状态
  • Hadoop2.0的优化与发展

    • Hadoop自身两大核心组件,MapReduce和HDFS的架构设计改进
    • Hadoop生态系统其他组件的不断丰富,包括Pig、Tez、Spark和Kafka等
  • Hadoop1.0到Hadoop2.0对比

    image-20231010171751385

  • 不断完善的Hadoop生态系统

    image-20231010171906733

8.2 HDFS 的FA和Federation(Hadoop2.0新特性)
8.2.1 HDFS HA
  • 整体结构

    • 名称节点发生故障,则立即切换到待命节点
    • 共享存储系统保证(活跃)名称节点和(待命)名称节点的中保存信息的同步
    • 共享存储系统将活跃节点的Editlog不断的同步到待命节点

    image-20231010172530715

8.2.2 HDFS Federation
  • HDFS1.0中存在的问题

    • 单点故障问题:通过HA解决
    • 不可以水平扩展 :纵向扩展如加内存可能导致启动时间过长
    • 系统整体性能受限于单个名称节点的吞吐量:一秒钟可以接入多少外部节点还是由外部节点决定的
    • 单个名称节点难以提供不同程序之间的隔离性:一个程序消耗的资源非常大,可能导致另外的程序无法运行
    • HDFS HA是热备份,提供高可用性、但是无法解决可扩展性、系统性能和隔离性
  • HDFS Federation架构

    • 提供多个名称节点,由用户设置,名称节点之间彼此独立

    • Federation提供了向后的兼容性:单名称节点的应用程序可以无缝迁移到多名称节点

    • 所有的名称节点共享底层的数据节点

      image-20231010173845797

    • 通过用户挂载不同的命名空间,使用不同的名称节点,用户可以看到一个全局命名空间挂载表,用户可以看到每个子命名空间

      image-20231010174336426

  • HDFS Federation设计可解决单名称节点存在的问题

    • 集群扩展性问题:多个名称节点,每个名称节点可以独立的管理一个目录,让一个集群可以扩展到更多空间去
    • 性能更高效:多个名称节点各自管理数据,而且可以同时提供对外服务
    • 良好的隔离性:不同数据分给不同的名称节点去管理,有效的对应用程序进行隔离
8.3 YARN
8.3.1 MapReduce1.0的缺陷
  • 缺陷

    • 存在单点故障:只有一个JobTracker负责整个作业的管理调度

      image-20231010175118821

    • JobTracker"大包大揽"导致任务过重:资源管理调度分析、任务管理分配、任务监控以及失败的恢复

    • 容易出现内存溢出:只考虑MapReduce的任务数量,不考虑单个MapReduce任务消耗的资源,多个耗内存的任务一起执行,可能会导致内存溢出

    • 资源划分不合理:将资源等分为slot,Map的slot和Reduce的slot隔离,Map在运行时,Reduce的slot资源浪费

8.3.2 Yarn设计思路
  • 将JobTracker三大功能拆分

    image-20231010175713803

  • MapReduce1.0和Hadoop2.0

    • MapReduce1.0既是一个计算框架,也是一个资源调度框架
    • Hadoop2.0将MapReduce1.0中的资源管理调度功能单独分离出来,形成了YARN,使得Yarn成为了纯粹的资源管理调度框架
    • 而被剥离了资源管理调度功能的MapReduce框架就变成了MapReduce2.0,它是运行在Yarn上的纯粹计算框架,不再负责资源调度管理任务,而是由Yarn提供资源管理调度服务
8.3.3 Yarn体系结构
  • Yarn体系结构

    image-20231010192632194

  • Yarn各个组成部分作用

    • ResourceManager
      • 处理客户端请求
      • 启动/监控 ApplicaionMaster
      • 监控NodeManager
      • 资源分配与调度
    • ApplicationMaster
      • 为应用程序申请资源,并分配给内部任务
      • 任务调度、监控与容错(失败恢复)
      • 运行MapReduce所需要的资源(cpu)等由applicationMaster向ResourceManager申请
    • NodeManager
      • 是单个节点上的资源管理
      • 处理来自ResourceManager的命令
      • 处理来自ApplicationMaster的命令
  • ResourceManager作用、

    • ResourceManager包括了Scheduler(调度器)和Applications Manager(应用程序管理器)

      image-20231010193608662

    • 将内存资源以容器的形式分配,而不是以slot的形式分配

      image-20231010193904297

  • ApplicationMaster

    image-20231010194140334

    • ApplicationMaster的主要功能

      • 当用户作业提交时,ApplicationMater与ResourceManager协商获取资源,ResourceManager会以容器的形式给ApplicationMaster分配资源
      • 把获得的资源进一步分配给内部的各个任务(Map任务和Reduce任务),实现资源的“二次分配”
      • 与NodeManager保持交互通信进行应用程序的启动、运行、监控和停止,监控申请到的资源的使用情况,对所有任务的执行进度和状态进行监控,并在任务发生失败时执行失败恢复(即重新申请资源重启任务)
      • 定时向ResourceManager发送“心跳”信息,报告资源的使用情况和应用的进度信息
      • 当作业完成时,ApplicationMaster向ResourceMnager注销容器,执行周期完成
    • NodeManager:驻留在一个Yarn集群中的每一个节点的代理

      • 容器生命周期管理:容器具体运行Map任务或者Reduce任务,还可以支持其他的计算框架
      • 监控每个容器资源(CPU、内存等)使用情况
      • 跟踪节点健康状态
      • 以“心跳”的方式与ResourceManager保持通信
      • 向ResourceManager汇报作业的资源使用情况和每个容器的运行状态
      • 接受ApplicationMaster的启动/停止容器的各种请求
    • NodeManager的主要说明

      image-20231010195605400

  • YARN和Hadoop平台其他组件的统一部署

    image-20231010195755992

8.3.4 Yarn工作流程
  • Yarn提交作业之后的全流程执行过程

    • 用户编写客户端应用程序,向Yarn提交应用程序,提交内容包括:Applications Master程序、启动Applications Master命令、以及用户程序

      image-20231010200030626

    • ResourceManager负责接受和处理来自客户端请求

       image-20231010200221109

    • ApplicationMaster被创建会首先向ResourceManager注册:为了ResourceManager能够实时监控ApplicationMaster

      image-20231010200411906

    • ApplicationMaster向ResourceManager申请资源

      image-20231010200535296

    • ResourceManager以“容器”的形式向ApplicaionMaster分配资源

      image-20231010200655616

    • 资源二次分配,在容器中将资源分配给Map任务和Reduce任务

      image-20231010200830634

    • 各个任务向ApplicationMaster汇报自己的状态和进度

      image-20231010201042955

  • 应用承租运行完成,注销关闭ApplicationMaster

    image-20231010201141438

8.3.5 Yarn框架和MapReduce1.0框架对比分析
  • 大部分API以及接口是兼容的

    image-20231010201238686

  • Yarn相对于MapReduce1.0的优势

    • 大大减少了承担中心服务功能ResourceManager的资源消耗
    • ApplicationMaster来完成需要大量资源消耗的任务调度和监控
    • 多个作业对应多个ApplicationMaster,实现了监控分布化
    • MapReduce1.0既是一个计算框架,又是一个资源管理调度框架,但是,只能支持MapReduce编程模型
    • Yarn是一个纯粹的资源调度管理框架,在它上面可以运行包括MapReduce在内的不同类型的计算框架,只要编程实现相应的ApplicationMaster.
    • Yarn中的资源管理比MapReduce1.0更高效,以容器为单位,而不是以slot为单位
8.3.6 Yarn框架的发展目标
  • 目标:在一个Yarn上运行多个计算框架

    image-20231010202132949

  • 为什么要实现“一个集群多个框架”?

    image-20231010202251106

    • 为了避免不同类型的应用之间互相干扰,企业需要把内部的服务器拆分成多个集群,分别安装运行不同的计算框架,“即一个框架一个集群”

      • 但是这样导致集群资源利用率低
      • 数据无法共享
      • 维护代价高
    • Yarn的实现优势

      image-20231010202736590

    • Yarn上部署各种计算框架

      image-20231010202840148

8.4 Hadoop生态系统中具有代表性的组件
8.4.1 Pig
  • Pig简要介绍

    image-20231010203117223

    image-20231010203149723

  • Pig提供的相关操作

    • 过滤,分组,连接,排序等
  • Pig的优势

    image-20231010203307471

  • Pig能做什么?

    • 加载数据,表达转换数据,存储最终结果

      image-20231010203419592

    • 企业将数据收集通过Pig进行数据加工:对收集过来的数据进行抽取、转换、加载,之后再放入数据仓库(Hive)

      image-20231010203607711

    • Pig Latin的应用程序实例

    image-20231010203830006

    • 将执行代码转换为流程图,使用MapReduce解决

      image-20231010203913989

  • Pig的应用场景

    image-20231010204557530

  • Pig的主要用户

    image-20231010204629960

8.4.2 Tez
  • Tez框架简要介绍

    image-20231010204721729

  • Tez将Map和Reduce拆分成更细粒度的字任务

    image-20231010204854402

    • 分解后的元操作可以任意灵活组合,产生新的操作
    • 经过一些控制程序组装后,可以形成一个大的DAG作业
    • 通过DAG作业的方式运行MapReduce作业,提供程序运行的整体处理逻辑
    • Hortonworks把Tez应用到数据仓库Hive的优化中,使得性能提升了约100倍
  • HiveQL在MapReduce和Tez中的执行情况对比

    • 在MapReduce中三次写入HDFS的行为降低性能

    image-20231010205334881

    • Tez的优化主要体现在
      • 去除连续两个作业之间的“写入HDFS”
      • 去除每个工作流中多余的Map阶段
  • Tez可应用于多个框架

    image-20231010205739565

  • Tez在Hadoop生态系统中的作用

    image-20231010205809967

  • Tez+Hive与Impala、Dremel、Drill区别

    image-20231010205959262

8.4.3 Spark和Kafka
  • Hadoop缺陷

    image-20231010210054034

  • Spark的优势

    image-20231010210147242

  • Kafka

    • 一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息
    • 可以同时男足在线实时处理和批量离线处理
  • Kafka作用

    image-20231010210349285

image-20231010210529435

这篇关于Hadoop2.0探讨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183845

相关文章

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

一台电脑对应一个IP地址吗?‌探讨两台电脑共用IP的可能性

在当今数字化时代,‌IP地址作为网络世界中的“门牌号”,‌扮演着至关重要的角色。‌它负责在网络上唯一标识每一台设备,‌使得数据能够在庞大的互联网中准确无误地传输。‌然而,‌对于IP地址与电脑之间的对应关系,‌许多人可能存有疑惑:‌一台电脑是否必须对应一个IP地址?‌两台电脑又是否可以共用一个IP地址呢?‌本文将深入探讨这些问题,‌带您一窥IP地址背后的奥秘。‌ 一台电脑对应一个IP地址吗?‌

使用Python控制Excel应用:打开与关闭工作簿的技术性探讨

目录 引言 一、安装必要的库 1. xlwings 2. openpyxl 二、使用xlwings打开和关闭Excel工作簿 2.1 启动和退出Excel 2.2 打开和关闭工作簿 2.3 创建新工作簿 三、使用openpyxl打开和关闭Excel工作簿 3.1 打开工作簿 3.2 保存和关闭工作簿 四、案例分析 4.1 读取Excel文件中的数据 4.2 写入数据到E

Kafka的分区数与多线程消费探讨

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 典型的high-level Consumer的API如下: Properties props = new Properties(); props.put("zookeeper.connect", "xxxx:2181"); props.put("zookeeper.conne

java 深拷贝探讨

java 深拷贝探讨 本文将讨论以下4个问题 1. java Cloneable接口实现深拷贝2. java 序列化实现深拷贝3. 号称最快的深拷贝二方库cloning源码分析4. 几种拷贝方式速度的比较 深拷贝的概念本文就不说了。在C++中实现深拷贝一般情况下重载赋值操作符 “=” 来实现同一个类的对象间的深拷贝,所以很自然的在java中我们也同样可以定义一个copy函数,在函数内

1、快速响应市场和技术变化的深度探讨

在当今技术飞速发展和市场竞争日益激烈的时代,企业面临的最大挑战之一就是如何快速响应市场和技术变化。市场需求不断变化,新技术层出不穷,传统的静态计划和僵化的管理方式已经无法满足快速变化的需求。本文将深入探讨“快速响应市场和技术变化”的关键点,从信息流通、组织架构、决策机制、技术应用到文化和领导力进行详细分析,帮助企业建立高效的响应机制。 1. 信息流通和感知能力建设 信息流通和感

国内PFMEA的实施困境与价值探讨

在国内,PFMEA(过程失效模式及影响分析)作为一种重要的质量管理工具,其推广与应用在提升企业产品质量、减少生产损失以及增强客户满意度方面展现出了巨大的潜力。然而,尽管其重要性被广泛认可,PFMEA的实施过程却面临着诸多困境,这些困境不仅限制了其效能的充分发挥,也对企业整体的质量管理水平提升构成了挑战。本文,天行健六西格玛顾问旨在探讨国内PFMEA的实施困境,并分析其潜在价值,以期为企业提供有益的

如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨

CDN作为提高网站访问速度和内容分发效率的安全与加速产品,它能够有效减少服务器负载、降低网络延迟,从而提升用户体验和网站的可用性。然而,随着互联网技术的发展和网络攻击形式的日益复杂多样,用户对数据安全性和隐私保护的要求不断提高,对网站和应用的要求也不再只停留在加速上。 当传统CDN逐渐没办法满足当前企业对全方位网络攻击防护的需求时,不少安全厂商开始推出新一代CDN产品,开始将安全防护机制融入

JAVA - 关于防重复提交探讨

1、前端提交按钮做单次点击 2、后端接收判断请求的数据包,生成唯一key存redis,设置几秒的过期时间(缺陷:带时间戳的数据,需要做些逻辑判断) 3、后端代码逻辑redis分布式锁(缺陷:redis崩溃后会造成脏数据) 4、数据库唯一值,采用code+deltime组合唯一,deltime=0代表有效数据,其他是删除数据,删除的时候把当前时间更新到deltime字段,到秒或者毫秒级

【通讯协议数据采用大/小端存储的探讨】

前言 在嵌入式系统和网络通信中,数据的字节序是一个不可忽视的细节。不同的设备可能采用不同的字节序,常见的有大端和小端两种。小端字节序,即最低有效字节存储在最低的内存地址,在网络协议中应用普遍。本文将通过一个简单的示例,探讨如何在C语言中实现小端存储,并构建符合特定通讯协议的数据包。 实例 1.示例代码 以下是一个使用C语言编写的示例程序,该程序演示了如何将数据以小端存储的方式复制到通讯帧中: