Hadoop、Spark与Flink的基础架构及其关系和优异

Hadoop、Spark与Flink的基础架构及其关系和优异

  • 前言
  • Hadoop
    • 基础架构
    • 优点
    • 不足
  • Spark
    • 基础架构
    • 优点
    • 不足
  • Flink
    • 基础架构
    • 优点
    • 不足
  • 结语:大数据框架的选择

前言

Hadoop、Spark和Flink是目前重要的三大分布式计算系统。它们都可以用于大数据处理,但在处理方式和应用场景上有所不同。

Hadoop专为批处理而生,一次将大量数据集输入到输入中,进行处理并产生结果。它用于离线复杂的大数据处理。
Spark定义是一个批处理系统,但也支持流处理。它用于离线快速的大数据处理。
Flink为流和批处理提供了一个运行时。它用于在线实时的大数据处理。

这三个框架在不同的大数据处理场景当中,表现各有优势。因此,最好的方案就是将各自的优势结合起来,实现更高效率地完成大数据处理任务。

*注:
①在线与离线:在线大数据处理是指在应用程序由用户输入驱动时,需要及时响应用户的处理方式。例如,社交网络新闻提要、实时广告服务器、分析工具和CRM应用程序都属于在线大数据处理的范畴。离线大数据处理是指在没有承诺响应用户的情况下进行的处理方式。离线大数据处理提供了对大量数据进行转换、管理或分析的能力。
②批处理与流处理:批处理是指在数据被收集完成后再进行处理。这种方式适用于离线复杂的大数据处理,例如账单、客户订单、工资单等。批处理通常需要较长时间,更适合大量数据的处理。流处理是指实时地对数据进行处理,数据是分段发送到分析工具中的。这种方式适用于在线实时的大数据处理,例如欺诈检测、日志监控、客户行为分析和社交媒体分析等。流处理的延迟通常以秒或毫秒为单位,因为在流处理中,数据在到达磁盘之前会被分析。

Hadoop

基础架构

Hadoop是一个分布式计算系统,它由多个元素构成。最底层是Hadoop Distributed File System(HDFS),它存储Hadoop集群中所有存储节点上的文件。HDFS的上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。此外,Hadoop还包括YARN(Yet Another Resource Negotiator)资源管理器和Common库。

① HDFS:Hadoop Distributed File System(HDFS)是一种分布式文件系统,它能够在多个计算机之间存储大量数据。
② MapReduce:MapReduce是一种编程模型,用于处理大量数据。它将计算任务分解为多个小任务,分别在不同的计算节点上执行,然后将结果汇总起来。
③ YARN:YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,负责管理集群中的计算资源,并调度用户提交的作业。
④ Common:Common库包含了Hadoop所需的各种通用组件和工具,例如配置管理、日志记录和安全管理等。

这些组件共同构成了Hadoop这个强大的分布式计算系统。它们协同工作,能够处理海量数据,并提供高可靠性、高扩展性和高容错性等特性。

优点

① 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。

② 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

③ 高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

④ 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

不足

① 所有的metadata操作都要通过集中式的NameNode来进行,NameNode有可能是性能的瓶颈。

② 单一NameNode、单一Jobtracker的设计严重制约了整个Hadoop可扩展性和可靠性。首先,NameNode和JobTracker是整个系统中明显的单点故障源。再次,单一NameNode的内存容量有限,使得Hadoop集群的节点数量被限制到2000个左右,能支持的文件系统大小被限制在10-50PB,最多能支持的文件数量大约为1.5亿左右。

③ 部分hadoop集群的NameNode重启需要数小时,这大大降低了系统的可用性。

④ 随着Hadoop被广泛使用,面对各式各样的需求,人们期望Hadoop能提供更多特性,比如完全可读写的文件系统、Snapshot、Mirror等等。这些都是当前版本的Hadoop不支持,但是用户又有强烈需求的。

Spark

基础架构

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Spark由SparkCore、Spark SQL、Spark Streaming、GraphX、MLlib等模块组成。
Spark运行架构包括集群资源管理器(Cluster Manager)、多个运行作业任务的工作结点(Worker Node)、每个应用的任务控制结点(Driver)和每个工作结点上负责具体任务的执行进程(Executor)。

① Cluster Manager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。 在YARN模式中为资源管理器。
② Worker:从节点(子节点),负责控制计算节点,启动Executor或Driver。 在YARN模式中为NodeManager,负责计算节点的控制。
③ Driver:运行Appplication的main ()函数并创建SparkContext。
④ Executor:执行器,在worker node 上执行任务的组件,用于启动线程池运行任务。 每个Application拥有独立的一组Executors。
⑤ SparkContext:整个应用的上下文,控制应用的生命周期。

这些组件共同构成了Spark这个强大的分布式计算系统。它们协同工作,能够处理海量数据,并提供高可靠性、高扩展性和高容错性等特性。

优点

① 快速:Spark基于内存进行计算,能够极大地提高大数据处理速度。

② 易用:Spark支持多种语言,包括Java、Scala、Python和R,这使得更多的开发人员能够在自己熟悉的语言环境下进行工作。

③ 通用:Spark提供了多种技术组件,包括Spark RDD、Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX,可以一站式地完成大数据领域的离线批处理、交互式查询、流式计算、机器学习和图计算等常见任务。

④ 随处运行:用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFS、Cassandra、HBase、Hive和任何分布式文件系统读取数据。

不足

① 学习曲线陡峭:相比于Hive,Spark的学习曲线更加陡峭,需要一定的编程基础和技能。

② 内存消耗高:由于使用内存计算引擎,因此需要更多的内存资源,相比于Hive更加消耗计算资源。

Flink

基础架构

Apache Flink是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink能够在所有常见的集群环境中运行,并能以内存速度和任意规模进行计算。Flink支持多种部署模式,包括独立部署、YARN部署、Mesos部署和Kubernetes部署。这些部署模式可以满足不同的应用场景和需求。
Flink的基础架构包括以下几个部分:

① JobManager:负责调度和协调整个Flink作业的执行。
② TaskManager:负责执行Flink作业中的具体任务。
③ Client:负责提交Flink作业到JobManager。
④ ResourceManager:负责管理集群中的资源。

优点

① 高吞吐量:Flink能够以高速度处理大量数据,满足实时数据处理的需求。

② 低延迟:Flink能够快速地对数据进行处理,减少数据处理的延迟。

③ 高性能:Flink能够在有界和无界数据流上进行有状态的计算,提供高性能的数据处理能力。

④ 灵活性:Flink支持多种部署模式,可以满足不同的应用场景和需求。

不足

① 学习曲线陡峭:与spark一样,相比于其他大数据处理框架,Flink的学习曲线更加陡峭,需要一定的编程基础和技能。

② 集成开发应用:在实际上的大数据平台应用当中,Flink也并非是完美的,作为计算引擎,Flink能满足绝大部分的数据处理需求,但是作为系统平台而言,Flink的缺点也是存在的,所以主流的趋势还是与其他平台例如Hadoop进行集成开发应用。

结语:大数据框架的选择

选择合适的大数据处理框架需要根据企业的实际需求来进行。不同的技术框架,在处理数据上各有优缺点。大数据处理框架通常可以分为三类——批处理框架、流处理框架和批处理+流处理框架。例如,Apache Hadoop是一个批处理框架,而Apache Storm和Apache Samza是流处理框架,Apache Spark和Apache Flink则是批处理+流处理框架。
在选择大数据处理框架时,需要考虑以下几个因素:

① 处理需求:根据企业的实际需求,选择适合的大数据处理框架。例如,如果企业需要对大量静态数据进行离线批处理分析,则可以选择Hadoop;如果企业需要对实时数据进行流式计算,则可以选择Storm或Samza;如果企业同时需要批处理和流处理,则可以选择Spark或Flink。

② 性能:不同的大数据处理框架在性能上有所差异,需要根据实际情况选择性能较好的框架。

③ 扩展性:大数据处理往往需要在集群环境中运行,因此需要选择具有良好扩展性的框架,以便在集群规模增加时能够快速扩展。

④ 兼容性:如果企业已经使用了某些大数据技术,例如Hadoop,则需要选择与现有技术兼容的框架。

总之,在选择大数据处理框架时,需要根据企业的实际需求、性能、扩展性和兼容性等因素进行综合考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LSTM数学计算公式

LSTM(长短期记忆网络)是一种循环神经网络(RNN)的变体,常用于处理时间序列相关的任务。下面将简要介绍LSTM的数学推导和公式模型。 在训练一般神经网络模型时,通常用,其中W为权重,X为输入&#…

算法通关村第九关——中序遍历与搜索树

1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…

代码随想录算法训练营day42 | LeetCode 416. 分割等和子集

今天主要学习了一下01背包的二维数组和一维数组的做法,二维数组比较好理解,根据每次将不将物品i放入背包来充分的用到前面的数据遍历数组。两层for循环,物品个数放外边,背包重量放里边。二维数组遍历的时候,里层for循环…

【网络层协议】ARP攻击与欺骗常见的手段以及工作原理

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、ARP攻击的常见手段 第一种:IP…

【健康医疗】Axure用药提醒小程序原型图,健康管理用药助手原型模板

作品概况 页面数量:共 20 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:健康管理,用药助手 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「用药提醒」小程序原型图…

QT使用QXlsx实现对Excel sheet的相关操作 QT基础入门【Excel的操作】

准备:搭建环境引用头文件QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】_吻等离子的博客-CSDN博客 #include "xlsxdocument.h"QTXLSX_USE_NAMESPACE // 添加Xlsx命名空间(https://github.com/dbzhang800/QtXlsxWriter) or QXLSX_USE_NAMESPACE // 添加Xl…

Spring Boot 知识集锦之actuator监控端点详解

文章目录 0.前言1.参考文档2.基础介绍默认支持的端点 3.步骤3.1. 引入依赖3.2. 配置文件3.3. 核心源码 4.示例项目5.总结 0.前言 背景: 一直零散的使用着Spring Boot 的各种组件和特性,从未系统性的学习和总结,本次借着这个机会搞一波。共同学…

Android NDK JNI与Java的相互调用

一、Jni调用Java代码 jni可以调用java中的方法和java中的成员变量,因此JNIEnv定义了一系列的方法来帮助我们调用java的方法和成员变量。 以上就是jni调用java类的大部分方法,如果是静态的成员变量和静态方法,可以使用***GetStaticMethodID、CallStaticObjectMethod等***。就…

『C语言』数据在内存中的存储规则

前言 小羊近期已经将C语言初阶学习内容与铁汁们分享完成,接下来小羊会继续追更C语言进阶相关知识,小伙伴们坐好板凳,拿起笔开始上课啦~ 一、数据类型的介绍 我们目前已经学了基本的内置类型: char //字符数据类型 short …

SpeedBI数据可视化工具:浏览器上做分析

SpeedBI数据分析云是一种在浏览器上进行数据可视化分析的工具,它能够将数据以可视化的形式呈现出来,并支持多种数据源和图表类型。 所有操作,均在浏览器上进行 在浏览器中打开SpeedBI数据分析云官网,点击【免费使用】进入&#…

angular常用命令

文章目录 1. 创建新项目:2. 生成组件:3. 生成模块:4. 生成服务:5. 运行项目:6. 构建项目:其他 在 Angular 开发中,以下是一些常用的 Angular CLI 命令: 1. 创建新项目: …

微服务(多级缓存)

多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时&…

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…

发布 net 项目 到 Docker

背景 因为发布到 centOS8 使用 screen -S 可以,想开机自启 使用 nohup 命令有启动不起来。环境问题不好找,就想尝试用 docker 运行 步骤 在生成的 Dockerfile 文件里增加修改时区指令 因为我们用的都是北京时间所以 创建镜像的时候就调整好 #设置时间…

B站视频码率用户上传视频的视频码率

一般来说,B站用户可以根据自己的视频内容和需求来选择视频的码率,但以下是一些常见的视频码率范围,供用户参考: 标清(SD): 码率范围可能在500 Kbps至1.5 Mbps左右,适用于480p的分辨率…

MATLAB算法实战应用案例精讲-【图像处理】OCR检测方法-CTPNEASTDBNet

目录 CTPN 模型介绍 模型结构 模型loss 模型缺点 EAST 模型介绍 模型结构

【JavaEE基础学习打卡05】JDBC之基本入门就可以了

目录 前言一、JDBC学习前说明1.Java SE中JDBC2.JDBC版本 二、JDBC基本概念1.JDBC原理2.JDBC组件 三、JDBC基本编程步骤1.JDBC操作的数据库准备2.JDBC操作数据库表步骤 四、代码优化1.简单优化2.with-resources探讨 总结 前言 📜 本系列教程适用于JavaWeb初学者、爱好…

自然语言处理从入门到应用——LangChain:链(Chains)-[通用功能:SequentialChain和TransformationChain]

分类目录:《自然语言处理从入门到应用》总目录 SequentialChain 在调用语言模型之后,下一步是对语言模型进行一系列的调用。若可以将一个调用的输出作为另一个调用的输入时则特别有用。在本节中,我们将介绍如何使用顺序链来实现这一点。顺序…

小程序中的页面配置和网络数据请求

页面配置文件和常用的配置项 1.在msg.json中配置window中的颜色和背景色 "navigationBarBackgroundColor": "#efefef","navigationBarTextStyle": "black" 2.可以看到home中的没有发生变化但是msg的发生变化了,这个和前面的…

【STM32RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)

硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 获取当前运行的线程2. 设置调度器钩子函数 二、程序设计1. 头文件包含及宏定义2. 线程入口函数定义3. main函数设…