Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,其核心设计包括分布式文件系统(HDFS)和MapReduce编程模型;Hadoop是一个开源的分布式计算框架,旨在帮助用户在不了解分布式底层细节的情况下,开发分布式程序。
它通过利用集群的力量,提供高速运算和存储能力,特别适合处理超大数据集的应用程序。
Hadoop生态圈
Hadoop生态圈是一个由多个基于Hadoop开发的相关工具、库、应用程序、平台和服务组成的生态系统。这个生态系统旨在解决大规模数据处理问题,为用户提供从数据存储、处理到分析的全面解决方案。以下是对Hadoop生态圈主要组成部分的清晰归纳:
核心组件:
HDFS(Hadoop Distributed File System):Hadoop分布式文件系统,用于存储大规模数据集。HDFS将数据划分为多个块,并将这些块分布在集群中的多个节点上,以提供高可靠性和高可扩展性。
MapReduce:一种编程模型,用于处理和分析存储在HDFS中的大规模数据集。MapReduce将复杂的数据处理任务划分为两个阶段:Map阶段和Reduce阶段,从而实现并行处理。
资源管理器:
YARN(Yet Another Resource Negotiator):YARN是Hadoop 2.x版本引入的资源管理器,用于管理集群中的资源(如CPU、内存等)。YARN允许用户在同一集群上运行不同类型的应用程序,如MapReduce、Spark等。
数据存储与仓库:
HBase:一个基于Hadoop的分布式、版本化的非关系型数据库,用于存储结构化数据。HBase提供类似于Bigtable的列式存储,并支持实时读写操作。
Hive:一个基于Hadoop的数据仓库工具,允许用户使用SQL语言查询HDFS中的数据。Hive将SQL查询转换为MapReduce作业,并在Hadoop集群上执行。
数据处理与分析:
Spark:一个开源的大规模数据处理引擎,支持批处理、流处理、交互式查询和机器学习等多种应用场景。Spark基于内存计算,比MapReduce更加高效。
Pig:一个高级数据处理语言,允许用户编写简单的查询来处理大规模数据集。Pig将查询转换为MapReduce作业,并在Hadoop集群上执行。
分布式协调服务:
ZooKeeper:一个分布式协调服务,用于维护Hadoop集群的状态信息,如节点健康状态、数据块位置等。ZooKeeper还提供命名服务、配置管理等功能。
其他工具与服务:
Flume:一个用于收集、聚合和传输大量日志数据的工具,可以将数据发送到HDFS、HBase等存储系统中。
Sqoop:一个用于在Hadoop和结构化数据存储(如关系型数据库)之间传输数据的工具。Sqoop可以将数据从关系型数据库导入到HDFS中,也可以将HDFS中的数据导出到关系型数据库中。
Hadoop生态圈通过整合这些组件和工具,为用户提供了一个完整的大数据解决方案。用户可以根据需求选择适合的组件来构建自己的大数据处理和分析系统。
起源
Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一。在受到Google的MapReduce论文的启发后,Doug Cutting等人开始尝试实现MapReduce计算框架,并将其与NDFS(Nutch Distributed File System)结合,最终发展成为Hadoop。
特点
可靠性:假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
高效性:以并行的方式工作,通过并行处理加快处理速度。它能够在节点之间动态地移动数据,并保证各个节点的动态平衡。
可伸缩性:可以在可用的计算机集簇间分配数据并完成计算任务,这些集簇可以方便地扩展到数以千计的节点中。
高容错性:能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
低成本:依赖于社区服务,因此它的成本比较低,任何人都可以使用。
二、Hadoop 三大核心组件
HDFS(分布式文件系统) -—— 实现将文件分布式存储在集群服务器上
MAPREDUCE(分布式运算编程框架) —— 实现在集群服务器上分布式并行运算
YARN(分布式资源调度系统) —— 帮用户调度大量的 MapReduce 程序,并合理分配运算资源(CPU和内存)
- X和2.X版本的区别
Hadoop1.x:由MapReduce(计算及资源调度)、HDFS(数据存储)和Common(辅助工具)组成
Hadoop2.x:由MapReduce(计算)、Yarn(资源调度)、HDFS(数据存储)和Common(辅助工具)组成
在Hadoop1.x版本的时代,Hadoop中的MapReduce同时要处理业务逻辑运算和资源的调度,耦合性较大,于是在2.X版本增加了Yarn,负责接管资源调度的工作。
1、HDFS
定义
HDFS是一个分布式文件系统,可以将大型数据集分成多个块,并将这些块存储在不同的计算机上,以提高数据的可靠性和可扩展性。
它具有高容错性的特点,设计用来部署在低廉的硬件上,并提供高吞吐量来访问应用程序的数据。
HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。
特点
优点:
(1)高容错性
①数据自动保存多个副本。它通过增加副本的形式,提高容错性。
②某一个副本丢失以后,它可以自动恢复。
(2)适合处理大数据
①数据规模:能够处理数据规模达到 GB 、 TB 、甚至 PB 级别的数据;
②文件规模:能够处理百万规模以上的文件数量,数量相当之大。
(3)可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
(1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
(2)无法高效的对大量小文件进行存储。
①存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件目录和块信息。这
样是不可取的,因为 NameNode 的内存总是有限的;
②小文件存储的寻址时间会超过读取时间,它违反了 HDFS 的设计目标。