题目
什么是 Hadoop?Hadoop 生态系统?Hadoop 优点?
答案
Hadoop 是**基于 Java 的开源分布式计算框架**,可为应用管理大量数据的存储和处理。Hadoop 使用分布式存储和并行处理来处理大数据和分析作业,将工作负载分解为可同时运行的较小工作负载。
Hadoop 官方文档:https://hadoop.apache.org/docs/r1.0.4/cn/index.html
Hadoop 框架主要由四个模块组成,这四个模块协同运行以形成 Hadoop 生态系统:
- **Hadoop 分布式文件系统 (HDFS)**:作为 Hadoop 生态系统的主要组成部分,HDFS 是一个分布式文件系统,在该系统中,各个 Hadoop 节点都对其本地存储空间中的数据执行操作。这样可以消除网络延迟,实现对应用数据的高吞吐量访问。此外,管理员无需预先定义架构。
- **Yet Another Resource Negotiator (YARN)**:YARN 是一个资源管理平台,负责管理集群中的计算资源并使用它们来调度用户的应用。它在整个 Hadoop 系统上执行调度和资源分配。
- **MapReduce**:MapReduce 是一个用于大规模数据处理的编程模型。在 MapReduce 模型中,较大数据集的子集和处理子集的指令会被分派到多个不同的节点,其中每个子集都由一个节点与其他处理作业并行处理。处理结果后,各个子集会合并到一个更小、更易于管理的数据集中。
- **Hadoop Common**:Hadoop Common 包括其他 Hadoop 模块使用和共享的库和实用程序。
基本的工作原理是客户端将数据输入到 Hadoop 中,HDFS 用于处理元数据和分布式文件系统,MapReduce 会处理和转换数据,最后,YARN 在整个计算集群中划分作业。
除了 HDFS、YARN 和 MapReduce 以外,Hadoop 拥有庞大的开源工具生态系统,可以增强和扩展核心模块的功能,主要软件工具包括:
- [**Apache Hive**](https://hive.apache.org/):一种数据仓库工具,提供类 SQL 的查询语言(HiveQL),将 SQL 转换为 MapReduce/Tez/Spark 任务。
- [**Apache HBase**](https://hbase.apache.org/):一种基于 HDFS 的 NoSQL 分布式数据库
- [**Apache Pig**](https://pig.apache.org/):一种在 MapReduce 上用作抽象层的工具,用于分析大量数据,并启用过滤、排序、加载和加入等功能
- [**Apache Impala**](https://impala.apache.org/):开源的大规模并行处理 SQL 查询引擎,通常与 Hadoop 搭配使用
- [**Apache Sqoop**](https://sqoop.apache.org/):一种命令行界面应用,用于在关系型数据库和 Hadoop 之间高效传输批量数据
- [**Apache ZooKeeper**](https://zookeeper.apache.org/):一种开源服务器,能够在 Hadoop 中实现可靠的分布式协调;一项用于“维护配置信息、命名、提供分布式同步和提供群组服务”的服务
- [**Apache Oozie**](https://oozie.apache.org/):Hadoop 作业的工作流调度器
**Hadoop 优点**:
- 可伸缩性:Hadoop 是快速存储和处理海量数据的主要工具之一, 它通过使用分布式计算模型来实现这一点,该模型支持快速处理可通过添加计算节点快速扩缩的数据。
- 费用低:作为一个可以在商品硬件上运行并且拥有庞大的工具生态系统的开源框架,Hadoop 是存储和管理大数据的低成本方案。
- 灵活性:Hadoop 可提供数据存储的灵活性,因为数据在存储之前不需要预处理,这意味着组织可以存储任意数量的数据,并在以后使用。
- 弹性:作为一种分布式计算模型,Hadoop 支持容错和系统弹性,这意味着,如果其中一个硬件节点发生故障,作业会重定向到其他节点。存储在一个 Hadoop 集群中的数据会在系统内的其他节点上复制,以防范硬件或软件故障。
