SlideShare a Scribd company logo
1 of 24
1IBM Spark 1
Beyond Shuffling
Apache Spark のスケールアップのためのヒントとコツ
自己紹介
名前は Holden Karau です
女性
IBM のソフトウェア・エンジニア
Alpine、Databricks、Google、Foursquare、および Amazon での勤務経験があります
「Learning Spark & Fast Data processing with Spark」の共著者
来年出版される Spark のパフォーマンスに関する最新の書籍*の共著者
@holdenkarau
Slideshare http://www.slideshare.net/hkarau
Linkedin https://www.linkedin.com/in/holdenkarau
3
3IBM Spark 3
本日のアジェンダ
皆さんについて
RDD の再利用 (キャッシング、永続化レベル、およびチェックポイント機能)
キー・バリュー・データの処理
group キーの使用が危険な理由と対処方法
Spark アキュムレーターに関するベスト・プラクティス*
Spark SQL がすばらしい理由
Spark MLLib のパフォーマンスを高めるための将来の機能強化に関する説明
4
4IBM Spark 4
本日参加されたすばらしい皆さんについて
すばらしい人々
Apache Spark に関する知識がある
Apache Spak のジョブをスケールアップしたい
Lori Erickson
5
5IBM Spark 5
猫の写真は以下から取ったものです。 http://galato901.deviantart.com/art/Cat-on-Work-Break-173043455
Cocoa Dream による写真
6
6IBM Spark 6
RDD の再利用について (標準機能として利用
できるようになりました)
RDD を再利用する予定がある場合は、どうすべきでしょうか?
メモリーにうまく収まる場合は、メモリー上にキャッシングする
別のレベルで永続化する
「MEMORY」、「MEMORY_ONLY_SER」、「MEMORY_AND_DISK」、「
MEMORY_AND_DISK_SER」
チェックポイント機能を使用
ノイズを多く含むデータのクラスター
_2 & checkpointing」が役立つ場合があります
Richard Gillin
7
7IBM Spark 7
キー・バリュー・データに関する考慮ポイント
キーはどのように分散しているのか?
どのような集計機能を使用する必要があるのか?
データを特定の順序で並べる必要があるのか?
他の RDD を結合を行うのか?
どのようなパーティショナーを使用するのか?
eleda 1
8
8IBM Spark 8
キーの不均衡とその問題点
キーが均等に分散していない
郵便番号ごとの売上データや都市ごとのレコードなど
groupByKey によって大量の処理が発生する (簡単に処理が中断する)
非常にアンバランスなパーティションが発生することがある
かなりのキーの不均衡が発生すると、sortByKey であっても障害が発生することがある
遅延ノード (不均衡なシャーディングによって一部のタスクの処理時間が他に比べてずっと長くなる場合がある)
Mitchell
Joyce
9
9IBM Spark 9
groupByKey によって発生する問題
非常に大きな問題を引き起こします
同じキーを持つすべてのレコードを単一のレコードにグループ化
すぐに reduce 演算 (集計処理など) を行った場合でも、上記が発生
データのサイズが大きすぎてメモリーに収まらないため、ジョブで障害が発生する
SQL 環境を使用すればこの問題を解決できる
PROgeckoam
10
10IBM Spark 10
groupByKey を使用した単語数計算のプログラムの再確認
val words = rdd.flatMap(_.split(" "))
val wordPairs = words.map((_, 1))
val grouped = wordPairs.groupByKey()
grouped.mapValues(_.sum)
11
11IBM Spark 11
その後、「通常」版のプログラムを確認
val words = rdd.flatMap(_.split(" "))
val wordPairs = words.map((_, 1))
val wordCounts = wordPairs.reduceByKey(_ + _)
wordCounts
12
12IBM Spark 12
どのような変更を行ったのでしょうか?
reduceByKey
データ型が同じ場合にうまく機能する (この集計を行うプログラムの場合など)
aggregateByKey
データ型が同じである必要がない (統計情報のモデルを計算する場合など)
Spark が reduce 演算を実施し、リストの作成をスキップすることができる
13
13IBM Spark 13
問題を引き起こすのはシャッフルだけでしょうか?
キー順にソートすると、すべてのレコードが同じパーティションに配置される場合がある
パーティション・サイズの制限 (2 GB 程度) の問題が発生することがある
または、パフォーマンスが悪化する
そのため、上記のとおりデータを処理し、キーに無意味な値を追加することが可能
(94110, A, B)
(94110, A, C)
(10003, D, E)
(94110, E, F)
(94110, A, R)
(10003, A, R)
(94110, D, R)
(94110, E, R)
(94110, E, R)
(67843, T, R)
(94110, T, R)
(94110, T, R)
PROTodd
Klassy
14
14IBM Spark 14
Spark のアキュムレーター
障害が発生したレコードをトラッキングするための卓越した方法を提供
ダブルカウントによって、正確な結果が得られなくなる
小さな変更が発生すると、これまでうまく機能して機能がうまく機能しなくなる
特定の条件において、相対ルールで問題を解決できる場合がある*
Found Animals Foundation Follow
15
15IBM Spark 15
アキュムレーターを使用して検証を行う
val (ok, bad) = (sc.accumulator(0), sc.accumulator(0))
val records = input.map{ x => if (isValid(x)) ok +=1 else bad += 1
// Actual parse logic here
}
// An action (e.g. count, save, etc.)
if (bad.value > 0.1* ok.value) {
throw Exception("bad data - do not use results")
// Optional cleanup
}
// Mark as safe
P.S: If you are interested in this check out spark-validator (still early stages).
Found Animals Foundation Follow
16
16IBM Spark 16
Spark SQL によってパフォーマンスが改善するケースとは?
構造化データまたは半構造化データを処理する場合
それほど複雑でない*処理が利用できれば、それでも構わない場合
データのサブセットに対してのみ処理を行う必要がある場合
処理対象の最も高速なデータでさえ読み取りが行われない
この手法については標準の手法であると説明しましたが、一部卓越した手法**が利用できる
ようになりました。
内部機能を活用することで実現
** この卓越した手法を活用すると、スタックのオーバーフローが発生することがあります。すべての状態でこの手法が有効と
は限りません。この手法を試す前には、最寄りの Spark の担当部門までご相談ください。
Matti Mattila
17
17IBM Spark 17
このようなケースで Spark SQL を活用するメリット
スペースを効率的に使用するカラムナー処理とキャッシングによってデータの表示が可能
処理をデータ・ストアにプッシュダウン可能
オプティマイザーが処理の内部を検証することが可能
通常の Spark では、処理の内部を検証することで (min(_, _)) と (append(_, _)) の違いを検出することは
できない
Matti Mattila
18
18IBM Spark 18
レビュー: Spark の機械学習に codegen を組み込む
Spark SQL のコード生成に基づく
最初のドラフトには Quasiquote を使用
Janino に切り替えることで Java でのコンパイルに対応
最初のドラフトは Gradient Boosted Tree を使用
データベースの処理に基づく
最初のドラフトは Quasiquote を使用
スピーディーな処理のために Java を採用
詳細については、SPARK-10387 を参照
Jon
19
19IBM Spark 19
すべての人*にとって reduce 処理は必須であるため、さら
に処理を迅速化するには
reduce と aggregate にはツリー構造のバージョンがある
無償の map サイドの reduce 機能は既に提供済み
しかし、さらに処理を迅速化するこが可能**
** さらに先進的なバージョンを作成することも可能
20
20IBM Spark 20
@Override
public double call(Vector input) throws
Exception {
if (input.apply(1) <= 1.0) {
return 0.1;
} else {
if (input.apply(0) <= 0.5) {
return 0.0;
} else {
return 2.0;
}
}
}
(1, 1.0)
0.1 (0, 0.5)
0.0 2.0
生成されたコードの例 Glenn Simmons
21IBM Spark 21
追加のリソース
プログラミング・ガイド (Java、Python、Scala に関する資料もあります)
http://spark.apache.org/docs/latest/
書籍
ビデオ
次のイベントに参加ください
Spark に関するお問い合わせへの対応
今後のイベントを確認するには、Twitter で私をフォローしてください
https://twitter.com/holdenkarau
このアンケートに回答して、次の日付を選択してください http://bit.ly/spOffice1
raider of gin
22IBM Spark 22
Learning Spark
Fast Data
Processing with
Spark
(内容は多少古い)
Fast Data
Processing with
Spark
(第 2 版)
Advanced
Analytics with
Spark
近日中に発売:
Spark in Action
23IBM Spark 23
Spark のビデオ
Apache Spark の Youtube チャンネル
YouTube 上の Spark のビデオ -
http://bit.ly/holdenSparkVideos
Spark Summit 2014 のトレーニング
Paco の Introduction to Apache Spark
24
24IBM Spark 24
Quinn Dombrowski による猫の写真
ありがとうございました!
Spark のテストを現在実施中です。
以下からぜひアンケートにご協力ください。
http://bit.ly/holdenTestingSpark
最終的な結果は、@holdenkarau からツイートします。

More Related Content

What's hot

PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...Holden Karau
 
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証Recruit Technologies
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame IntroductionYu Ishikawa
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Hadoop / Spark Conference Japan
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Kazuaki Ishizaki
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介Sotaro Kimura
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦幹雄 小川
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Sotaro Kimura
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会Satoshi Nagayasu
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみたJiro Hiraiwa
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 

What's hot (20)

PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
 
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証
レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
SparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizakiSparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizaki
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみた
 
Survey of Apache Spark
Survey of Apache SparkSurvey of Apache Spark
Survey of Apache Spark
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 

Viewers also liked

Introduction to Spark ML
Introduction to Spark MLIntroduction to Spark ML
Introduction to Spark MLHolden Karau
 
Beyond shuffling - Strata London 2016
Beyond shuffling - Strata London 2016Beyond shuffling - Strata London 2016
Beyond shuffling - Strata London 2016Holden Karau
 
Spark with Elasticsearch
Spark with ElasticsearchSpark with Elasticsearch
Spark with ElasticsearchHolden Karau
 
Beyond shuffling global big data tech conference 2015 sj
Beyond shuffling   global big data tech conference 2015 sjBeyond shuffling   global big data tech conference 2015 sj
Beyond shuffling global big data tech conference 2015 sjHolden Karau
 
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Holden Karau
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Holden Karau
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016Holden Karau
 
Getting started with Apache Spark in Python - PyLadies Toronto 2016
Getting started with Apache Spark in Python - PyLadies Toronto 2016Getting started with Apache Spark in Python - PyLadies Toronto 2016
Getting started with Apache Spark in Python - PyLadies Toronto 2016Holden Karau
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache SparkHolden Karau
 
Getting the best performance with PySpark - Spark Summit West 2016
Getting the best performance with PySpark - Spark Summit West 2016Getting the best performance with PySpark - Spark Summit West 2016
Getting the best performance with PySpark - Spark Summit West 2016Holden Karau
 
Streaming & Scaling Spark - London Spark Meetup 2016
Streaming & Scaling Spark - London Spark Meetup 2016Streaming & Scaling Spark - London Spark Meetup 2016
Streaming & Scaling Spark - London Spark Meetup 2016Holden Karau
 
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Holden Karau
 

Viewers also liked (13)

Introduction to Spark ML
Introduction to Spark MLIntroduction to Spark ML
Introduction to Spark ML
 
Beyond shuffling - Strata London 2016
Beyond shuffling - Strata London 2016Beyond shuffling - Strata London 2016
Beyond shuffling - Strata London 2016
 
Spark with Elasticsearch
Spark with ElasticsearchSpark with Elasticsearch
Spark with Elasticsearch
 
Beyond shuffling global big data tech conference 2015 sj
Beyond shuffling   global big data tech conference 2015 sjBeyond shuffling   global big data tech conference 2015 sj
Beyond shuffling global big data tech conference 2015 sj
 
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)Effective testing for spark programs scala bay preview (pre-strata ny 2015)
Effective testing for spark programs scala bay preview (pre-strata ny 2015)
 
Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016Testing and validating spark programs - Strata SJ 2016
Testing and validating spark programs - Strata SJ 2016
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016
 
Getting started with Apache Spark in Python - PyLadies Toronto 2016
Getting started with Apache Spark in Python - PyLadies Toronto 2016Getting started with Apache Spark in Python - PyLadies Toronto 2016
Getting started with Apache Spark in Python - PyLadies Toronto 2016
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Getting the best performance with PySpark - Spark Summit West 2016
Getting the best performance with PySpark - Spark Summit West 2016Getting the best performance with PySpark - Spark Summit West 2016
Getting the best performance with PySpark - Spark Summit West 2016
 
Streaming & Scaling Spark - London Spark Meetup 2016
Streaming & Scaling Spark - London Spark Meetup 2016Streaming & Scaling Spark - London Spark Meetup 2016
Streaming & Scaling Spark - London Spark Meetup 2016
 
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...Beyond Shuffling  - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
Beyond Shuffling - Effective Tips and Tricks for Scaling Spark (Vancouver Sp...
 

Similar to JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ

Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jlShintaro Fukushima
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜x1 ichi
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめKenichi Sonoda
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache SparkについてBrainPad Inc.
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Tanaka Yuichi
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
Apache Sparkやってみたところ
Apache SparkやってみたところApache Sparkやってみたところ
Apache SparkやってみたところTatsunori Nishikori
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Atsushi Tsuchiya
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5Tanaka Yuichi
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 

Similar to JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ (20)

Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
 
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache Sparkについて
 
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
Apache Sparkやってみたところ
Apache SparkやってみたところApache Sparkやってみたところ
Apache Sparkやってみたところ
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
JAWS DAYS 2022
JAWS DAYS 2022JAWS DAYS 2022
JAWS DAYS 2022
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ

  • 1. 1IBM Spark 1 Beyond Shuffling Apache Spark のスケールアップのためのヒントとコツ
  • 2. 自己紹介 名前は Holden Karau です 女性 IBM のソフトウェア・エンジニア Alpine、Databricks、Google、Foursquare、および Amazon での勤務経験があります 「Learning Spark & Fast Data processing with Spark」の共著者 来年出版される Spark のパフォーマンスに関する最新の書籍*の共著者 @holdenkarau Slideshare http://www.slideshare.net/hkarau Linkedin https://www.linkedin.com/in/holdenkarau
  • 3. 3 3IBM Spark 3 本日のアジェンダ 皆さんについて RDD の再利用 (キャッシング、永続化レベル、およびチェックポイント機能) キー・バリュー・データの処理 group キーの使用が危険な理由と対処方法 Spark アキュムレーターに関するベスト・プラクティス* Spark SQL がすばらしい理由 Spark MLLib のパフォーマンスを高めるための将来の機能強化に関する説明
  • 4. 4 4IBM Spark 4 本日参加されたすばらしい皆さんについて すばらしい人々 Apache Spark に関する知識がある Apache Spak のジョブをスケールアップしたい Lori Erickson
  • 5. 5 5IBM Spark 5 猫の写真は以下から取ったものです。 http://galato901.deviantart.com/art/Cat-on-Work-Break-173043455 Cocoa Dream による写真
  • 6. 6 6IBM Spark 6 RDD の再利用について (標準機能として利用 できるようになりました) RDD を再利用する予定がある場合は、どうすべきでしょうか? メモリーにうまく収まる場合は、メモリー上にキャッシングする 別のレベルで永続化する 「MEMORY」、「MEMORY_ONLY_SER」、「MEMORY_AND_DISK」、「 MEMORY_AND_DISK_SER」 チェックポイント機能を使用 ノイズを多く含むデータのクラスター _2 & checkpointing」が役立つ場合があります Richard Gillin
  • 8. 8 8IBM Spark 8 キーの不均衡とその問題点 キーが均等に分散していない 郵便番号ごとの売上データや都市ごとのレコードなど groupByKey によって大量の処理が発生する (簡単に処理が中断する) 非常にアンバランスなパーティションが発生することがある かなりのキーの不均衡が発生すると、sortByKey であっても障害が発生することがある 遅延ノード (不均衡なシャーディングによって一部のタスクの処理時間が他に比べてずっと長くなる場合がある) Mitchell Joyce
  • 9. 9 9IBM Spark 9 groupByKey によって発生する問題 非常に大きな問題を引き起こします 同じキーを持つすべてのレコードを単一のレコードにグループ化 すぐに reduce 演算 (集計処理など) を行った場合でも、上記が発生 データのサイズが大きすぎてメモリーに収まらないため、ジョブで障害が発生する SQL 環境を使用すればこの問題を解決できる PROgeckoam
  • 10. 10 10IBM Spark 10 groupByKey を使用した単語数計算のプログラムの再確認 val words = rdd.flatMap(_.split(" ")) val wordPairs = words.map((_, 1)) val grouped = wordPairs.groupByKey() grouped.mapValues(_.sum)
  • 11. 11 11IBM Spark 11 その後、「通常」版のプログラムを確認 val words = rdd.flatMap(_.split(" ")) val wordPairs = words.map((_, 1)) val wordCounts = wordPairs.reduceByKey(_ + _) wordCounts
  • 12. 12 12IBM Spark 12 どのような変更を行ったのでしょうか? reduceByKey データ型が同じ場合にうまく機能する (この集計を行うプログラムの場合など) aggregateByKey データ型が同じである必要がない (統計情報のモデルを計算する場合など) Spark が reduce 演算を実施し、リストの作成をスキップすることができる
  • 13. 13 13IBM Spark 13 問題を引き起こすのはシャッフルだけでしょうか? キー順にソートすると、すべてのレコードが同じパーティションに配置される場合がある パーティション・サイズの制限 (2 GB 程度) の問題が発生することがある または、パフォーマンスが悪化する そのため、上記のとおりデータを処理し、キーに無意味な値を追加することが可能 (94110, A, B) (94110, A, C) (10003, D, E) (94110, E, F) (94110, A, R) (10003, A, R) (94110, D, R) (94110, E, R) (94110, E, R) (67843, T, R) (94110, T, R) (94110, T, R) PROTodd Klassy
  • 14. 14 14IBM Spark 14 Spark のアキュムレーター 障害が発生したレコードをトラッキングするための卓越した方法を提供 ダブルカウントによって、正確な結果が得られなくなる 小さな変更が発生すると、これまでうまく機能して機能がうまく機能しなくなる 特定の条件において、相対ルールで問題を解決できる場合がある* Found Animals Foundation Follow
  • 15. 15 15IBM Spark 15 アキュムレーターを使用して検証を行う val (ok, bad) = (sc.accumulator(0), sc.accumulator(0)) val records = input.map{ x => if (isValid(x)) ok +=1 else bad += 1 // Actual parse logic here } // An action (e.g. count, save, etc.) if (bad.value > 0.1* ok.value) { throw Exception("bad data - do not use results") // Optional cleanup } // Mark as safe P.S: If you are interested in this check out spark-validator (still early stages). Found Animals Foundation Follow
  • 16. 16 16IBM Spark 16 Spark SQL によってパフォーマンスが改善するケースとは? 構造化データまたは半構造化データを処理する場合 それほど複雑でない*処理が利用できれば、それでも構わない場合 データのサブセットに対してのみ処理を行う必要がある場合 処理対象の最も高速なデータでさえ読み取りが行われない この手法については標準の手法であると説明しましたが、一部卓越した手法**が利用できる ようになりました。 内部機能を活用することで実現 ** この卓越した手法を活用すると、スタックのオーバーフローが発生することがあります。すべての状態でこの手法が有効と は限りません。この手法を試す前には、最寄りの Spark の担当部門までご相談ください。 Matti Mattila
  • 17. 17 17IBM Spark 17 このようなケースで Spark SQL を活用するメリット スペースを効率的に使用するカラムナー処理とキャッシングによってデータの表示が可能 処理をデータ・ストアにプッシュダウン可能 オプティマイザーが処理の内部を検証することが可能 通常の Spark では、処理の内部を検証することで (min(_, _)) と (append(_, _)) の違いを検出することは できない Matti Mattila
  • 18. 18 18IBM Spark 18 レビュー: Spark の機械学習に codegen を組み込む Spark SQL のコード生成に基づく 最初のドラフトには Quasiquote を使用 Janino に切り替えることで Java でのコンパイルに対応 最初のドラフトは Gradient Boosted Tree を使用 データベースの処理に基づく 最初のドラフトは Quasiquote を使用 スピーディーな処理のために Java を採用 詳細については、SPARK-10387 を参照 Jon
  • 19. 19 19IBM Spark 19 すべての人*にとって reduce 処理は必須であるため、さら に処理を迅速化するには reduce と aggregate にはツリー構造のバージョンがある 無償の map サイドの reduce 機能は既に提供済み しかし、さらに処理を迅速化するこが可能** ** さらに先進的なバージョンを作成することも可能
  • 20. 20 20IBM Spark 20 @Override public double call(Vector input) throws Exception { if (input.apply(1) <= 1.0) { return 0.1; } else { if (input.apply(0) <= 0.5) { return 0.0; } else { return 2.0; } } } (1, 1.0) 0.1 (0, 0.5) 0.0 2.0 生成されたコードの例 Glenn Simmons
  • 21. 21IBM Spark 21 追加のリソース プログラミング・ガイド (Java、Python、Scala に関する資料もあります) http://spark.apache.org/docs/latest/ 書籍 ビデオ 次のイベントに参加ください Spark に関するお問い合わせへの対応 今後のイベントを確認するには、Twitter で私をフォローしてください https://twitter.com/holdenkarau このアンケートに回答して、次の日付を選択してください http://bit.ly/spOffice1 raider of gin
  • 22. 22IBM Spark 22 Learning Spark Fast Data Processing with Spark (内容は多少古い) Fast Data Processing with Spark (第 2 版) Advanced Analytics with Spark 近日中に発売: Spark in Action
  • 23. 23IBM Spark 23 Spark のビデオ Apache Spark の Youtube チャンネル YouTube 上の Spark のビデオ - http://bit.ly/holdenSparkVideos Spark Summit 2014 のトレーニング Paco の Introduction to Apache Spark
  • 24. 24 24IBM Spark 24 Quinn Dombrowski による猫の写真 ありがとうございました! Spark のテストを現在実施中です。 以下からぜひアンケートにご協力ください。 http://bit.ly/holdenTestingSpark 最終的な結果は、@holdenkarau からツイートします。

Editor's Notes

  1. https://www.flickr.com/photos/lorika/4148361363/in/photolist-7jzriM-9h3my2-9Qn7iD-bp55TS-7YCJ4G-4pVTXa-7AFKbm-bkBfKJ-9Qn6FH-aniTRF-9LmYvZ-HD6w6-4mBo3t-8sekvz-mgpFzD-5z6BRK-de513-8dVhBu-bBZ22n-4Vi2vS-3g13dh-e7aPKj-b6iHHi-4ThGzv-7NcFNK-aniTU6-Kzqxd-7LPmYs-4ok2qy-dLY9La-Nvhey-Kte6U-74B7Ma-6VfnBK-6VjrY7-58kAY9-7qUeDK-4eoSxM-6Vjs5A-9v5Pvb-26mja-4scwq3-GHzAL-672eVr-nFUomD-4s8u8F-5eiQmQ-bxXXCc-5P9cCT-5GX8no から取った写真
  2. https://www.flickr.com/photos/haoli/6349372032/in/photolist-aF5c6A-beRSyF-cnUjBm-dxujoM-cukarf-5osZv-7LrwZb-8hzdGg-dWAXVw-7j8eCn-mU1GDC-du6Njj-9fNeUF-9fNf2c-jeQw2Z-pCQxin-pCPx1S-oYtpxt-pCSwKY-oYtpz2-5nAgBd-4kR3Xg-2CLt3B-mU1HuL-pCPx4h-54W9r-mTYJGa-pVkTdo-2CLrVX-9qkxeT-9s2gwi-9qkx1X-oYqiWL-pCSwD5-2xFigB-72vWUH-dWoBAi-opf1Pw-7jc8Bu-6QfmGS-pVcDuv-4FDmvY-dWufM9-9rFwy5-RAsAG-csnYJu-7QF7sx-83wqki-6faJ2B-7NJT8E
  3. https://www.flickr.com/photos/photoverulam/22626301622/in/photolist-AtpHbE-2biJ8i-cbDxLj-5SbTJs-bvJ6pR-4cKd6r-c5io3W-x7fuW-8GEnYV-7ngpwq-7ncv4F-7ncv36-6UPdLM-cS2j3s-6zXf6D-pps5P-6UPdZc-qbhws-egQRmW-61si6q-N864-65o5nN-4D4R6z-wavuvy-zzzrqc-6RG2Wn-zhbLnM-zhbLPP-coidfb-6d9XaA-cfPRY7-coidn7-coidLC-6hDKxj-se5vfT-t8y1tQ-5pRoHx-N854-8UuUYz-msyfx-9DqPba-49vTz-4c4F5-5QL2qk-v7G7z9-w4GYdP-irqiN-6Dc9WZ-2h4pkp-uKaPa から取った写真
  4. https://www.flickr.com/photos/eleda/531867386/in/photolist-NZXDm-4H2JU2-chHH61-aDPTFx-5SYV6V-cgjJVm-bmsnCt-bWgJiD-eiwHzX-dQgyhR-3bN33R-eXWaq2-7Cr1HJ-5TxxkF-9prgZh-2Fehf-9xVUGJ-guZfLW-bWgJk2-93HkH6-9prh4Q-9poftp-eL99JM-9prerC-93LqUf-eLkz5L-6gsr2T-4ofma3-4obj4M-bV2a3u-7ygQQr-gS4GzY-GTrX9-7cLyNh-6yFvoe-fv6smP-4GRE5r-5kLaJv-5BE2Eg-4GVR4f-5Qnzri-6N33MP-4XfVC8-56HJVB-s5HTfd-4GVPwW-27SD6T-dGk3Vj-4ofqNC-9e2NoY
  5. https://www.flickr.com/photos/hckyso/2055866250/in/photolist-48ERpQ-c3rR-7DyiPo-4wAZRn-hzYJD4-9KvP1D-81rV7R-7F1fnm-dTQkdt-AdUJ-95BJsR-4hy1LG-891ckh-orpiij-7sDjhG-qdro34-s1x8Sm-7X3N8R-9JXXZC-aSJdR-ampKtE-6aTcDC-4P6QUv-9Zry8g-4d54Qi-ZMHEJ-g16RaZ-j95eU-9pp82n-7Efa4Y-apJqbb-6kYmJ8-t4N6G5-DCbLQ-7Smuw8-eir9us-ek6wdx-eiGMj1-5iMBeE-9bh3qr-8MpZPp-9kRy1L-ekLggu-du4gyZ-7bmbow-eir9vo-9kunTs-a2Wru-cQGXy5-DCcaR
  6. https://www.flickr.com/photos/geckoam/2956778600/ から取った写真
  7. https://www.flickr.com/photos/latitudes/66424863/in/photolist-6SrNg-4FS7h3-n3aG-675Ggf-2mvpnV-4EPRi-agTjTx-3fuHL-7xHxwK-2RnrK-9hNfoi-2RnV1-2RnV3-6y5i2D-4EPSo-rgtUq-6amUo9-2RnV4-dxZEgS-HS6QM-dzGYC-cWsXC5-2RnV6-aDHNC-2RnV2-bqQu1Q-5kwTda-n35c-tvq1-rgu6G-NdcJr-6ahMeZ-oUnQSw-4kPxbs-xGmP-63cN61-6ahKok-rgtZY-zE7Wf-dghvFQ-sQaV1s-aLr6Tn-aWCMd4-whPuJ-jhaCqH-wM72t-Z5TfQ-a8Tqys-Nopr3-gz9b7W/
  8. https://www.flickr.com/photos/foundanimalsfoundation/8055190879/in/photolist-dgNXBn-4L53ub-ajWE6R-ovhrAn-buEU2i-6TM1kv-6F62SX-dv1zwm-6JiU12-e3GnSr-877jwm-nkEHyT-5q27Jq-6Yngd4-4xcRaU-4x8Mgn-6g3oAX-8Hcwvh-6bdxVW-4xcUnq-idRQ5-4x93fz-9ix9t5-4x8QSt-4x9dhT-ovW6RV-ou7PoH-aukUjT-dbHTpJ-aPCdta-4xdaNG-4x8ViZ-4xd8kh-4x97ge-4xd1WS-4xduUs-4x8LaV-4x8Nig-4x8JEM-4x8Dxe-4x8U7n-4xdhs1-4xdfi9-4x8Gsg-4x9fL2-4xcSfW-4xcPmq-4x9akx-4x95e2-4x99n8 から取った写真
  9. https://www.flickr.com/photos/mattimattila/8190148857/in/photolist-dtJDV4-9tFyUo-9tBqdY-9tymzv-9tBFDf-9tBf1Y-9tyhGp-9tBerj-9tBe4u-9tygGt-9tBc1L-9tB7aJ-9tBeC5-9tzzx6-9tzzq2-9tCw4u-9tzyAv-9tCsHo-9tzvf8-9tyS8X-9tCx5Y-c1JFsu-9tBD8s-9tyt9Z-9tymqa-9tykmD-9tyi3D-9tBPo1-9tyvJt-9tBofj-9tBB9E-9tyBVx-9tBanw-9ty7KM-9ty662-9tCwwY-9tCrVq-4YqUM-9ty2Fv-9tCry1-9tzu72-9tCrbo-9tyReT-c1PhzY-9tyR5r-9tywiK-9tyw9B-9tBt3b-9tBsFs-9tBswf
  10. https://www.flickr.com/photos/jb-london/6659711647/in/photolist-b9uLfB-oMFLKY-psumAe-PvmTe-9vatNK-qektu-8g3jSA-349iv-6GtGmj-oK9cEY-991iGG-cPJ8QU-8dxxkB-mF2Hpc-jKLC8r-o6k2UB-eqbByC-6RGY2L-56P4E3-75QJPn-meLnko-athMJ5-dshXvy-9Ddf4h-dWcYXQ-8cxGxH-4EaXuw-nSfe14-eeXM3G-6w6p2X-dz1VFC-cirujw-nRjjjG-nRon7D-BBRxV-b8Y4UZ-4ang32-8N4tS6-aqNUJJ-3daDSd-bdnv4Z-9jJxG8-otHbqV-CsKnA-4rLoBN-pczP4-niPcP4-f9xNuq-fpDcRL-7khdoc
  11. https://www.flickr.com/photos/simmogl/4055700308/in/photolist-7bowpo-zvyWaQ-3EhtfM-zM3uwo-zM3Ba3-pG7vSq-oMmzPG-oMpCrt-5uSRnw-4HXxs-bwiGtb-9u29aC-oMmLtY-kop9e-4HXwH-oMoqa7-5zd1U6-9pB2jn-hCMrd5-bGyH6i-4Kj7q-dDaF1-prNtLn-zM3yR5-yRhpTn-yR8sRL-yR8oMd-yRhsqB-gTH7qx-zvz4sW-92waWk-yR8wph-yRhrJB-3EmRpS-7eqcqM-4Kj3p-njURVR-2aHanh-iFykZQ-9x97CL-9NfNL-k9N6fm-5RSaZ-4BxAv5-a51APZ-dqhjnr-dqhqZ9-eb9V7X-3EmR3d-6sCnb7
  12. https://www.flickr.com/photos/fairerdingo/2320356657/in/photolist-4x3rcg-AvWp-9apz9a-jJhpoQ-2ov2gu-7Rr2qr-3P2KH-5YFdAJ-gACrN-HTUWP-6j9ooG-dXpN3Q-9kccaV-aFuUfB-8ZN65i-6pQSAv-btZvjV-9ddxwE-4Lq8UH-dXaZ7j-73Xojt-mUZSq-fTy1P-e4n9B-hYwP4-89QrWo-67bSSJ-aThabK-bTctDK-94iUu2-asHJSr-bBnVA8-5MbBJM-g2Vrky-efhYzw-8NxAKw-e3baUF-grvK9-48GJ6n-bAV4eh-btJDEK-4zJtyV-8naFTb-dgJfT-5H88ML-vRFsiA-bHt6pc-7eVJa6-bm2YzR-63sSC5