Skip to content

大数据-02-Hadoop #33

@sunorry

Description

@sunorry

大数据的技术更关心数据,所以存储、计算、传输大规模数据是要考虑的核心要素。

传统的软件计算处理模型是“输入 -> 计算 -> 输出”。在大数据时代,你能想象到一个程序在读取 PB 级数据的场景吗?,所以他们在架构思路上就有很大的不同,1. 通过上万台计算机构建大数据计算处理集群;2. 利用更多的宽带,内存,磁盘,CPU 去计算处理。

为了解决这种计算场景问题,最早由 Google 实现并通过论文发表出来,这套方案的核心思想是,既然数据是庞大的,而程序要比数据小得多,将数据输入给程序是不划算的,那就反其道而行之,将程序分发到数据所在的地方进行计算,也就是移动计算比移动数据更划算。

Hadoop 主要由三部分组成:

  • 分布式文件系统 HDFS
  • 分布式计算框架 MapReduce
  • 分布式集群资源调度框架 Yarn

HDFS

关于 HDFS 如何解决下面技术细节不在本文范围内:

  1. 数据存储容量的问题
  2. 数据读写速度问题
  3. 数据可靠性问题

分布式文件存储是分布式计算的基础。HDFS 设计的目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当做一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

HDFS 关键组件有两个:

  • DataNode 负责文件数据的存储和读写操作
    • HDFS 将文件数据分割成若干数据块(Block),每个 DataNode 存储一部分数据块,这样文件就分布存储在整个 HDFS 服务器集群中
  • NameNode 负责整个分布式文件系统的元数据(MetaData)管理
    • 文件路径名、数据块的 ID 以及存储位置等信息

MapReduce

解决大规模数据分布式计算的方案 --- MapReduce。

MapReduce 的出现,使得大数据计算通用编程成为可能。只要遵循 MapReduce 编程模型编写业务代码,就可以运行在 Hadoop 分布式集群上,无需关心分布式计算是如何完成的。

它包括 Map 和 Reduce 两个过程:

  • Map 的主要输入是一对 <Key, Value> 值,输出一对 <Key, Value>
  • 将 <Key, Value> 输入 reduce,经过计算输出 0 个或多个 <Key, Value> 对

YARN

分布式集群资源调度框架

最早的 Hadoop 并没有 Yarn,它在 MapReduce 应用程序的启动过程中,最重要的就是要把 MapReduce 程序分发到大数据集群的服务器上,这个过程有 MapReduce 自己完成。导致的缺点就是服务器集群资源调度管理和 MapReduce 执行过程耦合在一起,如果想要在当前集群中运行其他计算任务,如 Spark 或 Storm,就无法统一使用集群中的资源了。后来 Yarn 从 MapReduce 中分离出来,成为一个独立的资源调度框架。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions