Hadoop - 简介
Hadoop 是一个用 java 编写的 Apache 开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。Hadoop 框架应用程序在跨计算机集群提供分布式存储和计算的环境中工作。Hadoop 旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。
Hadoop架构
Hadoop 的核心有两个主要层,即 -
- 处理/计算层(MapReduce),以及
- 存储层(Hadoop分布式文件系统)。
映射减少
MapReduce 是一种并行编程模型,用于编写分布式应用程序,由 Google 设计,用于在商用硬件的大型集群(数千个节点)上以可靠、容错的方式高效处理大量数据(多 TB 数据集)。MapReduce 程序在 Hadoop 上运行,Hadoop 是 Apache 开源框架。
Hadoop分布式文件系统
Hadoop 分布式文件系统 (HDFS) 基于 Google 文件系统 (GFS),提供设计用于在商用硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。然而,与其他分布式文件系统的区别是显着的。它具有高度容错能力,旨在部署在低成本硬件上。它提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。
除了上述两个核心组件之外,Hadoop框架还包括以下两个模块 -
Hadoop Common - 这些是其他 Hadoop 模块所需的 Java 库和实用程序。
Hadoop YARN - 这是一个用于作业调度和集群资源管理的框架。
Hadoop 是如何工作的?
构建具有重型配置的大型服务器来处理大规模处理是相当昂贵的,但作为替代方案,您可以将许多具有单 CPU 的商用计算机连接在一起,作为单一功能的分布式系统,并且实际上,集群计算机可以读取数据集并行并提供更高的吞吐量。而且,它比一台高端服务器便宜。因此,这是使用 Hadoop 的第一个动机因素,因为它可以跨集群和低成本机器运行。
Hadoop 在计算机集群上运行代码。此过程包括 Hadoop 执行的以下核心任务 -
数据最初分为目录和文件。文件被分为128M和64M(最好是128M)大小统一的块。
然后,这些文件分布在各个集群节点上以进行进一步处理。
HDFS 位于本地文件系统之上,负责监督处理过程。
复制块以处理硬件故障。
检查代码是否成功执行。
执行映射阶段和归约阶段之间发生的排序。
将排序后的数据发送到某台计算机。
为每个作业编写调试日志。
Hadoop的优点
Hadoop框架允许用户快速编写和测试分布式系统。它非常高效,并且会自动在机器之间分配数据和工作,进而利用 CPU 内核的底层并行性。
Hadoop 不依赖硬件来提供容错和高可用性(FTHA),而是 Hadoop 库本身旨在检测和处理应用程序层的故障。
服务器可以动态添加或从集群中删除,Hadoop 可以不间断地持续运行。
Hadoop 的另一大优势是,除了开源之外,由于它基于 Java,所以它可以兼容所有平台。