SlideShare a Scribd company logo
1 of 23
初めてのSparkStreaming
~Kafka+SparkStreamingの紹介~
2015.09.09
R&D Team: tanaka.yuichi
自己紹介とか
金融系・組み込み系・コミュニティサービス・ゲーム・広告等の各システムを経てDMMへ。
DMM.comラボにおいて、検索システムの刷新、レコメンドエンジンの新規開発など、基
盤技術の開発を担当しております。
サーバーサイド、フロントエンド、ミドルウェア、インフラと領域問わず、提案から構築・実
装まで幅広くやらせてもらっています。その他OSSのcontributor等もやっております。
株式会社 DMM.comラボ
CTO室
こんなのやったりしてます
リアルタイムなトレンドToアイテムのレコメンド
メニュー
• SparkStreamingの概要
• Kafkaの概要
• DMMでの構成サンプル
• ちょっとだけコード
• パフォーマンスの話と困りごと・ハマりどころ
今日話そうと思ってる事
SparkCoreについての説明
Cluster Manager
Yarn
Mesos
Data Source
Stream
HDFS
Cassandra
SparkDStreamの説明
RDDsのまとまりをDStreamとして扱います
RDDと似た関数を持っていて、下記のようなStreamデータを
n秒で分けてバッチ処理をする仕組み
SparkStreamingのInputについて
Basic Source
SocketTextStream(Tcp)
FileStream(HDFS,S3)
Advanced Source
Twitter
Kafka
Kinesis
Flume
今日はKafka+Streamingの話
Kafkaの簡単な紹介
Apache Kafka
Pull型のキューイングシステム
• 高速
• スケーラブル
• 耐久性
• 分散システム
Group2
Kafkaの簡単な紹介
TopicA#partition0
TopicA#partition1
TopicA#partition2
msg
Consumer1#group1
Consumer2#group1
Consumer3#group2
Group1
Brokers
Consumers
DMMで何をやってるのか
余談・蛇足・閑話休題
DMM × 行動解析
Σ( ꒪⌓꒪)え“!!
人にされて嫌な事を人にしたらダメってばっちゃが言ってた
DMMのSparkStreaming周辺の図
概要
ちょっとだけコード(KafkaのStream作成部分)
object ActivitySummary{
def main(args: Array[String]){
val conf = new SparkConf().setAppName("ActivitySummary")
val ssc = new StreamingContext(conf,Seconds(5))
val kafkaParams = Map[String,String](“metadata.broker.list” -> “172.27.xxx.xx:9092,・・・")
val kafkaStream =
KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc,kafkaParams,Se
t("raw_tracking"))
ちょっとだけコード(集計処理の抜粋)
//中間データからPVを数えるよ!
val pv = middle_data
.filter(_._1.contains("_pv_"))
.map(x => x._1.substring(0,x._1.lastIndexOf("_")))
.countByValue()
//pvの移動平均用
val window_pv = middle_data
.filter(_._1.contains("_pv_"))
.map(x => "window_" + x._1.substring(0,x._1.lastIndexOf("_")))
.countByValueAndWindow(Seconds(60),Seconds(5))
//中間データからuuの重複排除
var uu = middle_data
.filter(_._1.contains("_uu_"))
.map(x => x._1)
.transform(rdd => rdd.distinct())
.map(x => x.substring(0,x.lastIndexOf("_")))
.countByValue()
ちょっとだけコード(Streamingからの書き出し抜粋)
class KafkaProducer private(brokerList:String){
val props:Properties = new Properties()
props.put("metadata.broker.list",brokerList)
props.put("serializer.class", "kafka.serializer.StringEncoder")
props.put("request.required.acks", "1")
val config:ProducerConfig = new ProducerConfig(props)
val producer:Producer[String,String] = new Producer[String,String](config)
def send(topicName:String,msg:String){
val data:KeyedMessage[String,String] = new KeyedMessage[String,String](topicName,msg)
producer.send(data)
}
def close(){}
}
object KafkaProducer{
private val kProducer = new KafkaProducer(“172.27.100.14:9092,・・・ ")
def getInstance():KafkaProducer ={ kProducer }
def apply():KafkaProducer ={ getInstance }
}
パフォーマンスの話
そもそもSparkStreamingのパフォーマンスってどう見るの?
パフォーマンスの話
そもそもSparkStreamingのパフォーマンスってどう見るの?
困った話
Spark1.3でkafkaのdirectStream使うとReceiverStatisticsが出ない(1.4で直ってる?)
MaxRatePerPartitionの設定がし辛い
Kafka+Streamingのパフォーマンスで詰まった話
spark-submitコマンドでStreamingのjarを投げる際、2つのexecutorが作成されます。
Driver
Executor
Executor
Kafka#partition0
Kafka#partition1
Kafka#partition2
Kafka#partition3
Kafka#partition4
--executor-cores 1 #各Executorに割り当てるCore数
--num-executors 2 #Executor自体の数
対応例
Driver
Executor
Executor
Kafka#partition0
Kafka#partition1
Kafka#partition2
Kafka#partition3
Kafka#partition4
--executor-cores 1 #各Executorに割り当てるCore数
--num-executors 5 #Executor自体の数
Executor
Executor
Executor
そもそもパフォーマンスを見ようと思って困った話
CDHのYARNアプリケーション画面
SparkStreaming
のアプリ
Sparkのアプリ
そもそもパフォーマンスを見ようと思って困った話
CDHのYARNアプリケーション画面(チャート)
色々なチャート
が見れる
1つのjobにどれだけ時
間がかかったか?
Streamingアプリ
通常のSparkアプリ
以上
2015.09.09
R&D Team: tanaka.yuichi

More Related Content

What's hot

What's hot (20)

SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
 
Apache Sparkの紹介
Apache Sparkの紹介Apache Sparkの紹介
Apache Sparkの紹介
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
 
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...本当にあったHadoopの恐い話Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
本当にあったHadoopの恐い話 Blockはどこへきえた? (Hadoop / Spark Conference Japan 2016 ライトニングトー...
 
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
Spark shark
Spark sharkSpark shark
Spark shark
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
 

Viewers also liked

Life of an Fluentd event
Life of an Fluentd eventLife of an Fluentd event
Life of an Fluentd event
Kiyoto Tamura
 

Viewers also liked (8)

なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013
 
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015SummerHBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
 
「新製品 Kudu 及び RecordServiceの概要」 #cwt2015
「新製品 Kudu 及び RecordServiceの概要」 #cwt2015「新製品 Kudu 及び RecordServiceの概要」 #cwt2015
「新製品 Kudu 及び RecordServiceの概要」 #cwt2015
 
Life of an Fluentd event
Life of an Fluentd eventLife of an Fluentd event
Life of an Fluentd event
 
#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計#cwt2016 Apache Kudu 構成とテーブル設計
#cwt2016 Apache Kudu 構成とテーブル設計
 
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
Apache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentechApache Kudu - Updatable Analytical Storage #rakutentech
Apache Kudu - Updatable Analytical Storage #rakutentech
 

Similar to 初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜

第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
Naoki Shibata
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
taiju higashi
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみた
Jiro Hiraiwa
 
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Takuya Kikuchi
 

Similar to 初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜 (20)

リアルタイムトレンド抽出飛び込み用
リアルタイムトレンド抽出飛び込み用リアルタイムトレンド抽出飛び込み用
リアルタイムトレンド抽出飛び込み用
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
Jslug2 nagoya-shibata
Jslug2 nagoya-shibataJslug2 nagoya-shibata
Jslug2 nagoya-shibata
 
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefサーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
「『カラオケの鉄人』店舗で、クーポン作成 - DTP並みの印刷システム実現の手法」
「『カラオケの鉄人』店舗で、クーポン作成 - DTP並みの印刷システム実現の手法」「『カラオケの鉄人』店舗で、クーポン作成 - DTP並みの印刷システム実現の手法」
「『カラオケの鉄人』店舗で、クーポン作成 - DTP並みの印刷システム実現の手法」
 
baserCMSのstripe連携プラグインを作った話
baserCMSのstripe連携プラグインを作った話baserCMSのstripe連携プラグインを作った話
baserCMSのstripe連携プラグインを作った話
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみた
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
 
The new LINE Ads Platform
The new LINE Ads PlatformThe new LINE Ads Platform
The new LINE Ads Platform
 
機械学習によるマーケット健全化施策を支える技術
機械学習によるマーケット健全化施策を支える技術機械学習によるマーケット健全化施策を支える技術
機械学習によるマーケット健全化施策を支える技術
 
メディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSでメディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSで
 
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
 
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話Win/Mac/Android/iOS向けクロスプラットフォーム開発にXamarinがうまくハマりそうだった話
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
 
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 

Recently uploaded

Recently uploaded (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜

Editor's Notes

  1. 皆知ってるSparkCore。 今回はSparkStreamingの話 リソースマネージャーとしてYARNとMesos DataSourceとしてStream,HDFS,Cassandraとかが上げられます。 DMMではYarnの上で動かしてます。
  2. その他のSparkのライブラリとの違いはデータ操作の基本がRDDかDstreamかの違い。
  3. SparkStreamingはInputとして Basic Source:SocketTestStream,FileStream AdvancedSource,Twitter,Kafka,Kinesis,Flumeが用意されていて、様々なSourceに合わせて簡単にStreamingを始めることができます。
  4. Kafkaの話 Kafkaのメッセージングの仕組みとして メッセージを投入するProducer メッセージを処理するBroker メッセージを受け取るConsumerに分かれます。
  5. Kafkaの話 メッセージはTopic単位に入れることができ、TopicからConsumerがデータを取得します。 ConsumerはGroupを作る事ができ、Group毎に一貫したデータを取得できます。 さらにpartitionを分ける事ができ、msgをpartition毎に入れる事が出来ます。 また、ConsumerはGroupを作る事ができ、Group毎に一貫したデータを取得できます。
  6. じゃぁ、これらを組み合わせて何をやってるのかと言うと、 こんな感じ
  7. すごい余談ですが、 DMMが行動解析やってる話をすると、良く「え“」って言われます。 大丈夫です。世の男性の皆様安心して下さい。 弊社のビッグデータ基盤に個人が特定出来るデータ乗ってません。あと今後ものせません。 安心して使ってください。
  8. 行動ログ(JS) -> apiで受け取りKafkaに入れる kafka -> sparkStreamingで集約・計算処理を行い、HBaseとKafkaに書き込みを行う kafka -> websocketで垂れ流し、例えばviewに流し込み描画する Kafkaから見ると APIがProducer,SparkStreamingがConsumer SparkStreamingがProducer、ViewerがConsumer になります。
  9. Seconds(5)の部分:まず、このStreaming処理は5秒に1度処理されます。(5秒間隔のマイクロバッチ処理) kafkaParameterとして、KafkaのBrokerListを渡してます。 raw_trackingというtopicからデータを取ってきてます。 KafkaUtils.createDirectStreamを今回つかってます。
  10. FilterやMap等、RDDでおなじみの物や、transform、countByValueAndWindow等Dstream特有の物と様々な操作が用意されてます。
  11. Kafkaから取得して、集計したデータを再度Kafkaに戻す部分 topic名とデータを受け取ってkafkaに投げてるだけの簡単仕様になってます。
  12. おなじみのSparkUI 各マイクロバッチ処理をドリルダウンして行くとdurationや各stageでの詳細な情報が見れます
  13. SparkStreamingを使う場合はSparkUIのStreaming部分に情報が表示されます。 マイクロバッチの間隔が表示されてます。 Last Batchに最後に動いたバッチの時間が表示されてます。 ちなみに75%値がBatchInterval超える場合はどんどんDelayが溜まって行き取り返しがつかなくなるので注意 こちらはReceiverの情報で、どのくらいのレコード数を処理したか等が見れます
  14. Sparkのみの構築だと今更1.3を使う事はないだろうけど、CDH使うときは1.3が入るので気をつけて。 ReceiverStatisticsが見れないので、maxRateの設定がし辛い
  15. 1つのexecutorにどれだけのcoreが割り当てられるか?はClusterのSpec次第ですが、 少なくともStreamingのCore数がKafkaのPartition数を下回るとすごく処理が遅いです。DirectStreamを使う場合kafkaとRDDのpartitionが1:1になるので それを処理できるcore数又はexecutor数を当てて上げましょう YARNの場合はcoreはディフォルト1です。
  16. 1つのexecutorにどれだけのcoreが割り当てられるか?はClusterのSpec次第ですが、 少なくともStreamingのCore数がKafkaのPartition数を下回るとすごく処理が遅いです。DirectStreamを使う場合kafkaとRDDのpartitionが1:1になるので それを処理できるcore数又はexecutor数を当てて上げましょう YARNの場合はcoreはディフォルト1です。
  17. CDHとっても便利です。 どのくらいCPU使ってるか?メモリの割当どうか?Mapperがどのくらい終わってるか?Reducerがどのくらい終わってるかを見る事が出来る でもSparkStremingは出力されない
  18. CDHはチャートも見れてとっても便利です。 CPU時間とかメモリの割当とかHDFSのバイト数とかどのくらいの時間がかかったとか見れる でも此処に中途半端にSparkStreamingのアプリケーションも入っちゃう 経過時間の分布でチューニング対象のSparkアプリケーション調べようとすると SparkStreamingのアプリが邪魔して使い物にならない・・・・