SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Copyright © 2015 NTT DATA CorporationCopyright © 2015 NTT DATA Corporation
2015年6月23日
株式会社NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス 猿田 浩輔/土橋 昌
メキメキ開発の進む
Apache Sparkのいまとこれから
OSS Professional Service Team
Spark Casual Talk #1
(2015/06/23)
発表資料
2Copyright © 2015 NTT DATA Corporation
自己紹介
猿
田
浩
輔
ソフトウェア開発。システムインフラ技
術者。
6年ほどHadoopに関する業務に従事。
近年はSpark関連の取り組みが多い。
2015年6月Sparkコミッタに就任
出版物に「Haodop徹底入門(初版、
第二版)」-翔泳社」、「HADOOP
HACKS-オライリージャパン」
土
橋
昌
システムインフラ技術者。データ処理。技術
コンサルティング。
7年ほどHadoop関連の業務に従事。近年
はStorm、Sparkなどの分散処理を中心とし
てシステム開発に携わる。
携わったHadoopサーバ台数は数千台。結
果、システム運用にも興味。
結果的に、トラブルシュート、ITインフラの相
談、システム運用、データ処理など広く従事。
講演に「Spark Summit」、「Haodop
Conference Japan」、「Hadoopソースコード
リーディング」
所属: NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス
お仕事: OSSを使ったR&D、システム開発、テクニカルサポート
3Copyright © 2015 NTT DATA Corporation
Spark開発の最前線 (猿田)
•Sparkの基本おさらい
•Spark 1.3までのホットトピックのキャッチアップ
•Spark 1.4のアップデート
始めようSpark(土橋)
•今から使うとしたら、どう使ったら活かせるか?
•Spark使う上で気に留めておきたいこと
•Sparkを動かしてみよう with Apache Zeppelin
本発表のアジェンダ
Copyright © 2015 NTT DATA Corporation 4Copyright © 2015 NTT DATA Corporation 4
ざっくりおさらい Apache Spark
5Copyright © 2015 NTT DATA Corporation
 従来のHadoop MapReduceが苦手としていた、スループットとレイテンシの両
立が必要な問題領域にアプローチするために開発されたOSSのインメモリ分
散処理基盤
 UC Barkeleyに所属していたMatei Zaharia(現Databricks CTO)がScalaで
開発した
 Hadoop同様、大量のコモディティサーバを束ねて大規模なデータに対して分
散処理を行う
 RDDと呼ばれる部分故障への耐性を考慮した分散コレクションに対し、mapや
filter、reduceなどの典型的なデータ変換操作を繰り返して目的の結果を得る
処理モデル
Apache
最新安定バージョンは1.4.0
RDD RDD RDDRDD
ユーザ定義の
処理の流れ
フォーマット変換 グルーピング フィルター 集計入力
6Copyright © 2015 NTT DATA Corporation
データソース(HDFSなど)
Sparkの全体像
• Scala/Java/Pythonで処
理が記述できる
• インタラクティブシェルが
付属し、試行錯誤も可能
http://cdn.oreillystatic.com/en/assets/1/event/126/Apache%20Spark_%20What_s%20new_%20what_s%20coming%20Presentation.pdf
分散処理基盤を扱いや
すくする便利なエコシス
テムが付属している
• YARNなどのクラスタ管理基盤と連係動作する
• データソースの分散ファイルシステムにはHDFSも利用可能
 従来MapReduceで実装していた処理をSparkにマイグレーションしやすい
分散処理エンジンを含むコア部分
Copyright © 2015 NTT DATA Corporation 7Copyright © 2015 NTT DATA Corporation 7
Spark 1.3までのホットトピックのキャッチアップ
8Copyright © 2015 NTT DATA Corporation
 KafkaのSimpleConsumerAPIを用いてZookeeperを介さず、
SparkStreaming側でオフセット管理を行う。オフセットをWALに書き出
す必要がなくなった
 WALとZookeeperの内部状態の不整合が発生しなくなり、より厳密にExactly-
Onceが保証されるようになった
Kafkaとの連携強化(Spark Streaming)
9Copyright © 2015 NTT DATA Corporation
 学習アルゴリズムや最適化アルゴリズムなどのパーツだけではなく、Scikit-Learnのよ
うな機械学習全体のパイプラインをサポートするAPIが提供されている
Pipeline API(MLlib)
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol("words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.01)
// パイプラインにトークン分割、ハッシュ化、処理とロジスティック回帰を設定
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, lr))
val model = pipeline.fit(trainingDataset) // モデルの当てはめ
10Copyright © 2015 NTT DATA Corporation
 従来SchemaRDDと呼ばれていたテーブル状のデータ構造がDataFrameと名前を変え
た
 DataFrameに対してSQLを発行できるだけではなく、DataFrame APIと呼ばれるデータ
処理用のAPIが提供されている
 データに名前と型を定義することができるため、構造化されたデータの処理が簡潔に
記述できる
 DataFrameはRやPandasとなじみが深いデータ構造なので、分析用途などで利用しや
すくなった。
DataFrame API(Spark SQL)
RDDをSpark Core APIで操
作するとごちゃごちゃした処
理も、DataFrame APIなら簡
潔に記述でき、可読性やメ
ンテナンス性が向上する
http://cdn.oreillystatic.com/en/assets/1/event/126/Apache%20Spark_%20What_s%20new_%20what_s%20coming%20Presentation.pdf
11Copyright © 2015 NTT DATA Corporation
 Spark SQLでSQLを記述した場合と同様、DataFrame APIを経由したデータ操作も
Spark SQLの最適化エンジンの恩恵を受けられる
DataFrame API(Spark SQL)
http://www.slideshare.net/databricks/introducing-dataframes-in-spark-for-large-scale-data-science
• DataFrame APIを活用することでSpark SQLの最適化エンジンの恩恵が受けられる。
• Spark SQLのオプティマイザ経由でバイトコードが生成されるため、Scala/Pythonの
違いによる著しい性能劣化は起こらない。
Copyright © 2015 NTT DATA Corporation 12Copyright © 2015 NTT DATA Corporation 12
Spark 1.4のアップデート
13Copyright © 2015 NTT DATA Corporation
 RのインターフェイスでSparkが利用できるようになった
 ユーザは背後のSparkのコアの動作を意識せずDataFrameの操作を記
述するだけで分散処理が実行できる
SparkR
R言語で分散
処理が書ける
Executorでは
Spark SQLの
オプティマイザ
が生成した
ジョブがJVM
上で走行する
14Copyright © 2015 NTT DATA Corporation
Spark Streamingの統計情報の可視化
単位時間当たりのデータの
流量や、処理のスループット
が確認できる
15Copyright © 2015 NTT DATA Corporation
RDDの変換過程の可視化
複雑なRDDの変換チェインや、エコ
システムによって生成された変換
チェインの全体像が把握しやすくな
り、ボトルネックの発見やアプリ
ケーションのチューニングに役立つ
val rdd1 = sc.parallelize(list1).map(function1(_))
.reduceByKey(function2(_, _))
.map(function3(_))
val rdd2 = sc.parallelize(list2).union(rdd1)
16Copyright © 2015 NTT DATA Corporation
タイムラインの可視化
Executor(Sparkのワーカプロセス)が
起動/停止したタイミングが時系列に表示される
Executorが停止したタイミングで影響
を受けたジョブが分かる
各ジョブの開始/終了や
ステータスが時系列に表示される
Executorごとに、タスクが割り当てられた時間や各タスク
の実行時間、処理時間の内訳が確認できる
17Copyright © 2015 NTT DATA Corporation
 Sparkで処理されるワークロードのボトルネックがI/OからCPUに現れるようになってき
た
 昨今ハードウェアトレンドの変化(10G / SSD)
 DataFrame APIやExternal Data Sources APIの登場で、無駄なI/Oが発生しにくくなった
 Project Tungsten(SPARK-7075)
 特に性能にセンシティブな部分の独自のメモリ管理
- メモリ利用効率の向上
- JavaのHashMapなどのデータ構造に見られる間接参照の削減
- GCの削減
 キャッシュアウェアなデータ構造とアルゴリズム
 モダンなCPUを活用できるコードの動的生成
Project Tungsten
18Copyright © 2015 NTT DATA Corporation
 独自のメモリ管理
 HashMapをUnsafe APIによる自前のメモリ管理による実装により、集約処理を高速化
 中間オブジェクトの生成のオーバーヘッドを軽減
 自前でのメモリ管理によってGCによる影響の排除
Project Tungsten
https://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html
レコードの増加
ごとの集約処
理の秒間スルー
プット。Unsafe
版では400万
件の場合でも
劣化が無い
Copyright © 2015 NTT DATA Corporation 20Copyright © 2015 NTT DATA Corporation 20
始めようSpark
色々すごい機能もありますが、
まずは気楽に始めるところから…
21Copyright © 2015 NTT DATA Corporation
今から使うとしたら、どう使ったら活かせるか?
スキーマレスデータを扱いやすいRDDと構造化されたデータを扱いやすい
DataFrameをうまく組み合わせたい
•DataFrameは数学的メソッドが追加されるなど充実してきたが、スキーマレスデータは今はRDDの方
が扱いやすい印象
•とはいえ、最適化の恩恵を受けられるのでDataFrameを活用したい
ストリーム処理、統計処理、機械学習などのエコシステムを活用して高度な業務
を実現
•ここ1年くらいのソースコードの変更量はコアよりもライブラリの方が多い
•MLlibは「分散処理の恩恵を受けられるアルゴリズムを実装する」という方針だが、定番アルゴリズ
ムについてはまずまずの充実度。細かな機能が足りない場合はコミュニティに意見を挙げよう
DataFrameやExternal Data Sourceの機能を活用して様々なソースからのデー
タ統合処理
•構造の異なるデータも柔軟に扱える
•大規模データでの動作もだいぶ安定してきた
•「汎用的」というところに力点を置いて成長が進んでいる
22Copyright © 2015 NTT DATA Corporation
動かすだけならとても簡単にできる。まじめに動かすなら
ばパラメータ設定は必須
•最初に公式のチューニングガイドを読むのがベター
https://spark.apache.org/docs/latest/tuning.html
•様々な処理内容に対応できる分、追い込むときは各々に合わせる
やっぱりScala版実装が最も進んでいるが、最近はPython
も頑張っている。SQL風言語もそれなりに利用できる
•DataFrameの登場で基本的な足並みがそろってきた
•個人的に、SQLで書きたい部分とコレクション操作で書きたい部分の両
方に対応してくれるのはありがたい
Spark使う上で気に留めておきたいこと
23Copyright © 2015 NTT DATA Corporation
 もっとも簡単な始め方
 JDK7、8をインストール
 LinuxやMacOSでSparkのパッケージをダウンロード、展開
 spark-shellを起動
 RDDの使い方
- https://spark.apache.org/docs/latest/programming-guide.html
 DataFrameの使い方
- https://spark.apache.org/docs/latest/sql-programming-guide.html#dataframe-
operations
Sparkを動かしてみよう
https://spark.apache.org/downloads.html
$ ./bin/spark-shell --master local
scala>
24Copyright © 2015 NTT DATA Corporation
本日はZeppelinと一緒にSparkの簡単な動作を紹介
ウェブベースのインタラクティブなノートブック
SQL、Scala、Pythonで処理を書けます
https://zeppelin.incubator.apache.org/
開発者Leemoonsooと。
Spark Summit 2015より。
25Copyright © 2015 NTT DATA Corporation
 定期預金契約に関するサンプルデータを読み込んで、Sparkで処理します
 データセット: http://archive.ics.uci.edu/ml/datasets/Bank+Marketing
 サンプル内容
 spark-csvを利用して、セミコロン区切りのデータを読み込む
 DataFrameのAPIを利用して特定のカラムを抜き出す
 Zeppelinでグラフを生成する
例1:DataFrame入門
"age";"job";"marital";"education";"default";"balance";"housing";"loan";"contact";"day";"month";"duration";"campaign";"pdays";"previous";"poutcome";"y"
58;"management";"married";"tertiary";"no";2143;"yes";"no";"unknown";5;"may";261;1;-1;0;"unknown";"no"
44;"technician";"single";"secondary";"no";29;"yes";"no";"unknown";5;"may";151;1;-1;0;"unknown";"no"
色んな説明変数(age、jobなど)と目的変数y
26Copyright © 2015 NTT DATA Corporation
 スマートフォンの加速度・ジャイロセンサから取得したデータを分析して行動を当てます
 データセット:
http://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+S
martphones
 サンプル内容
 テキストファイルとして読み出してRDDとする
 スペース区切り、不要なカラム除去などを経て、学習データを作る
 ロジスティック回帰分析
 テストデータを作って判定する
 Precisionを求める
例2:RDDとMLlib入門
2.8858451e-001 -2.0294171e-002 -1.3290514e-001 -9.9527860e-001 -9.8311061e-001 …
各センサとその統計値が561列ぶん
Copyright © 2015 NTT DATA Corporation 27Copyright © 2015 NTT DATA Corporation 27
まとめ
28Copyright © 2015 NTT DATA Corporation
 Spark1.3までの振り返り
 Spark1.4の注目ポイント
 今どきのSpark活用ポイント
 実際に動かしてみよう
まとめ
Sparkに興味を持った方は、ぜひパッケージをダウンロードしてお手軽に
動かしてみてください。公式ドキュメントのクイックスタートが参考になります。
https://spark.apache.org/docs/latest/quick-start.html
何か気になったことがあれば開発コミュニティにフィードバックを。
本気で使う方はぜひ一緒に開発現場を盛り上げましょう。
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
お問い合わせ先:
株式会社NTTデータ 基盤システム事業本部
OSSプロフェッショナルサービス
URL: http://oss.nttdata.co.jp/hadoop
メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496

Weitere ähnliche Inhalte

Mehr von NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントNTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのことNTT DATA OSS Professional Services
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~NTT DATA OSS Professional Services
 

Mehr von NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
 

Kürzlich hochgeladen

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
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
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
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
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (8)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
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
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
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
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

メキメキ開発の進む Apache Sparkのいまとこれから (Spark Casual Talk #1 発表資料)

  • 1. Copyright © 2015 NTT DATA CorporationCopyright © 2015 NTT DATA Corporation 2015年6月23日 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス 猿田 浩輔/土橋 昌 メキメキ開発の進む Apache Sparkのいまとこれから OSS Professional Service Team Spark Casual Talk #1 (2015/06/23) 発表資料
  • 2. 2Copyright © 2015 NTT DATA Corporation 自己紹介 猿 田 浩 輔 ソフトウェア開発。システムインフラ技 術者。 6年ほどHadoopに関する業務に従事。 近年はSpark関連の取り組みが多い。 2015年6月Sparkコミッタに就任 出版物に「Haodop徹底入門(初版、 第二版)」-翔泳社」、「HADOOP HACKS-オライリージャパン」 土 橋 昌 システムインフラ技術者。データ処理。技術 コンサルティング。 7年ほどHadoop関連の業務に従事。近年 はStorm、Sparkなどの分散処理を中心とし てシステム開発に携わる。 携わったHadoopサーバ台数は数千台。結 果、システム運用にも興味。 結果的に、トラブルシュート、ITインフラの相 談、システム運用、データ処理など広く従事。 講演に「Spark Summit」、「Haodop Conference Japan」、「Hadoopソースコード リーディング」 所属: NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス お仕事: OSSを使ったR&D、システム開発、テクニカルサポート
  • 3. 3Copyright © 2015 NTT DATA Corporation Spark開発の最前線 (猿田) •Sparkの基本おさらい •Spark 1.3までのホットトピックのキャッチアップ •Spark 1.4のアップデート 始めようSpark(土橋) •今から使うとしたら、どう使ったら活かせるか? •Spark使う上で気に留めておきたいこと •Sparkを動かしてみよう with Apache Zeppelin 本発表のアジェンダ
  • 4. Copyright © 2015 NTT DATA Corporation 4Copyright © 2015 NTT DATA Corporation 4 ざっくりおさらい Apache Spark
  • 5. 5Copyright © 2015 NTT DATA Corporation  従来のHadoop MapReduceが苦手としていた、スループットとレイテンシの両 立が必要な問題領域にアプローチするために開発されたOSSのインメモリ分 散処理基盤  UC Barkeleyに所属していたMatei Zaharia(現Databricks CTO)がScalaで 開発した  Hadoop同様、大量のコモディティサーバを束ねて大規模なデータに対して分 散処理を行う  RDDと呼ばれる部分故障への耐性を考慮した分散コレクションに対し、mapや filter、reduceなどの典型的なデータ変換操作を繰り返して目的の結果を得る 処理モデル Apache 最新安定バージョンは1.4.0 RDD RDD RDDRDD ユーザ定義の 処理の流れ フォーマット変換 グルーピング フィルター 集計入力
  • 6. 6Copyright © 2015 NTT DATA Corporation データソース(HDFSなど) Sparkの全体像 • Scala/Java/Pythonで処 理が記述できる • インタラクティブシェルが 付属し、試行錯誤も可能 http://cdn.oreillystatic.com/en/assets/1/event/126/Apache%20Spark_%20What_s%20new_%20what_s%20coming%20Presentation.pdf 分散処理基盤を扱いや すくする便利なエコシス テムが付属している • YARNなどのクラスタ管理基盤と連係動作する • データソースの分散ファイルシステムにはHDFSも利用可能  従来MapReduceで実装していた処理をSparkにマイグレーションしやすい 分散処理エンジンを含むコア部分
  • 7. Copyright © 2015 NTT DATA Corporation 7Copyright © 2015 NTT DATA Corporation 7 Spark 1.3までのホットトピックのキャッチアップ
  • 8. 8Copyright © 2015 NTT DATA Corporation  KafkaのSimpleConsumerAPIを用いてZookeeperを介さず、 SparkStreaming側でオフセット管理を行う。オフセットをWALに書き出 す必要がなくなった  WALとZookeeperの内部状態の不整合が発生しなくなり、より厳密にExactly- Onceが保証されるようになった Kafkaとの連携強化(Spark Streaming)
  • 9. 9Copyright © 2015 NTT DATA Corporation  学習アルゴリズムや最適化アルゴリズムなどのパーツだけではなく、Scikit-Learnのよ うな機械学習全体のパイプラインをサポートするAPIが提供されている Pipeline API(MLlib) val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol("words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(10) .setRegParam(0.01) // パイプラインにトークン分割、ハッシュ化、処理とロジスティック回帰を設定 val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, lr)) val model = pipeline.fit(trainingDataset) // モデルの当てはめ
  • 10. 10Copyright © 2015 NTT DATA Corporation  従来SchemaRDDと呼ばれていたテーブル状のデータ構造がDataFrameと名前を変え た  DataFrameに対してSQLを発行できるだけではなく、DataFrame APIと呼ばれるデータ 処理用のAPIが提供されている  データに名前と型を定義することができるため、構造化されたデータの処理が簡潔に 記述できる  DataFrameはRやPandasとなじみが深いデータ構造なので、分析用途などで利用しや すくなった。 DataFrame API(Spark SQL) RDDをSpark Core APIで操 作するとごちゃごちゃした処 理も、DataFrame APIなら簡 潔に記述でき、可読性やメ ンテナンス性が向上する http://cdn.oreillystatic.com/en/assets/1/event/126/Apache%20Spark_%20What_s%20new_%20what_s%20coming%20Presentation.pdf
  • 11. 11Copyright © 2015 NTT DATA Corporation  Spark SQLでSQLを記述した場合と同様、DataFrame APIを経由したデータ操作も Spark SQLの最適化エンジンの恩恵を受けられる DataFrame API(Spark SQL) http://www.slideshare.net/databricks/introducing-dataframes-in-spark-for-large-scale-data-science • DataFrame APIを活用することでSpark SQLの最適化エンジンの恩恵が受けられる。 • Spark SQLのオプティマイザ経由でバイトコードが生成されるため、Scala/Pythonの 違いによる著しい性能劣化は起こらない。
  • 12. Copyright © 2015 NTT DATA Corporation 12Copyright © 2015 NTT DATA Corporation 12 Spark 1.4のアップデート
  • 13. 13Copyright © 2015 NTT DATA Corporation  RのインターフェイスでSparkが利用できるようになった  ユーザは背後のSparkのコアの動作を意識せずDataFrameの操作を記 述するだけで分散処理が実行できる SparkR R言語で分散 処理が書ける Executorでは Spark SQLの オプティマイザ が生成した ジョブがJVM 上で走行する
  • 14. 14Copyright © 2015 NTT DATA Corporation Spark Streamingの統計情報の可視化 単位時間当たりのデータの 流量や、処理のスループット が確認できる
  • 15. 15Copyright © 2015 NTT DATA Corporation RDDの変換過程の可視化 複雑なRDDの変換チェインや、エコ システムによって生成された変換 チェインの全体像が把握しやすくな り、ボトルネックの発見やアプリ ケーションのチューニングに役立つ val rdd1 = sc.parallelize(list1).map(function1(_)) .reduceByKey(function2(_, _)) .map(function3(_)) val rdd2 = sc.parallelize(list2).union(rdd1)
  • 16. 16Copyright © 2015 NTT DATA Corporation タイムラインの可視化 Executor(Sparkのワーカプロセス)が 起動/停止したタイミングが時系列に表示される Executorが停止したタイミングで影響 を受けたジョブが分かる 各ジョブの開始/終了や ステータスが時系列に表示される Executorごとに、タスクが割り当てられた時間や各タスク の実行時間、処理時間の内訳が確認できる
  • 17. 17Copyright © 2015 NTT DATA Corporation  Sparkで処理されるワークロードのボトルネックがI/OからCPUに現れるようになってき た  昨今ハードウェアトレンドの変化(10G / SSD)  DataFrame APIやExternal Data Sources APIの登場で、無駄なI/Oが発生しにくくなった  Project Tungsten(SPARK-7075)  特に性能にセンシティブな部分の独自のメモリ管理 - メモリ利用効率の向上 - JavaのHashMapなどのデータ構造に見られる間接参照の削減 - GCの削減  キャッシュアウェアなデータ構造とアルゴリズム  モダンなCPUを活用できるコードの動的生成 Project Tungsten
  • 18. 18Copyright © 2015 NTT DATA Corporation  独自のメモリ管理  HashMapをUnsafe APIによる自前のメモリ管理による実装により、集約処理を高速化  中間オブジェクトの生成のオーバーヘッドを軽減  自前でのメモリ管理によってGCによる影響の排除 Project Tungsten https://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html レコードの増加 ごとの集約処 理の秒間スルー プット。Unsafe 版では400万 件の場合でも 劣化が無い
  • 19. Copyright © 2015 NTT DATA Corporation 20Copyright © 2015 NTT DATA Corporation 20 始めようSpark 色々すごい機能もありますが、 まずは気楽に始めるところから…
  • 20. 21Copyright © 2015 NTT DATA Corporation 今から使うとしたら、どう使ったら活かせるか? スキーマレスデータを扱いやすいRDDと構造化されたデータを扱いやすい DataFrameをうまく組み合わせたい •DataFrameは数学的メソッドが追加されるなど充実してきたが、スキーマレスデータは今はRDDの方 が扱いやすい印象 •とはいえ、最適化の恩恵を受けられるのでDataFrameを活用したい ストリーム処理、統計処理、機械学習などのエコシステムを活用して高度な業務 を実現 •ここ1年くらいのソースコードの変更量はコアよりもライブラリの方が多い •MLlibは「分散処理の恩恵を受けられるアルゴリズムを実装する」という方針だが、定番アルゴリズ ムについてはまずまずの充実度。細かな機能が足りない場合はコミュニティに意見を挙げよう DataFrameやExternal Data Sourceの機能を活用して様々なソースからのデー タ統合処理 •構造の異なるデータも柔軟に扱える •大規模データでの動作もだいぶ安定してきた •「汎用的」というところに力点を置いて成長が進んでいる
  • 21. 22Copyright © 2015 NTT DATA Corporation 動かすだけならとても簡単にできる。まじめに動かすなら ばパラメータ設定は必須 •最初に公式のチューニングガイドを読むのがベター https://spark.apache.org/docs/latest/tuning.html •様々な処理内容に対応できる分、追い込むときは各々に合わせる やっぱりScala版実装が最も進んでいるが、最近はPython も頑張っている。SQL風言語もそれなりに利用できる •DataFrameの登場で基本的な足並みがそろってきた •個人的に、SQLで書きたい部分とコレクション操作で書きたい部分の両 方に対応してくれるのはありがたい Spark使う上で気に留めておきたいこと
  • 22. 23Copyright © 2015 NTT DATA Corporation  もっとも簡単な始め方  JDK7、8をインストール  LinuxやMacOSでSparkのパッケージをダウンロード、展開  spark-shellを起動  RDDの使い方 - https://spark.apache.org/docs/latest/programming-guide.html  DataFrameの使い方 - https://spark.apache.org/docs/latest/sql-programming-guide.html#dataframe- operations Sparkを動かしてみよう https://spark.apache.org/downloads.html $ ./bin/spark-shell --master local scala>
  • 23. 24Copyright © 2015 NTT DATA Corporation 本日はZeppelinと一緒にSparkの簡単な動作を紹介 ウェブベースのインタラクティブなノートブック SQL、Scala、Pythonで処理を書けます https://zeppelin.incubator.apache.org/ 開発者Leemoonsooと。 Spark Summit 2015より。
  • 24. 25Copyright © 2015 NTT DATA Corporation  定期預金契約に関するサンプルデータを読み込んで、Sparkで処理します  データセット: http://archive.ics.uci.edu/ml/datasets/Bank+Marketing  サンプル内容  spark-csvを利用して、セミコロン区切りのデータを読み込む  DataFrameのAPIを利用して特定のカラムを抜き出す  Zeppelinでグラフを生成する 例1:DataFrame入門 "age";"job";"marital";"education";"default";"balance";"housing";"loan";"contact";"day";"month";"duration";"campaign";"pdays";"previous";"poutcome";"y" 58;"management";"married";"tertiary";"no";2143;"yes";"no";"unknown";5;"may";261;1;-1;0;"unknown";"no" 44;"technician";"single";"secondary";"no";29;"yes";"no";"unknown";5;"may";151;1;-1;0;"unknown";"no" 色んな説明変数(age、jobなど)と目的変数y
  • 25. 26Copyright © 2015 NTT DATA Corporation  スマートフォンの加速度・ジャイロセンサから取得したデータを分析して行動を当てます  データセット: http://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+S martphones  サンプル内容  テキストファイルとして読み出してRDDとする  スペース区切り、不要なカラム除去などを経て、学習データを作る  ロジスティック回帰分析  テストデータを作って判定する  Precisionを求める 例2:RDDとMLlib入門 2.8858451e-001 -2.0294171e-002 -1.3290514e-001 -9.9527860e-001 -9.8311061e-001 … 各センサとその統計値が561列ぶん
  • 26. Copyright © 2015 NTT DATA Corporation 27Copyright © 2015 NTT DATA Corporation 27 まとめ
  • 27. 28Copyright © 2015 NTT DATA Corporation  Spark1.3までの振り返り  Spark1.4の注目ポイント  今どきのSpark活用ポイント  実際に動かしてみよう まとめ Sparkに興味を持った方は、ぜひパッケージをダウンロードしてお手軽に 動かしてみてください。公式ドキュメントのクイックスタートが参考になります。 https://spark.apache.org/docs/latest/quick-start.html 何か気になったことがあれば開発コミュニティにフィードバックを。 本気で使う方はぜひ一緒に開発現場を盛り上げましょう。
  • 28. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation お問い合わせ先: 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス URL: http://oss.nttdata.co.jp/hadoop メール: hadoop@kits.nttdata.co.jp TEL: 050-5546-2496