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

SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイントTanaka Yuichi
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめTanaka Yuichi
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話x1 ichi
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウFuture Of Data Japan
 
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Tanaka Yuichi
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜x1 ichi
 
本当にあった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 ライトニングトー...NTT DATA OSS Professional Services
 
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~sugiyama koki
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームKazutaka Tomita
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Sotaro Kimura
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
ビッグデータ活用を加速する!分散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 FallYusukeKuramata
 

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

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

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の紹介〜

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

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

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (8)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

初めての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のアプリが邪魔して使い物にならない・・・・