spark 运维实战 简介

简介:  Spark 大数据计算框架、架构、计算模型和数据管理策略及 Spark 在工业界的应用。围绕 Spark 的 BDAS 项目及其子项目进行了简要介绍。目前,Spark 生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQL、Spark Streaming、GraphX、 MLlib 等子项目,本章只进行简要介绍,后续章节再详细阐述。


 Spark 大数据计算框架、架构、计算模型和数据管理策略及 Spark 在工业界的应用。围绕 Spark  BDAS 项目及其子项目进行了简要介绍。目前,Spark 生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQLSpark StreamingGraphX MLlib 等子项目,本章只进行简要介绍,后续章节再详细阐述。

 

 

1.1 Spark 是什么

 

Spark 是基于内存计算的大数据并行计算框架。Spark 基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将 Spark 部署在大量廉价硬件之上,形成集群。

 

Spark  2009 年诞生于加州大学伯克利分校 AMPLab。目前,已经成为 Apache 软件基金会旗下的顶级开源项目。下面是 Spark 的发展历程。

 

1Spark 的历史与发展

 

2009 年:Spark 诞生于 AMPLab

 

2010 年:开源。

 

2013  6 月:Apache 孵化器项目。

 

2014  2 月:Apache 顶级项目。

     2014  2 月:大数据公司 Cloudera 宣称加大 Spark 框架的投入来取代 MapReduce 

    2014  4 月:大数据公司 MapR 投入 Spark 阵营,Apache Mahout 放弃 MapReduce

将使用 Spark 作为计算引擎。

 

2014  5 月:Pivotal Hadoop 集成 Spark 全栈。

 

2014  5  30 日:Spark 1.0.0 发布。

 

2014  6 月:Spark 2014 峰会在旧金山召开。

 

2014  7 月:Hive on Spark 项目启动。

 

目前 AMPLab  Databricks 负责整个项目的开发维护,很多公司,如 Yahoo!Intel 

 

参与到 Spark 的开发中,同时很多开源爱好者积极参与 Spark 的更新与维护。

 

AMPLab 开发以 Spark 为核心的 BDAS 时提出的目标是:one stack to rule them all,也

 

就是说在一套软件栈内完成各种大数据分析任务。相对于 MapReduce 上的批量计算、迭代型计算以及基于 Hive  SQL 查询,Spark 可以带来上百倍的性能提升。目前 Spark 的生态系统日趋完善,Spark SQL 的发布、Hive on Spark 项目的启动以及大量大数据公司对 Spark 全栈的支持,让 Spark 的数据分析范式更加丰富。


2Spark 之于 Hadoop

 

更准确地说,Spark 是一个计算框架,而 Hadoop 中包含计算框架 MapReduce 和分布式文件系统 HDFSHadoop 更广泛地说还包括在其生态系统上的其他系统,如 Hbase

 

Hive 等。

 

Spark  MapReduce 的替代方案,而且兼容 HDFSHive 等分布式存储层,可融入

 

Hadoop 的生态系统,以弥补缺失 MapReduce 的不足。 Spark 相比 Hadoop MapReduce 的优势 如下。

spacer.gif 

1)中间结果输出基于 MapReduce 的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于

  任务管道承接的考虑,当一些查询翻译到 MapReduce 任务时,往往会产生多个 Stage,而这些串联的 Stage 又依赖于底层文件系统(如 HDFS)来存储每一个 Stage 的输出结果。

 

Spark 将执行模型抽象为通用的有向无环图执行计划(DAG),这可以将多 Stage 的任务串联或者并行执行,而无须将 Stage 中间结果输出到 HDFS 中。类似的引擎包括 Dryad

 

Tez

 

2)数据格式和内存布局由于 MapReduce Schema on Read 处理方式会引起较大的处理开销。Spark 抽象出分布式内存存储结构弹性分布式数据集 RDD,进行数据的存储。RDD 能支持粗粒度写操作,但对于读取操作,RDD 可以精确到每条记录,这使得 RDD 可以用来作为分布式索引。

Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如 Hash 分区等。 Shark  Spark SQL  Spark 的基础之上实现了列存储和列存储压缩。

 

3)执行策略 MapReduce 在数据 Shuffle 之前花费了大量的时间来排序,Spark 则可减轻上述问题带

 

来的开销。因为 Spark 任务在 Shuffle 中不是所有情景都需要排序,所以支持基于 Hash 的分布式聚合,调度中采用更为通用的任务执行计划图(DAG),每一轮次的输出结果在内存缓存。

 

4)任务调度的开销传统的 MapReduce 系统,如 Hadoop,是为了运行长达数小时的批量作业而设计的,在

 

某些极端情况下,提交一个任务的延迟非常高。

 

Spark 采用了事件驱动的类库 AKKA 来启动任务,通过线程池复用线程来避免进程或线程启动和切换开销。

3Spark 能带来什么

 

Spark 的一站式解决方案有很多的优势,具体如下。(1)打造全栈多计算范式的高效数据流水线

 

Spark 支持复杂查询。在简单的 map  reduce 操作之外,Spark 还支持 SQL 询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。

 

2)轻量级快速处理 Spark 1.0 核心代码只有 4 万行。这是由于 Scala 语言的简洁和丰富的表达力,以及

 

Spark 充分利用和集成 Hadoop 等其他第三方组件,同时着眼于大数据处理,数据处理速度是至关重要的,Spark 通过将中间结果缓存在内存减少磁盘 I/O 来达到性能的提升。

 

3)易于使用,Spark 支持多语言 Spark 支持通过 ScalaJava  Python 编写程序,这允许开发者在自己熟悉的语言环境

 

下进行工作。它自带了 80 多个算子,同时允许在 Shell 中进行交互式计算。用户可以利用 Spark 像书写单机程序一样书写分布式程序,轻松利用 Spark 搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。

 

4)与 HDFS 等存储层兼容 Spark 可以独立运行,除了可以运行在当下的 YARN 等集群管理系统之外,它还可以读取已有的任何 Hadoop 数据。这是个非常大的优势,它可以运行在任何 Hadoop 数据源上,0 HiveHBaseHDFS 等。这个特性让用户可以轻易迁移已有的持久化层数据。(5)社区活跃度高

Spark 起源于 2009 年,当下已有超过 50 个机构、260 个工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是支持一个活跃的社区和强大的生态系统。

 

同时我们也应该看到 Spark 并不是完美的,RDD 模型适合的是粗粒度的全局数据并行计算。不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还是需要使用一些其他的大数据系统。例如,图计算领域的 GraphLab 在特定计算负载性能上优于 GraphX,流计算中的 Storm 在实时性要求很高的场合要比

 

Spark Streaming 更胜一筹。

 

随着 Spark 发展势头日趋迅猛,它已被广泛应用于 Yahoo!Twitter、阿里巴巴、百度、网易、英特尔等各大公司的生产环境中。







相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
SQL 机器学习/深度学习 分布式计算
Spark【基础知识 01】【简介】(部分图片来源于网络)
【2月更文挑战第12天】Spark【基础知识 01】【简介】(部分图片来源于网络)
26 2
|
4月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
66 0
|
4月前
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
37 0
|
4月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
160 0
|
4月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
85 0
|
4月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
89 1
|
1月前
|
存储 分布式计算 Spark
实战|使用Spark Streaming写入Hudi
实战|使用Spark Streaming写入Hudi
39 0
|
1月前
|
分布式计算 Spark
Spark【Spark学习大纲】简介+生态+RDD+安装+使用(xmind分享)
【2月更文挑战第14天】Spark【Spark学习大纲】简介+生态+RDD+安装+使用(xmind分享)
30 1
|
2月前
|
分布式计算 大数据 Java
Spark 大数据实战:基于 RDD 的大数据处理分析
Spark 大数据实战:基于 RDD 的大数据处理分析
120 0
|
3月前
|
机器学习/深度学习 分布式计算 算法
Spark MLlib简介与机器学习流程
Spark MLlib简介与机器学习流程