Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache Sparkやってみたところ
Search
Tnishikori
September 09, 2017
Technology
3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apache Sparkやってみたところ
Apache Sparkやってみての所感とか
Tnishikori
September 09, 2017
More Decks by Tnishikori
See All by Tnishikori
RSpec 勉強会
tatsunori_nishikori
0
95
Other Decks in Technology
See All in Technology
Adding Right-to-Left support to your web application with CSS logical properties — Lessons from Redmine
vividtone
0
170
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
220
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
140
Model Studio CLI × Token Plan
maigo999
0
210
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
290
tamachi.go 誕生の裏側
rymiyamoto
1
200
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
codmoninc
0
200
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
1.1k
コーチングの奥義 何もしないテクニック
jinwatanabe
0
150
8bit CPU 2026
koba789
6
2.6k
dbt in Microsoft Fabric
ryomaru0825
0
140
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
190
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
380
The Curse of the Amulet
leimatthew05
2
14k
Building the Perfect Custom Keyboard
takai
2
850
Leo the Paperboy
mayatellez
8
2.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
First, design no harm
axbom
PRO
2
1.3k
Bash Introduction
62gerente
615
220k
Transcript
Apache Sparkやってみたところ
What is Apache Spark ?
Sparkとは • BigDataを高速に分散処理を行うフレームワーク Apache Spark Spark SQL Spark Streaming MLlib
(machine learning) GraphX (Graph)
データ操作 • RDD • 並行して操作することが可能な要素の耐障害性のあ るコレクション • DataFrame • 1.6から追加された機能でRやPython等のDataFrameと
同等の操作が可能 • SQL • Hive SQLプラスαのDSL記述で操作可能
SQL • SELECT • GROUP BY • ORDER BY •
数学関数 • 文字関数 • Window関数 • JOIN • UNION • サブクエリ • etc… https://spark.apache.org/docs/latest/sql-programming- guide.html#supported-hive-features
データソース • Hadoop • s3 • RDBMS • ElasticSearch •
etc.. Hadoop以外はConnectorを利用する必要がある
Spark MLlib(ML)
Spark MLlib • 機械学習ライブラリ • MLlib : RDDベース(メンテナンスモードに入ったよう で機能追加は今後は行っていかない) •
ML : DataFrameベース(今後こちらが主流になってい く)
Spark MLlib APIできること • 基本的な統計 • 分類と回帰 • 協調フィルタリング •
クラスタリング • 次元削除 • 特徴量抽出及び変形 • 頻出パターンマイニング • 評価マトリックス • PMML モデル抽出 https://spark.apache.org/docs/latest/ml-guide.html
Amazon EMR
EMRとは • Amazon EMR は、AWS でビッグデータフレームワーク (Apache Hadoop や Apache
Spark など) の実行を簡素 化して、大量のデータを処理および分析するマネージ ド型クラスタープラットフォーム • S3を始め、AWS上のサービスの連携がデフォルトでつい てくる • 1度構築したクラスタは再利用可能(CLIもアウトプット 可能)
EMR Command Runner • EMRクラスタのインスタンス内に`command-runner.jar` が置かれ、これを利用してステップを追加していく • spark-submit : Sparkアプリケーションの実行
• s3-dist-cp : 大量のデータをS3からHDFSに分散コピー する http://docs.aws.amazon.com/ja_jp/emr/latest/ ReleaseGuide/emr-commandrunner.html
Apache Spark Tuning
WebUI • WebUIでは以下のような項目が確認できるので、パフォー マンスネックになっている箇所の特定などに利用する と良さそう • スケジューラのステージおよびタスクのリスト • RDDサイズおよびメモリの使用量の概要 •
環境情報 • 実行中のexecutorの情報
キャッシュ • キャッシュ無し4h以上 -> キャッシュ利用 1h程度に短 縮 • DataFrame •
SQL df.cache() # キャッシュ利用 df.is_cached # キャッシュ確認 df.unpersist() # キャッシュ廃棄 spark.sql("CACHE [LAZY] TABLE [db_name.]table_name") # キャッシュ利用 spark.sql("UNCACHE TABLE [db_name.]table_name") # キャッシュ廃棄
データロード • s3直接ロード -> s3-dist-cpを利用し、一度クラスタ 内HDFSに移してロード 20min程度短縮 • srcPattern :
s3のフィルタリング • groupBy : 複数のファイルを結合 • targetSize : groupByにもとづいて作成するファイル のサイズ http://docs.aws.amazon.com/ja_jp/emr/latest/ ReleaseGuide/UsingEMR_s3distcp.html
Sparkの設定 • spark.executor.meory、spark.executor.cores、 spark.dynamicAllocation.enabledについてはEMR側でデ フォルトで設定されるので、EMRに任せておいて良さそう http://docs.aws.amazon.com/ja_jp/emr/latest/ ReleaseGuide/emr-spark-configure.html • SQL周りの設定では以下の項目の調整で数分短縮の効果あ り
• spark.rdd.compress • spark.sql.shuffle.partitions • spark.sql.inMemoryColumnarStorage.batchSize • spark.sql.broadcastTimeout • spark.sql.files.openCostInBytes
参考文献 • Apache Spark SQLリファレンス http://x1.inkenkun.com/archives/1114 • Apache Spark MLlibのレコメンドアルゴリズムを使う
http://kazz.hateblo.jp/entry/2016/02/09/114756 • Apache Spark を使ったシステム構築のための Tips https://blog.albert2005.co.jp/2016/06/16/apache-spark- %E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B7%E3%82%B9%E 3%83%86%E3%83%A0%E6%A7%8B%E7%AF%89%E3%81%AE%E3%81%9F%E3% 82%81%E3%81%AE-tips/ • Apache Sparkを使って、メモリ使用量が大きいバッチ処理をス ケールアウト http://lab.adn-mobasia.net/?p=4777