Spark总结篇(一)

这是一篇是划水的。。。。随便看看就好!!!!

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,
    减少落地磁盘的数据,加快计算速度。

#####################################################################################
感觉Spark很多东西网上都是有现成的,写起来也没啥成就感,
暂时还是先放放吧~~后续补充一下各个知识点的关键字,
大家网上搜索一下也就完事了,
没必要自己整~~~~

Spark资源调度

Spark任务调度

二次排序问题

分组取topN问题#

广播变量 累加器

Spark-Shuffle

Shuffle文件的寻址

内存管理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介之前罗嗦一句:以下内容版本归原作者,本来本着分享精神我不应该要这一分 的,但是我发现整理这些资源竟然整整花了我超过一个小时,而且原先地址的资源有 些不能下载,我是千方百计找到所有的ppt,做个合集方便大家,节约大家的时间吧, 以下正题! 2015 中国大数据技术大会已经圆满落幕,本届大会,以更加国际化的视野,从政 策法规、技术实践和产业应用等角度深入探讨大数据落地后的挑战,作为大数据产业 界、科技界与政府部门密切合作的重要平台,吸引了数千名大数据技术爱好者到场参 会。 以下为合集列表: 1. 启明星辰公司副总裁潘柱廷:2016 年大数据技术发展趋势解读 2. Databricks公司联合创始人、Spark首席架构师辛湜:Spark发展:回顾2015,展望 2016 3. 京东云平台总架构师、系统技术部负责人刘海锋 :从2014 到2016,大规模内存数 据库演进之路 4. Hulu 资深研发主管梁宇明 :Voidbox - Docker On YARN在Hulu的实践 5. Pivotal 研发总监姚延栋:开源大数据引擎:分布式Greenplum数据库内核分析 6. 阿里巴巴iDST语音组高级专家鄢志杰 :Deep Learning助力客服小二:数据技术及 机器学习在客服中心的应用 7. 小米金融技术主管方流: 大数据在互联网金融中的应用 8. 新加坡管理大学信息系统学院教授朱飞达 :大数据与金融创新:从研究到实战 9. 宜信大数据创新中心首席数据科学家项亮: 大数据在信用风险管理中的应用 10. 南京大学计算机系PASA大数据实验室教授黄宜华 :Octopus(大章鱼):基于R语 言的跨平台大数据机器学习与数据分析系统 11. 百度基础架构部高级架构师沈国龙 :BML百度大规模机器学习云平台实践 12. 新浪微博算法技术总监姜贵彬:大数据驱动下的微博社会化推荐 13. FreeWheel技术副总裁李旸:FreeWheel基于大数据的新兴视频广告测量实践 14. 阿里巴巴数据安全部阿里数据安全小组总监郑斌:大数据下的数据安全 15. 数美公司联合创始人兼CTO梁堃:Sentry金融实时风控系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值