spark技术原理(精华版)~亚当.pdf
Spark是一个基于内存计算的大数据并行计算框架,最初由美国加州伯克利大学的AMP实验室在2009年开发。它能够用于构建大型的、低延迟的数据分析应用程序。Spark之所以与众不同,是因为它的许多核心理念源自学术研究论文,并在2013年成为Apache孵化器项目的一部分后获得了快速发展,现已成为Apache软件基金会中最主要的三大分布式计算系统开源项目之一,其它两个是Hadoop和Storm。 Spark的主要特点是其高性能,尤其是它在基于内存执行的速度比Hadoop MapReduce快100倍以上,即便是基于磁盘执行,也比MapReduce快10倍左右。这一优势让Spark在多任务处理和迭代计算中,能够显著减少I/O时间。其核心是使用DAG执行引擎来支持无环数据流和内存计算,同时通过RDD lineage来避免中间结果的存储,进一步提升速度。RDD(弹性分布式数据集)是Spark的一个核心概念,它是一种只读、具有继承关系(lineage)和惰性调用的分布式内存抽象概念,可以分布在集群中多个节点上进行并行操作。每个RDD可以通过一系列并行操作来转换成不同的RDD,形成一个DAG。 在任务调度方面,Spark采用了阶段(Stage)和任务(Task)的概念,其中作业(Job)由一个或多个RDD组成,而作业会划分为多个阶段,每个阶段由一组任务组成。Spark的任务调度主要通过将作业拆分成具有依赖关系的多个阶段,然后调度执行这些阶段中的任务来实现。 Spark的运行架构包括了集群管理和任务调度的组件。用户编写的Spark应用程序提交到集群后,由集群管理器进行资源分配和任务调度。在Spark中,Executor是运行在工作节点上的进程,负责运行任务并存储数据;Application是用户编写的程序;Job是指定的一系列转换操作;Stage是指作业的调度单位;Task则是运行在Executor上的工作单元。 Spark的使用非常灵活,支持Java、Scala、Python、R等多种语言的API,提供了高层次、简洁的API,相对于使用Hadoop MapReduce的代码量,Spark的代码量要少2-5倍。此外,Spark还提供交互式解释器Spark shell,支持Scala、Python和R语言的交互式编程,方便实时验证和调整程序。 Spark不仅仅是一个独立的集群模式,它还可以运行在Hadoop YARN、Apache Mesos等分布式资源管理框架中,以及Amazon EC2等云服务中,并可以访问HDFS、Cassandra、HBase、Hive等不同的数据源。因此,Spark的运行环境非常广泛。 此外,Spark技术栈非常强大,包含SQL查询、流式计算、机器学习(MLlib)和图算法(GraphX)组件。这些组件可以无缝整合到同一个应用中,以应对各种复杂的计算需求。通过将数据处理、数据分析、机器学习等多种计算模型整合在一个系统中,Spark为大数据应用开发提供了一个全面的解决方案。
剩余15页未读,继续阅读
- 粉丝: 476
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 35 财务汇报部门历年薪酬统计图表.xlsx
- 39 财务工资发放表.xlsx
- 37 财务工资支出上半年年中总结报告.xlsx
- 38 财务分析工资年度开支表.xlsx
- 41 财务公司部门工资开支分析表.xlsx
- 40 财务分析部门工资支出图表.xlsx
- 42 部门员工工资统计表.xlsx
- 45 年度薪酬费用统计表.xlsx
- 44 人事薪酬管理台账.xlsx
- 48 工资对比分析报表模板.xls
- 47 可视化工资表自动统计1.xlsx
- 46 企业员工工资支出预算表.xlsx
- 43 工资收入对比分析表.xlsx
- 50 薪资分析图表.xlsx
- 49 薪酬数据统计分析报表excel模板.xlsx
- 年度公司薪酬调查分析方案(完整版).docx