Spark内部结构解释文档链接合集

以下是一些介绍Apache Spark内部结构和工作原理的信息来源(我将随时更新,如果有错误或其他信息来源,请告知)。
所有的幻灯片和文档都是用英文撰写的,但是长篇文段较少,所以应该可以理解。

整体的形象

    • A Deeper Understanding of Spark’s Internals

https://spark-summit.org/2014/wp-content/uploads/2014/07/A-Deeper-Understanding-of-Spark-Internals-Aaron-Davidson.pdf
Execution modelとShuffleに絞って解説しています(Cachingについては説明していません)

Spark Architecture

http://0x0fff.com/spark-architecture/
日本語訳はこちら

http://qiita.com/kimutansk/items/3496e5b139959e362f02

Master&worker, Java heapの使われ方、RDDのpartition、について説明しています
1.6からの新しいMemory管理については、こちら
http://0x0fff.com/spark-memory-management/
日本語訳はこちら

http://qiita.com/giwa/items/96cc6cc9ea74aae83e2e

Apache Spark Architecture (Nov 7, 2015)

114ページと長いですが、Spark全体のコンポーネントを網羅しています。
Sparkでプログラムを実行したことがある人が、内部構造を理解しようとするとき、最初に眺めるのに最適なスライドだと思います。

Introduction to Apache Spark Internal (May 19, 2015)

DAG scheduler, Task scheduler, Executor, RDD, Block Manager, Shuffleといった構成要素について説明されています

Shuffleは、Hash-basedとSort-basedを説明しています

RDDの説明が比較的詳しい

Mastering Apache Spark

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/
Spark全体のコンポーネントを網羅しています。
Sparkのプログラムにそって、RDDなどを説明してくれている章(Section 2)もあります。
スライドではないので、他に比べて文章が多めです。それでも、クラス間の関係や、実際の実行時の画面キャプチャなど、図絵が多く使われており、わかりやすいと思います。

Spark Internals (May 29, 2014)

RDDやTaskなど、要所のコンポーネントのソースの一部が紹介されています
全体像を掴まれたあとにこれを読むと、ソースが紹介されているので、こういう実装になっているのか、と理解できるかと思います(ただし、2014年の資料なので、コードが古い部分もあります)
ClosureSerializerについて触れている数少ない資料の1つです

Spark Internals

https://github.com/JerryLead/SparkInternals/
日本語訳はこちら

http://qiita.com/kimutansk/items/f47c2a28eda6817db531
http://qiita.com/kimutansk/items/3496e5b139959e362f02
http://qiita.com/kimutansk/items/be5a29c539061ad5a634
http://qiita.com/kimutansk/items/e36db0f22893ee4c428d

Overview, Job logical plan, Job physical plan, shuffle, Master&worker coordination, cache and check point, broad cast,について詳しく書かれています
実装について、ソースコードやデータ構造の絵を使って説明しているので、細かい点もわかりやすいです
詳細を把握したい人はおすすめです。

嵌入式分布式数据库 (RDD)

    • Anatomy of RDD

スライド http://www.slideshare.net/datamantra/anatomy-of-rdd

ビデオ http://blog.madhukaraphatak.com/anatomy-of-rdd/

データの持ち方、計算のされかた、キャッシュの方法、など説明しています
ある程度、ソースコードを読んでからでないと、説明がピンとこないかもしれません。

caching and checkpoint

https://github.com/JerryLead/SparkInternals/blob/master/markdown/english/6-CacheAndCheckpoint.md
全体像、の最後で紹介した資料の6章ですが、cacheについて、概念・実装をデータ構造の絵とともにわかりやすく説明しています

CacheされないRDDのpartitionに関する説明

https://www.quora.com/In-Spark-Where-is-one-RDD-which-hasnt-called-its-cache-or-persist-method-deleted
CacheされないRDDのpartitionは、ただのiteratorとそのSeqなので、使い終わったらどこからも参照がなくなってGCで回収される

Controlling Parallelism in Spark

http://www.bigsynapse.com/spark-input-output
localファイルから、データを読みだした際に生成される、パーティション数の計算方法の説明です

Glom in Spark

http://blog.madhukaraphatak.com/glom-in-spark/
RDDの各パーティションのデータを配列化する、RDD.glom()の説明

Extending Spark API

http://blog.madhukaraphatak.com/extending-spark-api/
カスタムRDDの作り方

Succinct Spark: Queries on Compressed RDDs

https://amplab.cs.berkeley.edu/succinct-spark-queries-on-compressed-rdds/ (Succinct Spark)
https://github.com/amplab/succinct
(RDDの構造の説明とは異なりますが)簡潔データ構造を用いて、圧縮した形でRDD内にデータを持ち、展開することなく演算を行うためのカスタムRDDパッケージの説明とソースコード

洗牌

    • How Spark Beat Hadoop @ 100 TB Daytona GraySort Challenge

P.22-34に、シャッフルの概要、設定できるオプションについて触れています

Spark Architecture: Shuffle

http://0x0fff.com/spark-architecture-shuffle/
日本語訳はこちら

http://qiita.com/giwa/items/08ac5bda1eabb8c597b3
http://qiita.com/kimutansk/items/3496e5b139959e362f02

絵を用いて動作を説明しています
Hash, Sort, Tungsten-sortの3つの動作をそれぞれ説明している資料です

Shuffle Process

https://github.com/JerryLead/SparkInternals/blob/master/markdown/english/4-shuffleDetails.md
全体像、の最後で紹介した資料の4章ですが、shuffleについて、概念・動作をデータ構造の絵とともにわかりやすく説明しています
hashのみを説明しています

Optimizing Shuffle Performance in Spark

http://www.cs.berkeley.edu/~kubitron/courses/cs262a-F13/projects/reports/project16_report.pdf
Sparkの(Hash) shuffleの問題点をあげ、改善方法としてcolumn方向のデータ圧縮、送信側がファイルに各内容をまとめてファイル数を減らす、を提案しています。

Everyday I’m Shuffling – Tips for Writing Better Spark Programs

Shuffleを使うコードを書くときに、性能を低下させないためのtipsが書かれています

A simplified sequence diagram of Spark Shuffle Write

https://www.linkedin.com/groups/7403611/7403611-6103074141341044737
Shuffleの動作のシーケンス図です

数据框架

    • Anatomy of Data Frame API

スライド http://www.slideshare.net/datamantra/anatomy-of-data-frame-api

ビデオ http://blog.madhukaraphatak.com/anatomy-of-spark-dataframe-api/

SQLのData Frame APIに絞って、どのように最適化されるかを説明しています

    • Project Tungsten Nov 12 2015

P.37から、Tungstenの3つのアイデアのうち、データ構造の最適化、コード生成、についてより具体的に説明しています

リンクおきば

(説明は後日)

催化剂 (catalyst)

    • Data Sources API Cassandra Spark Connector Spark 1.5.1 Zeppelin 0.6.0

P.15-18に、簡単にPlan optimizerについて触れています

SparkSQLInternal

http://www.trongkhoanguyen.com/2014/11/introduction-to-sparksql.html
SparkSQLがどのようにRDDのオペレーションとなって最適化され実行されるか説明しています。
http://www.trongkhoanguyen.com/2015/08/sparksql-internals.html
(説明は後日)
https://hxquangnhat.com/2015/04/10/sparksql-internals-part-1-sqlcontext/
(説明は後日)
https://hxquangnhat.com/2015/04/14/arch-sparksql-internals-part-2-sparksql-data-flow/
(説明は後日)

(説明は後日)

リンクおきば

http://www.slideshare.net/maropu0804/20160322-bdi
おすすめ

(説明は後日)

(説明は後日)
http://igm.univ-mlv.fr/~ocure/LIGM_LIKE/Teaching/m2Log/sparkSQLDF.pdf
(説明は後日)

广告
将在 10 秒后关闭
bannerAds