守护之鲨

Sharkdtu's blog site


  • 首页

  • 归档

  • 标签

  • 关于

  • 搜索
close

Spark 底层网络模块

发表于 2016-12-12   |   分类于 spark

对于分布式系统来说,网络是最基本的一环,其设计的好坏直接影响到整个分布式系统的稳定性及可用性。为此,Spark专门独立出基础网络模块spark-network,为上层RPC、Shuffle数据传输、RDD Block同步以及资源文件传输等提供可靠的网络服务。在spark-1.6以前,RPC是单独通过akka实现,数据以及文件传输是通过netty实现,然而akka实质上底层也是采用netty实现,对于一个优雅的工程师来说,不会在系统中同时使用具有重复功能的框架,否则会使得系统越来越重,所以自spark-1.6开始,通过netty封装了一套简洁的类似于akka actor模式的RPC接口,逐步抛弃akka这个大框架。从spark-2.0起,所有的网络功能都是通过netty来实现。

阅读全文 »

Spark Shuffle原理及相关调优

发表于 2016-11-04   |   分类于 spark

通过文章“Spark Scheduler内部原理剖析”我们知道,Spark在DAG调度阶段会将一个Job划分为多个Stage,上游Stage做map工作,下游Stage做reduce工作,其本质上还是MapReduce计算框架。Shuffle是连接map和reduce之间的桥梁,它将map的输出对应到reduce输入中,这期间涉及到序列化反序列化、跨节点网络IO以及磁盘读写IO等,所以说Shuffle是整个应用程序运行过程中非常昂贵的一个阶段,理解Spark Shuffle原理有助于优化Spark应用程序。

阅读全文 »

Spark Scheduler内部原理剖析

发表于 2016-10-23   |   分类于 spark

通过文章“Spark核心概念RDD”我们知道,Spark的核心是根据RDD来实现的,Spark Scheduler则为Spark核心实现的重要一环,其作用就是任务调度。Spark的任务调度就是如何组织任务去处理RDD中每个分区的数据,根据RDD的依赖关系构建DAG,基于DAG划分Stage,将每个Stage中的任务发到指定节点运行。基于Spark的任务调度原理,我们可以合理规划资源利用,做到尽可能用最少的资源高效地完成任务计算。

阅读全文 »

Spark核心概念RDD

发表于 2016-09-18   |   分类于 spark

RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通过其他RDD转换而创建,为此,RDD支持丰富的转换操作(如map, join, filter, groupBy等),通过这种转换操作,新的RDD则包含了如何从其他RDDs衍生所必需的信息,所以说RDDs之间是有依赖关系的。基于RDDs之间的依赖,RDDs会形成一个有向无环图DAG,该DAG描述了整个流式计算的流程,实际执行的时候,RDD是通过血缘关系(Lineage)一气呵成的,即使出现数据分区丢失,也可以通过血缘关系重建分区,总结起来,基于RDD的流式计算任务可描述为:从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组确定性操作构成的DAG,然后写回稳定存储。

阅读全文 »

Maven 使用本地jar包

发表于 2016-06-24   |   分类于 问题总结

通常maven管理的项目中的依赖都是在远程仓库中的,假如我需要在maven项目中添加一个本地的jar包依赖,该jar包在仓库中是不存在的,可能是项目组前人开发的一个库,但是没发布到maven仓库中。遇到这种情况我们可以通过在pom中指定本地的依赖

阅读全文 »

1…345…7
sharkdtu

sharkdtu

No pains, no gain.

33 日志
11 分类
50 标签
RSS
weibo github
© 2016 - 2025 sharkdtu
由 Hexo 强力驱动
主题 - NexT.Mist