前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark总结篇(一)

Spark总结篇(一)

作者头像
solve
发布2019-10-30 19:14:10
5930
发布2019-10-30 19:14:10
举报
文章被收录于专栏:大数据技术栈

Spark特点

以下特点来源官网主页,仅做翻译

  • Speed(快) Apache Spark achieves high performance for both batch and streaming data, 实现了在批处理 和 流处理 的高速数据处理, using a state-of-the-art DAG scheduler, a query optimizer, and a physical execution engine. 使用了先进的 DAG 调度,查询优化器 和 物理执行引擎
  • Ease of Use(易用) Write applications quickly in Java, Scala, Python, R, and SQL. 可以使用 Java,Scala,Python,R,SQL 快速构建应用 Spark offers over 80 high-level operators that make it easy to build parallel apps. Spark 提供超过80个高级的操作来轻松的构建分布式应用 And you can use it interactively from the Scala, Python, R, and SQL shells. 并且你可以使用 Scala, Python, R, 和 SQL shells 来进行混合编程
  • Generality(通用) Combine SQL, streaming, and complex analytics. 综合了 SQL处理,流处理 和 复杂的数据分析 Spark powers a stack of libraries including SQL and DataFrames, Spark 提供了一些列的库,包含:SQL and DataFrames(进行sql数据分析) MLlib for machine learning, MLlib 进行机器学习 GraphX, 图计算库 and Spark Streaming. 和 Spark Streaming进行流式计算, You can combine these libraries seamlessly in the same application. 你可以在同一个应用中无缝的组合使用这些库
  • Runs Everywhere(运行在任何地方) Spark runs on Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud. Spark 可以运行在 Hadoop, Apache Mesos, Kubernetes, standalone, 甚至 云端 It can access diverse data sources. 并且其支持访问多种数据源

Spark 和 MapReduce

1.Spark可以基于内存处理数据,MR每次要落地磁盘 2.Spark有DAG有向无环图优化 3.Spark是粗粒度资源申请,MR是细粒度资源申请 4.Spark中有各种算子 ,MR中只有map 和reduce 5.Spark的shuffle 向对于MR来说有自己的优化同时有bypass机制

Spark运行模式

  • 本地模式 开发过程中常用的模式, 适用于本地测试调试,相当于一个单机程序。
  • Standalone 模式 Spark 自带一种资源调度的集群叫 Standalone, 如果将Spark运行在该集群上,我们叫叫做 Standalone 模式。 在生产环境中使用不多,如果需要保证任务的稳定性, 需要单独搭建一个集群,可以考虑
  • Yarn 模式 在国内应该是使用最普遍的模式了吧。 这也是Spark受欢迎的一个重要原因, 毕竟大部分公司都是以 HDFS 作为储存系统, Yarn作为资源调度系统, Spark运行在yarn就可以完美的衔接在一起了。

Spark核心RDD

  • 什么是 RDD? RDD全称 Resilient Distributed Dataset,即 弹性分布式数据集。 既然叫他数据集,那么其当然就是用来存储数据的, 不过网上也大部分认为它是不存数据的, 不过不管你怎么认为,在用户看来, 通过从 Source数据 生成RDD, 那么后续的所有对 该RDD 和 该RDD生成的RDD 操作, 都是作用在 Source数据上的。
  • RDD 的五大特性 源码中有以下注释:
    • A list of partitions RDD 是有一个 分区列表的, 也就是说数据在RDD里面不是一个整体, 而是一个个的分区的。
    • A function for computing each split 这里 function 我更愿意理解成 算子,split 大致等于 分区,所以: 一个算子的计算是作用在每一个的 分区的, 所以分区数越多,那么计算的并行度就越高, 结合第一条,那么提升RDD的并行度,只需要提升其分区数
    • A list of dependencies on other RDDs 这个话是真不太好翻译,但是大概意思就是,RDD 之间是相互依赖的, RDD除了从源数据生成,就只剩下从RDD生成RDD这个方法了。
    • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 可选的,分区器是针对 K-V 格式的 RDD的。 在发送 Shuffle 的时候,分区器决定了每条数据的去向。
    • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file) 可选的,一个首选的位置的列表,可以提供给每个分区的计算的位置。 也就是我们常说的数据本地化,计算向数据移动。
  • RDD宽窄依赖 首先明确,依赖是作用于父子RDD之间的。
    • 窄依赖: 如果一个父RDD的数据只进入到一个子RDD之中, 那么就是窄依赖。 即,一个子RDD是可以接受来自多个 父RDD 的数据的, 只要这些 父RDD 的数据都是进入到该 子RDD 就还是窄依赖
    • 宽依赖 如果一个父RDD的数据进入到多个子RDD之中, 那么这就是宽依赖了。 即,如果一个 父RDD 的数据分配到了多个子RDD 中, 那这就是宽依赖。
  • 为什么要分宽窄依赖? 宽窄依赖主要是为了用来切分 Stage 的, 一个Stage里面的数据是通过pipeline的计算模式运行的, 这也就是说,一个Stage里面的数据计算, 是不需要落地,完全基于内存的。 而Stage之间是会发生 Shuffle,会涉及到数据落地到磁盘。 利用宽窄依赖就可以很好区分那部分运算可以分到一个Stage, 减少落地磁盘的数据,加快计算速度。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.10.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spark特点
  • Spark 和 MapReduce
  • Spark运行模式
  • Spark核心RDD
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档