- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数据计算平台《大数据导论》课程Introduction to big data
Spark整体架构和模块Spark架构01
1Spark架构
架构及生态spark 与?hadoop运行流程及特点standalone模式yarn集群RDD运行流程SparkSparkSpark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。
Apache SparkSparkSQLSparkStreamingMLlibGraphXSpark架构以及生态通常当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时也可以选择利用spark集群强大的计算资源,并行计算,其架构示意图如上。本地运行模式独立运行模式EC2MesosYarnHDFS Hbase , etc
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一样处理实时数据MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作Spark架构以及生态
Spark架构组成图Driver ProgramSparkContextClusterManagerWorker NodeExecutorcacheTaskTaskWorker NodeExecutorcacheTaskTask
Spark架构组成图Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker。 在YARN模式中为资源管理器 Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。 Driver: 运行Application 的main()函数 Executor:执行器,是为某个Application运行在worker node上的一个进程
Spark运行流程图资源管理器分配并监控资源使用状况资源汇报资源使用状况RDD对象构建DAG图DAG Scheduler拆分成StageTask Scheduler提交和监控TaskDAG图Task集1 注册并申请资源4 注销Task3 注册并申请Task2 分配资源
1. 构建Spark Application的运行环境,启动SparkContext2. SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend 3. Executor向SparkContext申请Task4. SparkContext将应用程序分发给Executor5. SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行6. Task在Executor上运行,运行完释放所有资源Spark运行流程图
Spark运行特点 每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行Task。这种Application隔离机制是有优势的,无论是从调度角度看(每个Driver调度他自己的任务),还是从运行角度看(来自不同Application的Task运行在不同JVM中),当然这样意味着Spark Application不能跨应用程序共享数据,除非将数据写入外部存储系统Spark与资源管理器无关,只要能够获取executor进程,并能保持相互通信就可以了提交SparkContext的Client应该靠近Worker节点(运行Executor的节点),最好是在
文档评论(0)