《Spark大数据分析实战》——1.1节初识Spark-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Spark大数据分析实战》——1.1节初识Spark

简介:

本节书摘来自华章社区《Spark大数据分析实战》一书中的第1章,第1.1节初识Spark,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.1 初识Spark
Spark是基于内存计算的大数据并行计算框架,因为它基于内存计算,所以提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
1.?Spark执行的特点
Hadoop中包含计算框架MapReduce和分布式文件系统HDFS。
Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储层,融入Hadoop的生态系统,并弥补MapReduce的不足。
(1)中间结果输出
Spark将执行工作流抽象为通用的有向无环图执行计划(DAG),可以将多Stage的任务串联或者并行执行,而无需将Stage的中间结果输出到HDFS中,类似的引擎包括Flink、Dryad、Tez。
(2)数据格式和内存布局
Spark抽象出分布式内存存储结构弹性分布式数据集RDD,可以理解为利用分布式的数组来进行数据的存储。RDD能支持粗粒度写操作,但对于读取操作,它可以精确到每条记录。Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略。
(3)执行策略
Spark执行过程中不同Stage之间需要进行Shuff?le。Shuff?le是连接有依赖的Stage的桥梁,上游Stage输出到下游Stage中必须经过Shuff?le这个环节,通过Shuff?le将相同的分组数据拆分后聚合到同一个节点再处理。Spark Shuff?le支持基于Hash或基于排序的分布式聚合机制。
(4)任务调度的开销
Spark采用了事件驱动的类库AKKA来启动任务,通过线程池的复用线程来避免系统启动和切换开销。
2.?Spark的优势
Spark的一站式解决方案有很多的优势,分别如下所述。
(1)打造全栈多计算范式的高效数据流水线
支持复杂查询与数据分析任务。在简单的“Map”及“Reduce”操作之外,Spark还支持SQL查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算范式。
(2)轻量级快速处理
Spark代码量较小,这得益于Scala语言的简洁和丰富表达力,以及Spark通过External DataSource API充分利用和集成Hadoop等其他第三方组件的能力。同时Spark基于内存计算,可通过中间结果缓存在内存来减少磁盘I/O以达到性能的提升。
(3)易于使用,支持多语言
Spark支持通过Scala、Java和Python编写程序,这允许开发者在自己熟悉的语言环境下进行工作。它自带了80多个算子,同时允许在Shell中进行交互式计算。用户可以利用Spark像书写单机程序一样书写分布式程序,轻松利用Spark搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。
(4)与External Data Source多数据源支持
Spark可以独立运行,除了可以运行在当下的Yarn集群管理之外,它还可以读取已有的任何Hadoop数据。它可以运行多种数据源,比如Parquet、Hive、HBase、HDFS等。这个特性让用户可以轻易迁移已有的持久化层数据。
(5)社区活跃度高
Spark起源于2009年,当下已有超过600多位工程师贡献过代码。开源系统的发展不应只看一时之快,更重要的是一个活跃的社区和强大的生态系统的支持。
同时也应该看到Spark并不是完美的,RDD模型适合的是粗粒度的全局数据并行计算;不适合细粒度的、需要异步更新的计算。对于一些计算需求,如果要针对特定工作负载达到最优性能,还需要使用一些其他的大数据系统。例如,图计算领域的GraphLab在特定计算负载性能上优于GraphX,流计算中的Storm在实时性要求很高的场合要更胜Spark Streaming一筹。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: