🇨🇳
Site
  • 壹棵开花的树
  • 操作系统
    • Linux From Scratch
    • Linux
      • Linux内核
      • Untitled
      • Untitled
    • Winodws
      • 全家桶
  • 系统集成
    • Untitled
    • 系统集成
    • 机房建设
      • 服务器
      • Untitled
    • 弱电系统
    • 网络
      • 路由器
      • 交换机
      • 无线网络
      • 网络安全
      • TCP/IP
        • 1. 物理层
        • 2. 数据链路层
        • 3. 网络层
        • 4. 传输层
        • 5. 会话层
        • 6. 表示层
        • 7. 应用层
    • 数据中心
    • 信息安全
  • 网络
    • Untitled
    • Untitled
    • 协议
      • Untitled
      • Untitled
      • HTTP
  • DataBase
    • 关系型数据库
      • Access
      • MariaDB
      • MySQL
        • 数据库存储引擎
        • Untitled
        • MySQL Replication
        • 高可用架构
        • 数据库中间件
          • MyCAT
      • Oracle
      • PostgreSQL
      • SQL Server
    • NoSQL
      • Untitled
      • Untitled
      • Untitled
      • tu
      • lie
      • wendang
        • MongoDB
      • kv
        • Redis
    • 云数据库
  • 安全
    • Untitled
  • 消息队列
    • Untitled
    • ActiveMQ
      • Untitled
    • RabbitMQ
      • Untitled
    • RocketMQ
      • Untitled
    • Kafka
      • Untitled
  • 大数据
    • Untitled
      • 大数据概述
    • Hadoop 生态系统
      • Hadoop
        • HDFS常用Shell命令和基础开发
        • Untitled
        • Untitled
        • MapReduce
        • Yarn
        • Hadoop的优化与发展
      • ZooKeeper
        • Untitled
        • Untitled
        • Untitled
      • Hbase
        • HBase常用Shell命令和基础开发
      • Sqoop
      • Flume
      • Pig
      • Hive
      • Impala
      • Storm(流计算)
      • Pregel(图计算)
      • Loader
      • Flume
    • Spark生态系统
      • Untitled
    • Flink
    • BI
  • 云计算
    • 云计算
      • 技术栈
      • OpenStack
    • 虚拟化
      • 服务器虚拟化
        • Untitled
        • Proxmox VE
        • VMware
        • KVM
        • Hyper-V
        • H3C CAS
        • FusionCloud
        • FusionSphere
          • 安装
  • Cloud Native
    • DevOps
      • 版本控制
      • Untitled
      • Untitled
      • Untitled
      • CI/CD
        • Jenkins
    • Untitled
    • Microservices
      • Dubbo
      • Spring Cloud
        • 最佳实践
        • Untitled
    • Service Mesh
      • Istio
    • 容器
      • Untitled
      • Docker
        • Docker
        • Untitled
    • Kubernetes
  • 网站架构
    • Untitled
    • 集群
      • 负载均衡
      • HA
    • 关于
    • 一次完整的HTTP请求过程
    • 全文搜索引擎
      • Lucene
      • Solr
      • ElasticSearch
        • 安装配置
      • Untitled
    • HTTP Cache
    • 大型网站架构
    • 网站服务器
      • WEB服务器
        • Nginx
        • Apache
        • nginx
        • IIS
      • 应用服务器
        • Weblogic
        • Tomcat
        • Jboss
  • BlockChain
    • Untitled
  • 编程语言
    • 前端
    • Python
      • Tornado
      • Django
        • 最佳实践
        • Untitled
        • manage.py
    • Go
    • Java
      • Untitled
      • 关于Java
  • Test
    • 0. 测试
      • 软件测试
      • 测试分类
      • 测试模型
    • 1. 性能测试
      • 基础
    • 2. 接口测试
      • Untitled
      • 接口测试
      • Postman
    • 3. 自动化测试
      • Python测试驱动开发
      • Python测试框架
        • Unitest
          • 最佳实践
    • 4. 测试工具
      • Selenium
      • LoadRunner
      • JMeter
    • 5. 最佳实践
  • 开发与运维
    • 软件开发模式
    • 敏捷开发
  • 存储
    • Untitled
    • 分布式存储
      • Ceph
      • MinIO
      • FusionStorage
  • 关于
    • 认证
    • 知识管理
      • Hugo
      • Gitbook
    • 企业组织架构
    • 文本格式
      • JSON
      • YAML
      • XML
    • API
由 GitBook 提供支持
在本页
  • Hadoop1.0的缺陷与不足:
  • 针对Hadoop的改进与提升:
  • HDFS HA:
  • HDFS Federation:
  • MapReduce1.0的缺陷:
  • YARN的设计思路:

这有帮助吗?

  1. 大数据
  2. Hadoop 生态系统
  3. Hadoop

Hadoop的优化与发展

上一页Yarn下一页ZooKeeper

最后更新于5年前

这有帮助吗?

Hadoop1.0的缺陷与不足:

Hadoop1.0的核心组件(仅指MapReduce和HDFS,不包括Hadoop生态系统内的Pig、Hive、HBase等其他组件),主要存在以下不足:

  • 抽象层次低,需人工编码

  • 表达能力有限

  • 开发者自己管理作业(Job)之间的依赖关系

  • 难以看到程序整体逻辑

  • 执行迭代操作效率低

  • 资源浪费(Map和Reduce分两阶段执行)

  • 实时性差(适合批处理,不支持实时交互式)

针对Hadoop的改进与提升:

Hadoop的优化与发展主要体现在两个方面:

  • 一方面是Hadoop自身两大核心组件MapReduce和HDFS的架构设计改进。

  • 另一方面是Hadoop生态系统其它组件的不断丰富,加入了Pig、Tez、Spark和Kafka等新组件。

Hadoop框架自身的改进:从1.0到2.0:

自身改进

不断完善的Hadoop生态系统:

HDFS HA:

  • HDFS HA(High Availability)是为了解决单点故障问题。

  • HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”。

  • 两种名称节点的状态同步,可以借助于一个共享存储系统来实现。

  • 一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。

  • Zookeeper确保一个名称节点在对外服务。

  • 名称节点维护映射信息,数据节点同时向两个名称节点汇报信息。

HDFS Federation:

HDFS1.0中存在的问题:

  • 单点故障问题。

  • 不可以水平扩展(是否可以通过纵向扩展来解决?)。

  • 系统整体性能受限于单个名称节点的吞吐量。

  • 单个名称节点难以提供不同程序之间的隔离性。

  • HDFS HA是热备份,提供高可用性,但是无法解决可扩展性、系统性能和隔离性。

HDFS Federation的设计:

  • 在HDFS Federation中,设计了多个相互独立的名称节点,使得HDFS的命名服务能够水平扩展,这些名称节点分别进行各自命名空间和块的管理,相互之间是联盟(Federation)关系,不需要彼此协调。并且向后兼容。

  • HDFS Federation中,所有名称节点会共享底层的数据节点存储资源,数据节点向所有名称节点汇报。

  • 属于同一个命名空间的块构成一个“块池”。

HDFS Federation的访问方式:

  • 对于Federation中的多个命名空间,可以采用客户端挂载表(Client SideMount Table)方式进行数据共享和访问。

  • 客户可以访问不同的挂载点来访问不同的子命名空间。

  • 把各个命名空间挂载到全局“挂载表”(mount-table)中,实现数据全局共享。

  • 同样的命名空间挂载到个人的挂载表中,就成为应用程序可见的命名空间。

HDFS Federation相对HDFS1.0的优势:

HDFS Federation设计可解决单名称节点存在的以下几个问题:

  1. HDFS集群扩展性。多个名称节点各自分管一部分目录,使得一个集群可以扩展到更多节点,不再像HDFS1.0中那样由于内存的限制制约文件存储数目 。

  2. 性能更高效。多个名称节点管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率 。

  3. 良好的隔离性。用户可根据需要将不同业务数据交由不同名称节点管理,这样不同业务之间影响很小。

需要注意的,HDFS Federation并不能解决单点故障问题,也就是说,每个名称节点都存在在单点故障问题,需要为每个名称节点部署一个后备名称节点,以应对名称节点挂掉对业务产生的影响。

MapReduce1.0的缺陷:

  1. 存在单点故障。

  2. JobTracker“大包大揽”导致任务过重(任务多时内存开销大,上限4000节点)。

  3. 容易出现内存溢出(分配资源只考虑MapReduce任务数,不考虑CPU、内存)。

  4. 资源划分不合理(强制划分为slot ,包括Map slot和Reduce slot)。

YARN的设计思路:

YARN架构思路:将原JobTacker三大功能拆分

  • MapReduce1.0既是一个计算框架,也是一个资源管理 调度框架。

  • 到了Hadoop2.0以后,MapReduce1.0中的资源管理调度功能,被单独分离出来形成了YARN,它是一个纯粹的资源管理调度框架,而不是一个计算框架。

  • 被剥离了资源管理调度功能的MapReduce 框架就变成了MapReduce2.0,它是运行在YARN之上的一个纯粹的计算框架,不再自己负责资源调度管理服务,而是由YARN为其提供资源管理调度服务。

以上

完善