关于Hadoop生态圈相关组件的介绍

HDFS是Hadoop体系中数据存储管理的基础,它是一个分布式文件系统,具有高容错性,提供高吞吐率的数据访问,能够有效处理海量数据集。

HBase是一个建立在HDFS之上,面向列的针对结构化和半结构化数据的动态数据库。HBase提供了对大规模数据的随机、实时读写访问, HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

Kafka是一种高吞吐量的分布式消息系统,它主要用于处理活跃的流式数据。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。YARN是通用资源管理系统,为上层应用提供统一资源管理调度。

MapReduce是面向大型数据处理的并行计算模型和方法,仅适合离线数据处理。

Spark提供一个通用并行计算框架用于处理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理需求。

Hive是一种数据仓库技术,用于查询和管理存储在分布式环境下的大数据集,通常用于离线分析。

Mahout是一个开源的数据挖掘算法库,实现了一些可扩展的机器学习领域经典算法。

Storm是一个分布式的、容错的实时处理系统。可用于“流处理”之中,实时处理消息并更新数据库。Storm也可用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。

Oozie是 Hadoop 平台的一种工作流调度引擎,用于协调多个Hadoop作业的执行。

Azkaban是一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。

ZooKeeper是一个分布式数据管理和协调框架,保证分布式环境中数据的一致性,是Hadoop组件的一个监管系统。

Hadoop 的运行模式

单机模式

(1)Hadoop的默认模式,安装时不需要修改配置文件。

(2)Hadoop运行在一台计算机上,不需要启动HDFS和YARN。

(3)MapReduce运行处理数据时只有一个JAVA进程,使用本地文件系统进行数据的输入输出。

(4)用于对MapReduce程序的逻辑进行调试,确保程序的正确。

伪分布式模式

(1)Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。

(2)需要启动HDFS和YARN,是相互独立的Java进程。

(3)MapReduce运行处理数据时是每个作业一个独立进程,输入输出使用分布式文件系统。

(4)用来进行学习和开发测试Hadoop程序的执行是否正确。

完全分布式模式

(1)在多台计算机上安装JDK和Hadoop,组成相互连通的集群,需要修改相应的配置文件。

(2)Hadoop的守护进程运行在由多台主机搭建的集群上。

真正的生产环境。

Hadoop 优点

(1)扩容能力强:Hadoop是在可用的计算机集群间分配数据并完成计算任务,这些集群可以方便地扩展到数以千计的节点。

(2)成本低:通过普通廉价的计算机组成服务器集群来分发以及处理数据,相比使用大型机乃至超级计算机成本低很多。

(3)高效率:通过并发数据,Hadoop可以在节点之间动态并行处理数据,使得处理速度非常快。

(4)高可靠性:能自动维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。

Hadoop的核心组件——HDFS

HDFS 定义

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。适合一次写入,多次读出的场景,不支持文件修改,可以过来做数据分析。

优点:

(1)容错性高:主要有多个副本

(2)适合处理大数据:数据规模 可达到 PB级别,文件量能够处理百万这个量级

(3)可构建在廉价机器上

缺点:

(1)数据访问有延时,做不到毫秒级别的

(2)大量小文件不能高效存储,NameNode会占用大量内存

(3) 可追加写入,不可随机修改,不支持并发写入(不支持多线程写入)

HDFS架构图

相关组件的介绍

NameNode

名称节点,HDFS的管理者。

(1)管理HDFS的名字空间,维护管理所有文件的元数据。

(2)管理DataNode上的数据块,决定文件数据块存储到哪个DataNode。

(3)处理客户端的读写请求。

(4)按用户确定的副本策略管理HDFS中数据的副本

DataNode(数据节点)

负责存储数据。

(1)存储实际的数据块,每个HDFS数据块默认大小为128MB,存储在本地文件系统的单独文件中。

(2)处理客户端的读写请求,执行数据块的读和写。

(3)向 NameNode 定期汇报数据块信息,并定时向 NameNode 发送心跳信号保持联系。

FSImage和edits文件

(1)FSImage文件存储文件的元数据,HDFS运行时会将该文件加载到内存中。

(2)edits文件记录对文件的写操作(修改)。

(3)写文件操作只会对内存中的元数据进行修改,不会对FSImage文件进行修改。

SecondaryNameNode

用于合并元数据文件FSImage。

(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。

(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。

SecondaryNameNode,用于合并元数据文件FSImage。

(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。

(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。

Client

就是客户端。

(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;

(2)与 NameNode 交互,获取文件的位置信息;

(3)与 DataNode 交互,读取或者写入数据;

(4) Client提供一些命令来管理 HDFS,比如 NaneNode 格式化;

(5) Client可以通过一些命令来访问 HDFS,比如对 HDFS 增删查改操作;

HDFS - 优缺点

优点:

(1)适合处理大数据:HDFS能够处理TB级甚至PB级的数据,文件数量也可达百万以上。

(2)高容错性:自动保存数据的多个副本,当某一副本丢失,可以自动重备。

(3)低成本运行:HDFS可以运行在廉价的商用计算机上。通过多副本机制提高可靠性。

缺点:

(1)不适合处理低延时的数据访问。

(2)不适合处理大量的小文件:小文件太多会消耗NameNode的内存。同时小文件的寻址时间超过读取时间,也违背了HDFS的设计目标。

(3)不支持并发写入和文件随机修改:HDFS的文件同时只能有一个用户进行写操作,也仅支持文件的数据追加。

二、MapReduce的特点及运行架构

MapReduce是一种用于处理大规模数据集的编程模型和处理框架,最初由Google开发,在后来由Apache Hadoop项目采用,并被广泛应用于分布式计算环境中。它的主要特点和运行架构如下:

MapReduce的特点:

  1. 简单易用:MapReduce模型提供了简单的抽象,使得开发人员可以专注于编写处理数据的逻辑,而不必关注底层的并行和分布式处理细节。
  2. 分布式处理: MapReduce适用于大规模数据集的并行处理。它将输入数据分割成小块,并在多个计算节点上进行并行处理,以加速数据处理过程。
  3. 容错性: MapReduce具有高度的容错性,能够处理计算节点故障。当一个节点失败时,MapReduce会重新调度任务到其他节点上,确保整个作业的完成。
  4. 可扩展性: 可以通过简单地添加更多的计算节点来扩展MapReduce系统的处理能力,使其适应不断增长的数据规模。
  5. 简化编程模型: MapReduce采用了一种简单而灵活的编程模型,将数据处理任务分解为两个主要阶段:Map阶段和Reduce阶段,简化了大规模数据处理的复杂性。
  6. 自动数据分片: MapReduce会自动将输入数据切分为小的数据块,并分配给不同的计算节点进行处理,使得处理任务能够更加均衡地分布在整个集群中。
  7. 并行化处理:MapReduce将任务分解为独立的Map和Reduce阶段,并行处理输入数据集的不同部分,从而有效利用了集群中的计算资源。
  8. 适用于各种类型的计算任务:MapReduce模型适用于各种类型的数据处理任务,包括数据清洗、数据转换、数据分析等。

MapReduce的运行架构:

  1. JobTracker和TaskTracker: 在Hadoop中,MapReduce作业通常由一个主节点(JobTracker)和多个工作节点(TaskTracker)组成。JobTracker负责作业的调度和任务分配,而TaskTracker则在各个计算节点上执行具体的任务。
  2. Map阶段: 输入数据被切分为多个数据块,然后通过一系列的Map任务并行处理。每个Map任务对输入数据执行用户定义的映射函数,生成一组中间键值对(Intermediate key-value pairs)。
  3. 分区和排序: 中间键值对被分区为一组,并在每个分区内进行排序。这一过程的目的是将相同键的所有值都聚集在一起,以便更有效地进行Reduce操作。
  4. Shuffle阶段: 在Shuffle阶段,Map的输出被重新分配到Reduce任务。这一阶段包括数据的排序、分区和传输,确保相同键的所有值被发送到相同的Reduce任务。
  5. Reduce阶段: Reduce任务按照键对相应的值进行聚合和处理。用户定义的Reduce函数被应用于每个键的所有值,生成最终的输出。
  6. 持久化和输出: Reduce任务的输出被写入HDFS(Hadoop分布式文件系统)或其他指定的存储系统,作为MapReduce作业的最终结果。

总体而言,MapReduce通过将大规模数据处理任务分解为独立的Map和Reduce阶段,并允许这些阶段在分布式环境中并行运行,实现了高效的大规模数据处理。

三、spark的特点与MapReduc的区别

spark的特点

快速:
  1. Spark 使用内存计算,能够在内存中高效地处理数据,大大提高了计算速度。相比于传统的基于磁盘的计算框架,如 Hadoop MapReduce,Spark 能够将中间结果保存在内存中,避免了频繁的磁盘读写操作,因此速度更快。
  2. Spark 还引入了基于弹性分布式数据集(RDD)的计算模型,它将数据分片存储在集群的多个节点上,并能够在节点间并行执行操作,进一步提高了处理速度。
易用:
  1. Spark 提供了丰富的高级 API 和易于使用的编程接口,包括 Scala、Java、Python 和 R 等语言的 API,以及 DataFrame 和 Dataset API。这些 API 使得开发者可以以更简洁、更直观的方式编写复杂的数据处理和分析任务,而无需深入了解底层的并行计算原理。
  2. Spark 的交互式 shell 和可视化工具(如 Spark UI)也使得开发者可以方便地调试和优化代码,提高了开发效率。
通用:
  1. Spark 不仅支持批处理任务,还能够处理流式数据、交互式查询、机器学习和图计算等多种工作负载。无论是对实时数据处理、数据挖掘还是机器学习等应用场景,Spark 都能够提供强大的支持。
  2. Spark 还提供了丰富的库和扩展,如 Spark SQL、MLlib、GraphX 和 Spark Streaming 等,使得开发者可以方便地构建各种复杂的数据处理和分析应用。
随处运行:
  1. Spark 可以在各种不同的环境中运行,包括本地机器、集群、云平台和容器化环境等。它支持多种资源管理器,如独立模式、YARN、Mesos 和 Kubernetes,因此可以轻松地部署和运行在各种不同的计算平台上。
  2. Spark 还支持跨平台的部署,使得开发者可以在不同的环境中无缝切换,提高了灵活性和可扩展性。
代码简洁:

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

境中无缝切换,提高了灵活性和可扩展性。

代码简洁:

[外链图片转存中…(img-qQxZ5guQ-1714494464913)]
[外链图片转存中…(img-obLrDGnc-1714494464914)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值