ITPub博客

首页 > 大数据 > Spark > spark

spark

Spark 作者:mcxiaoracle 时间:2022-07-05 00:24:28 0 删除 编辑

Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的


Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。


Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据


Llib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。



GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作





架构组成:

Spark架构的组成图如下:


Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器



Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。


Driver: 运行Application 的main()函数


Executor:执行器,是为某个Application运行在worker node上的一个进程



Spark与hadoop:


Hadoop有两个核心模块,分布式存储模块HDFS和分布式计算模块Mapreduce


spark本身并没有提供分布式文件系统,因此spark的分析大多依赖于Hadoop的分布式文件系统HDFS


Hadoop的Mapreduce与spark都可以进行数据计算,而相比于Mapreduce,spark的速度更快并且提供的功能更加丰富


构建Spark Application的运行环境,启动SparkContext



SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,


SparkContext将应用程序分发给Executor

SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行

Task在Executor上运行,运行完释放所有资源



每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行Task。这种Application隔离机制是有优势的,无论是从调度角度看(每个Driver调度他自己的任务),还是从运行角度看(来自不同Application的Task运行在不同JVM中),当然这样意味着Spark Application不能跨应用程序共享数据,除非将数据写入外部存储系统

Spark与资源管理器无关,只要能够获取executor进程,并能保持相互通信就可以了

提交SparkContext的Client应该靠近Worker节点(运行Executor的节点),最好是在同一个Rack里,因为Spark Application运行过程中SparkContext和Executor之间有大量的信息交换

Task采用了数据本地性和推测执行的优化机制












推荐阅读:

https://baijiahao.baidu.com/s?id=1717418788218668344&wfr=spider&for=pc







来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2904221/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: pl developer
请登录后发表评论 登录
全部评论
数据方向,了解oracle ,IBM DB2 730

注册时间:2019-09-30

  • 博文量
    286
  • 访问量
    226644