Spark Casual Talk #1
Spark Casual Talk #1 - connpass
- 敷居を下げるためにカジュアルとつけたけど、LTのラインナップを見るにかなりガチですね
- Sparkなんで既定路線ということで
Spark Summit 2015 参加報告
- @potix2
- 神田さん
- CAアドテク本部 AMoAd
- OS/分散システム専門でやってます
- 毎月Lispのミートアップもやってます
- Sparkと私
- 広告のデータ分析基盤としてのSpark
- 業務とは離れるけど、社内の研究支援制度でSparkゼミをやっている
- 業務でやってるならSparkにコントリビュートしよう、という感じで
- ソースリーディングやIssuesやPR上げたりをもくもくとやっている
- Sparkとは
- Sparkユーザは会場に半分くらい
- 高速な汎用計算エンジン
- メモリにキャッシュするので繰り返し計算に強い
- ロジスティック回帰は100倍早いです、というよくある謳い文句
- うそ臭いなあといつも思うのですが出しておく
- コンポーネント
- Spark core
- Spark SQL
- MLlib
- GraphX
- 最近あんまり活発でない、ですが、Spark Summitでは事例が出てました
- Spark Streaming
- リアルタイム処理ライブラリ
- Spark core
- Sparkを取り巻くエコシステム
- YARN、Mesos
- YARNの方がメジャー、Mesosは実装が足りなかったりする
- 最近Dockerでも動くようにサポートされました(1.4~)
- YARN、Mesos
- コミュニティも成長を続けている
- 1年でコントリビューターが255人から730に
- コード量も175kから400kに
- 大丈夫かな、と思いつつ、コアはあんまり膨れてないらしい
- 「IBMがApache Sparkプロジェクトに3500名を投入」
- 最近のリリース
- 6月に1.4、3月に1.3
- 1.3のDataFrame APIがとても大きい、のでここで触れておきます
- 6月に1.4、3月に1.3
- DataFrame API
Spark Summit 2015 振り返り
- 先週6/15~17
- データ分析に関わる内容が多かった
- データ分析基盤としての活用事例が多い
- 「Baiduでは8000ノード使っています」みたいな
- MLlib活用して予測モデルを建てたり、といった事例がたくさん
- 先進的な事例が多いので、性能改善がコミュニティ内部での優先度高に
- 出自が出自(大学の研究室)なので、産学連携しながらコミュニティが成長している
- アカデミックな雰囲気も有るカンファレンスでした
SparkSQL/DataFrameAPI関連
- DataFrame APIチュートリアル
- Spark DataFrames: Simple and Fast Analysis of ....
- おそらく今週くらいにSpark Summit公式にスライドが上がってきます、もうちょっとして動画も
パフォーマンス向上関連
- 今回喋りたいトコ
- Making Sense of Spark Performance
- How to Boost 100x Performance for Real World Application w/ Apache Spark
- Intel上海チームのSpark性能改善タスクの共有
- プロジェクトTungsten
まとめ
- DataFrame API, Spark SQLなどデータ分析の基盤となる機能は継続して開発
- データ分析基盤として活用するユーザー企業が増えている
性能改善へのニーズが増してきている
Q&A
- 英語はペラペラなんですか?
- 全然ダメで、MeetUpでも質問してみたけどボロボロでした
- DataFrameAPIはテーブル型なのでMLやGraphXとは関連しない?TungstenはDataFrameAPIに特化したプロジェクト?
- CAではSparkはどう使っていく?
- ウチ(AMoAd)では分析基盤、別の場所ではストリーミング
- 規模感としては共通基盤はないので、チームごと・PJ単位でアドホック的に気軽に使う程度、今後変わるかも
- CPUボトルネックで困ってる、みたいなケースはある?
- CAではまだない
- モダンなハードウェアでDataFrameをガチガチに使い込んで初めてCPUボトルネックが見えてくる、という領域だと思います
- SSD24個とか、10GNWとか
- 英語はペラペラなんですか?
メキメキ開発の進むApache Sparkのいまとこれから
- NTTデータ土橋さん、猿田さん
- 猿田さん
- 6月Sparkコミッタに就任
- コアエンジニアに近い立場、dev寄り
- 土橋さん
- 去年Spark Summit '14で事例紹介しました
- OSSを使い倒すチーム、ユーザー寄り
- 猿田さん
Spark開発の最前線(猿田)
- '14とくらべても非常にドラスティックに変わっている
- ざっくりおさらい、Apache Spark
- 1.3.0までのホットトピックをおさらい、1.4.0のホットトピックをキャッチアップ
- 従来のMapReduceが苦手なスループットとレイテンシの両立が領域にアプローチするためのプロダクト、そのうち最も早く商用に載ったもの
- Sparkの全体像
- 1.3までのホットトピック
始めようSpark(土橋)
- 今から使うならどう使う?
- スキーマレスデータはRDD、構造化データはDataFrame
- 今は連携できるので、うまい方を使いながら組み合わせられる
- 去年までは統計処理が多めだが、今年はストリーム処理・機械学習との連携が多かった
- MLlibは「分散処理の恩恵を受けられるアルゴリズムを実装する」という方針だが、定番アルゴはまずまずの充実度
- 細かいところが足りない、と思ったら積極的にコミュニティに意見しましょう
- MLlibは「分散処理の恩恵を受けられるアルゴリズムを実装する」という方針だが、定番アルゴはまずまずの充実度
- DataFrameほか、いろんなデータソースを意識するように
- センサデータみたいなものも取り込めるように
- 構造が異なるデータも柔軟に扱える
- 大規模データでの動作もだいぶ安定していた
- ちょっと前はメモリに全部ぶち込んでたので不安があった
- スキーマレスデータはRDD、構造化データはDataFrame
- 気に留めておきたいこと
- Sparkを動かしてみよう
- Zeppelinと一緒にSparkの簡単な動作を紹介
- Apache Zeppelin
- Mathematicaみたいなノートブック
- のんびり開発中、コントリビューター募集中
- Apache Zeppelin
- DataFrame入門
- 定期預金契約に関するサンプルデータを読んで、Sparkで処理
- デモ:
spark-csv
を利用して、DataFrameAPIで特定カラム抜き出し、Zeppelinでグラフ化 - spark-shellでもzeppelinでもMavenパッケージをそのまま使えます
%dep z.load("...")
spark-shell --packages
sqlContext
でcsvをSQLっぽく読む(DataFrame型).select
で抽出したDataFrame型に
%sql
でSparkSQL文で解釈して、Zeppelin組み込みのグラフ表示までやってくれる- バックエンドでデバッグするだけでなく、SparkのWebUIから参照できるので
RDDとMLlibの事例は興味があれば
- スマホのジャイロで座ってるのか、立ってるのかを当てるデモ
まとめ
- 後方互換性をかなり保ちながらも、1.2以降ドラスティックに変わってきています
- 動かすこと自体は難しくないので、ちょっと気になったら公式quickstartが詳しめ
- 本気で使う方は開発現場を盛り上げていきましょう
Q&A
- iPython系もSpark使えた気がするのですが、シェア的にはどっちが多い?(→土橋)
- keyの偏りみたいなものをなんとかするコツはありますか?(→猿田)
- Sparkは分析をメインにしていく、というイメージ?前処理の部分もこれまで通りやっていく?(→土橋)
- 「前処理にもパワーや試行錯誤が必要です」というケースがたくさん出てきている
- どの説明変数が効果的か、というような、前処理とアルゴリズムの選択を一緒くたにできるのがSparkの嬉しいところ
LT
SparkSQLの構文解析
- @iyunoriue
- CA
sqlContext.sql("SELECT * FROM records")
Run Streaming + Amazon Kinesis
- @imai_factory
- Amazon
- 前職では広告配信サーバに携わったりしてました
- SparkStreamingのいいところ
- DStream
- Amazon Kinesis
- フルマネージドなストリームサービス/メッセージブローカー
- 怒られちゃうけど平たく言うとフルマネージドKafkaみたいなやつです
- Kinesisのストリームにウィンドウ関数/SparkSQLする
- Kinesisバックエンドの実装
- td経由のjson→Kinesis→Spark
KinesisUtils.createStream
のDstreamをunion
、foreachRDD
してgroupBy
- EMR上でもSparkが一撃化しました
- 最新ではなく
1.3.1
なので注意
- 最新ではなく
ML Pipelineで実践機械学習
- 谷口さん
- 機械学習の流れ
- Training Data
- with (label, ...)
- Feature Engineering
- 特徴抽出
- Machine Learning
- 学習
- Prediction
- 予測
- Training Data
- ML Pipeline
- DataFrame -> Pipeline -> Pipeline -> Modelの流れ
- Logistics回帰の例
- アルゴリズムを変える、みたいなところでも一箇所変えるだけでよい
アドホック分析で活躍するApache Spark
- @moyomot_
- Gunosy
- 森本さん
- 一言で言うと
- サクッとSparkを試すにはEMRがオススメ
- Gunosyのデータ分析の主軸はRedShift
- RedShiftに無いデータを分析するところでSparkが出てくる
- 日々追加する中で、Redshiftにないデータを一時的に集計するとき、など
- Sparkのここが嬉しい
- S3との親和性が高い
- JSON取り出しが容易
- SparkSQL、DataFrameが使える
分散基盤の運用は大変
- そこでEMRです
- 先週正式サポートされました
ホントにカジュアルなネタを用意してきたのですが、違ったのかなあという気がしています
HUE NOTEBOOK
- @kernel023
- Cloudera
- Tatsuo Kawasaki
- インストラクター
- 今日はYARNを2時間くらい喋ってました
- 今日言いたかったこと
- 『ラーニングSpark』日本語版が8月か9月に出ます
- 翻訳は象本でおなじみの玉川さん
- 『ラーニングSpark』日本語版が8月か9月に出ます
- Jupiter、Zeppelinみたいなものがもう一つあるのでこれを...
- Hue
- ふえじゃないです
- Hadoop User Experience
- Hue以前はパワーユーザーがコマンドラインで分析してました
- Hueからならブラウザ経由でカジュアルに叩けます
- Zeppelinとおなじくノートブックで使えるようになりました
- iPython, Zeppelin, Jupiterなどが有名ですが
- HueはEMRバンドルなので、じきにデフォルトで使えるようになるかも
Dynamic Resource Allocation on YARN
- YARN
- リソースマネージャの実装
- Sparkの話だったんですが、YARNを使うとMapReduce使ってるリソースをそのまま使えるようになります
- YARN overview
- すべてのリソースを知っているResourceManager
- いくつかのNodeManagerに仕事を振っていく
- Spark on YARN
- yarn-cluster mode
- SparkのマスターをNodeManagerの上に建てる
- spark driverがNodeManagerの上で動く
- ジョブをもらってから、コンテナをいくつ建てるかなどをNodeManagerが判断
- yarn-client mode
- spark driverがクライアント側で立つ
spark-shell
をクライアントで動かすため- shellがResourceManagerとやりとりする
- yarn-cluster mode
- 問題
- yarn-clusterではexecuterの数を起動時に指定している
- RDDが消えちゃうのでexecuterはジョブが終わるまで終了できない
- stage1で100%まで張り付くと、stage2が暇になっても開放できない
- Dynamic resource Allocation
- インストールしようとすると面倒
- yarn-clusterではexecuterの数を起動時に指定している
- Sparkの上でYARNが動くので皆さん使いましょう!!