
张安站
Spark是不断壮大的大数据分析解决方案家族中备受关注的新成员。它不仅为分布式数据集的处理提供了一个有效框架,而且以高效的方式处理分布式数据集。它支持实时处理、流处理和批处理,提供了统一的解决方案,因此极具竞争力。本书以源码为基础,深入分析Spark内核的设计理念和架构实现,系统讲解各个核心模块的实现,为性能调优、二次开发和系统运维提供理论支持,为更好地使用Spark Streaming、MLlib、Spark SQL和GraphX等奠定基础。
这本书原理讲得挺好,看使用场景和示例可以找其他书结合。 spark是基于分布式弹性数据集RDD为基础的高性能,易用,通用,生态丰富的准实时流式计算框架,依托zookeeper实现高可用,提供rdd,sparkSQL,dataframe多种操作接口,支持hbase,json,parequt等多种数据对接。运维时关注master异常退出,worker异常退出,excutor异常退出。调优时关注shuffle阶段,搞清楚宽依赖,窄依赖的staege划分。
从整体把关,分部介绍,层次分明表述精炼,作为入门可以选择,工作两三年的也可以从中学到加深对底层运作的理解
写得不好,很多地方没讲明白,信息量很小
算是讲spark的书比较不错的了
首先从生态视角来看 Spark:通用大数据快速处理引擎。可以基于Hadoop上存储的大数据(HDFS、Hive、HBase等任何实现了Hadoop接口的存储系统)进行计算。 Spark按照功能侧重点划分为几个模块:Spark Core、Spark SQL、Spark Streaming、Spark MLlib、GraphX。这几个模块都是基于Spark Core的关键抽象RDD做了扩展。 读完简单总结如下: 1. Spark Core:Spark的核心模块,主要就是对计算引擎本身的抽象和实现。 2. Spark Streaming:以流就是无限个小批次,实现这样来定义的流式计算。(Flink正好相反,本质上就是对一个事物从两个对立面的不同解释,并按照自己的解释实现了各自的流批统一的计算引擎)。 3. Spark MLlib:利用Spark自身作为计算引擎,提供的机器学习库。 4. Spark SQL:提供SQL调用来简化Spark计算引擎的学习成本,方面做数据不同维度的分析和挖掘等。 从计算引擎实现方面分析,共实现5个核心抽象,分别是: (1) Application:Spark应用程序 (2) Driver:驱动程序 (3) Cluster Manager:资源管理器 (4) Worker:计算节点 (5) Executor:执行器 从计算逻辑实现了4个核心抽象,分别是: (1) RDD:弹性分布式数据集 (2) Narrow Dependency:窄依赖 (3) Shuffle Dependency:宽依赖 (4) DAG:有向无环图 从计算调度实现方面的6个核心抽象,分别是: (1) DAGScheduler:有向无环图调度器 (2) TaskScheduler:任务调度器 (3) Job:作业 (4) Stage:调度阶段 (5) TaskSet:任务集 (6) Task:任务 其次从技术选型上来看 Spark作为MapReduce的继承者,Spark主要有三个优点: (1) Spark非常好用。由于高级API剥离了对集群本身的关注,你可以专注于你所要做的计算本身,只需要在自己的笔记本电脑上就可以开发Spark应用。支持交互式使用和复杂算法。 (2) Spark非常快。相对于MapReduce而言,基于内存的计算更多,网络磁盘I/O更少。 (3) Spark是一个通用的计算框架。 * 可以用他来完成更丰富的计算,包括SQL查询、文本处理、机器学习等,而不用学习各种各样的引擎来分别处理这些需求。 * 软件栈中所有程序和高级组件都可以从下层的改进中获益, * 运行整个软件栈的代价变小。部署多个独立软件变成了只需部署一个软件。 对比Mapreduce 1. 优势 (1) 依靠Scala强有力的函数式编程。 (2) Actor通信模式,akka做底层架构。 (3) Spark是基于内存的计算模型,很多计算可以直接在内存中进行,例如map、filter等转换算子,使得其灵活简单;而MapReduce模型死板,很小的一个操作都要经过完整的shuffle,shuffle包含了大量磁盘、网络等I/O。 (4) 数据共享快,省去了mapreduce的shuffle过程中至少三次存入磁盘所带来的额外开销。 (5) Spark的DAG做的好,越靠近编译器,就性能越好,优化也更好。 (6) 任务使用线程启动并执行,比mapreduce使用进程执行任务要有很大优势。 (7) delay scheduling -- 延迟执行。 2. 缺点 真正面对大数据时候,在没有进行调优的情况下,可能会出现各种各样的问题,比如OOM内存溢出。而MapReduce虽然慢,但不至于OOM。 对比Storm 节点 worker与 supervisor、nimbus的区别 进程 executor与 worker区别 线程 core 与executor的区别 任务 task(对应spout/bolt实例) task(对应spout/bolt实例,没有太大区别。
写的非常用功的一本书,特别是调度架构之前没有太多关注,学习之后才发现spark开放出的调度接口给了用户更多的选择。其次是job, stage, task也非常好。因为本书针对的版本比较低,shuffle和storage美中不足,但也很精彩
RDD shuffle 等原理以及Storage概念相关的内容,设计思想和分布式数据库原理有深刻的剖析,值得学习
很不错的书,作者对源码还是很有心得的
作者肯定是看过Spark源码的,但是把自己看过的讲给别人听,这个做的并不好
版本虽然老了点,但看完还是有收获的