网站首页 > 技术文章 正文
spark是一种快速、通用、可扩展的大数据分析引擎。spark除了提供核心的api外,为了更方便使用,针对更具体的场景提供了解决方案。spark提供了用于交互查询的spark SQL、流处理spark Streaming、机器学习spark MLlib和图计算spark GraphX。
spark具有如下优点:
与Hadoop提供的Map/Reduce相比,spark速度更快。这得益于其对缓存的充分利用。我们知道Map/Reduce模式下,在shuffle阶段,Map的结果会被写入本地文件中,Reduce时会通过网络去读取文件中的数据。在Reduce任务完成之后,结果又会被写到HDFS中。在一次Map/Reduce任务中,数据会被多次写入到磁盘中。而spark则会充分的利用内存。spark在计算时,会将job划分成几个stage,不存在依赖的stage是可以并行执行的。在stage内部,数据没有超出内存阈值的情况下,是不会写入磁盘的。在不同stage之间的shuffle阶段,spark也会尽量本地化的调度任务,避免数据的移动。
spark同时也具有很好的易用性。spark提供了java、scala和python编程接口,上面我们也看到针对不同的具体场景提供了不同的实现。RDD的设计,简化了学习成本。另外,spark提供了丰富的算子,便于程序的编写。
良好的扩展性。目前支持Standalone、Mesos、Yarn和k8s的调度模式。
spark的大体架构如下:
其中,Driver是用户编写的数据处理逻辑,这个逻辑中包含用户创建的SparkContext。SparkContext是用户逻辑与spark集群主要的交互接口,它会和Cluster Manager交互,包括申请计算资源等。Cluster Manager负责集群的资源管理和调度,现在支持Standalone、Mesos、Yarn和k8s。Work Node是集群中可以执行任务的节点。Excutor是一个Work Node上为某应用启动的一个进程,该进程负责运行任务,并且负责将数据存于内存或者磁盘上。Task是被调度到某个Executor上的计算单元。每个应用都有各自独立的Executor,计算最终在计算节点的Executor中执行。
猜你喜欢
- 2024-10-12 大佬用10小时就把Spark讲完了,附6大技术文档
- 2024-10-12 浅析图数据库 Nebula Graph 数据导入工具——Spark Writer
- 2024-10-12 Spark Streaming 和 Flink 谁是数据开发者的最爱?
- 2024-10-12 分享几点 Spark Streaming 调优实践经验
- 2024-10-12 大数据学习之计算天下——SPARK的那些事
- 2024-10-12 第二篇|Spark core编程指南 spark编程软件
- 2024-10-12 Spark计算引擎 spark是基于什么计算引擎
- 2024-10-12 Spark Shuffle机制 sparkshuffle原理
- 2024-10-12 一文带你了解SparkStreaming窗口函数
- 2024-10-12 深度预警:Spark运行原理 简述spark的运行架构和原理
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)