SlideShare a Scribd company logo
Spark  Streaming  +  Amazon  Kinesis
@imai_̲factory
Spark  Streaming
•  Sparkの主要機能のひとつで、ストリーム処
理理を実装するのを容易易化してくれる。
•  データソースにはKafkaやKinesisを利利⽤用でき
る。
•  時系列列に並ぶ無限⻑⾧長のRDD配列列をDStream
というオブジェクトに抽象化してくれる。
FRPっぽい書き⽅方が簡単に実現できる。
先にConclusion
•  KinesisのConsumerを書く⼿手段はいろいろある
が、Spark  Streamingを使うと、とてもプログ
ラマフレンドリに書ける!
•  ストリームにスライディングウィンドウなSQL
かける、みたいな処理理が⾃自然に書ける!
•  プログラマが、あまりKinesisについて気にせず
にコードを書けるのがこの構成の⼀一番のメリッ
トだと思っている。
RDD
@t1
RDD
@t2
RDD
@t3
DStream
Time
RDD
@t4
RDD
@t5
DStream
Programming  with  DStream
val conf = SparkConf()!
val ssc = StreamingContext(conf, Seconds(1))!
!
val lines = lines.ssc.socketTextStream(“localhost”,9999)!
val words = lines.flatMap(_.split(“ “))!
!
val pairs = words.map(word => (word, 1))!
val count = pairs.reduceByKey(_ + _)!
count.print()!
!
ssc.satrt()!
ssc.awaitTermination()!
Programming  with  DStream
val conf = SparkConf()!
val ssc = StreamingContext(conf, Seconds(1))!
!
val lines = lines.ssc.socketTextStream(“localhost”,9999)!
val words = lines.flatMap(_.split(“ “))!
!
val pairs = words.map(word => (word, 1))!
val count = pairs.reduceByKey(_ + _)!
count.print()!
!
ssc.satrt()!
ssc.awaitTermination()!
Programming  with  DStream
val conf = SparkConf()!
val ssc = StreamingContext(conf, Seconds(1))!
!
val lines = lines.ssc.socketTextStream(“localhost”,9999)!
val words = lines.flatMap(_.split(“ “))!
!
val pairs = words.map(word => (word, 1))!
val count = pairs.reduceByKey(_ + _)!
count.print()!
!
ssc.satrt()!
ssc.awaitTermination()!
Programming  with  DStream
val conf = SparkConf()!
val ssc = StreamingContext(conf, Seconds(1))!
!
val lines = lines.ssc.socketTextStream(“localhost”,9999)!
val words = lines.flatMap(_.split(“ “))!
!
val pairs = words.map(word => (word, 1))!
val count = pairs.reduceByKey(_ + _)!
count.print()!
!
ssc.satrt()!
ssc.awaitTermination()!
DStream
Flume
Kafka
Kinesis
Twitter
File
Socket
Data  sources
Amazon  Kinesis
•  フルマネージドなストリームサービス/
メッセージブローカー
•  平たくいうとマネージドなKafkaに近い
•  マネージドなので
– 運⽤用の⼿手間がいらない
– スループットをほしいだけ設定すればそれだ
けで使える
Amazon  Kinesis
Amazon  Kinesis
Data	
  stream	
   Store,	
  Shuffle	
  &	
  Sort	
  
Consumer  apps
Consumer  apps
Consumer  apps
Process	
  
Spark  Streaming  +Amazon  Kinesis
Amazon  Kinesis
Data	
  stream	
   Store,	
  Shuffle	
  &	
  Sort	
   Process	
  
Spark  Streaming  +Amazon  Kinesis
•  Kinesisに投⼊入されたデータをSparkを
使って処理理が書ける
•  Kinesisのストリームに対して
– ウィンドウ関数+SparkSQLしたりできる。
– のちほどデモします
•  KinesisのConsumerを、とてもプログラ
マフレンドリに書ける!
Building  Amazon  Kinesis  
Consumer  app
Amazon  Kinesis
Data	
  stream	
   Store,	
  Shuffle	
  &	
  Sort	
  
API,  SDKを使ってスクラッチ実装
KCLを使って実装
AWS  Lambda
Process	
  
SparkのKinesisインテグレーションも、Stormのkinesis-‐‑‒spoutも下のほうのレイ
ヤでKCLを使っている
StormやSparkを使う
↑まちがいでした。はてブコメントに感謝です	
  
Amazon  Kinesis
Data	
  stream	
   Store,	
  Shuffle	
  &	
  Sort	
   Process	
  
Run  SparkSQL  on  Kinesis  Stream
SQL	
  
Run  SparkSQL  on  Kinesis  Stream
import org.apache.spark.streaming.kinesis.KinesisUtils!
!
val kinesisStreams = (0 until numStreams).map { i =>!
KinesisUtils.createStream(!
ssc, streamName, endpointUrl, kinesisCheckpointInterval,!
InitialPositionInStream.LATEST, StorageLevel.MEMORY_ONLY!
)!
}!
val unionStreams = ssc.union(kinesisStreams)!
val words = unionStreams.flatMap(...)!
import org.apache.spark.streaming.kinesis.KinesisUtils!
!
val kinesisStreams = (0 until numStreams).map { i =>!
KinesisUtils.createStream(!
ssc, streamName, endpointUrl, kinesisCheckpointInterval,!
InitialPositionInStream.LATEST, StorageLevel.MEMORY_ONLY!
)!
}!
!
val unionStreams = ssc.union(kinesisStreams)!
!
val words = unionStreams.flatMap(...)!
Run  SparkSQL  on  Kinesis  Stream
Dstreamの配列列
DstreamをひとつにUNION
Dstreamに対するTransformation
words.foreachRDD(foreachFunc = (rdd: RDD[String], time: Time) => {!
!
val sqlContext = SQLContextSingleton.getInstance(rdd.sparkContext)!
!
sqlContext.read.json(rdd).registerTempTable("words")!
!
val wordCountsDataFrame =!
sqlContext.sql(”””select level, count(*) as total !
from words!
group by level”””)!
!
println(s"========= $time =========")!
wordCountsDataFrame.show()!
!
})!
DStream
Run  SparkSQL  on  Kinesis  Stream
JSONデー
タを直接取
り扱える。
Conclusion
KinesisのConsumerを書く⼿手段はいろいろ
あるが、Spark  Streamingを使うと、とて
もプログラマフレンドリに書ける!
PluggableInputDStream
KinesisReceiver
KinesisClientLibrary
Worker  thread
KinesisUtils.createStream(!
ssc, streamName, endpointUrl, kinesisCheckpointInterval,!
InitialPositionInStream.LATEST, StorageLevel.MEMORY_ONLY!
)!
	
  
DynamoDB  Table
Kinesis  Stream
Under  the  hood
GetRecords
Checkpoint
One  more  thing:
Amazon  EMR  now  supports  Apache  Spark!
•  EMRクラスタ起動時に
Sparkを選択するだけで利利
⽤用可能!
•  2015/06/23時点では
Spark1.3.1のみがサポー
ト
One  more  thing:
Amazon  EMR  now  supports  Apache  Spark!
Amazon  Kinesis Amazon  EMR
+	
  

More Related Content

PDF
俺の俺による俺のための App Service Environment
PPTX
Deep Dive into Apache Kafka
PDF
Hiveを高速化するLLAP
PDF
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
PDF
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
PPTX
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
PPTX
Dockerからcontainerdへの移行
PDF
Integrating Apache Kafka and Elastic Using the Connect Framework
俺の俺による俺のための App Service Environment
Deep Dive into Apache Kafka
Hiveを高速化するLLAP
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
Dockerからcontainerdへの移行
Integrating Apache Kafka and Elastic Using the Connect Framework

What's hot (20)

PDF
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
PDF
“見てわかる” ファイバーチャネルSAN基礎講座(第3弾)~間違わない!FC SAN導入のヒントとコツ~
PPTX
クラウドでも非機能要求グレードは必要だよね
PDF
OpenStackでも重要な役割を果たすPacemakerを知ろう!
PDF
組織の問題も解決するアーキテクチャ BackendsForFrontends
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PPTX
AWS Site-to-Site VPN with IKEv2 from CGW under NAT and served with PrivateLink.
PDF
TLS 1.3 と 0-RTT のこわ〜い話
PDF
Automate your network with Ansible and NAPALM
PDF
データセンターネットワークの構成について
PDF
Oracle Database Applianceのご紹介(詳細)
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
“見てわかる” ファイバーチャネルSAN基礎講座(第2弾)~FC SAN設計における勘所とは?~
PDF
MHA for MySQLとDeNAのオープンソースの話
PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
“見てわかる” ファイバーチャネルSAN基礎講座(第3弾)~間違わない!FC SAN導入のヒントとコツ~
クラウドでも非機能要求グレードは必要だよね
OpenStackでも重要な役割を果たすPacemakerを知ろう!
組織の問題も解決するアーキテクチャ BackendsForFrontends
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
[JAWS-UG Tokyo 32] AWS Client VPNの特徴
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
AWS Site-to-Site VPN with IKEv2 from CGW under NAT and served with PrivateLink.
TLS 1.3 と 0-RTT のこわ〜い話
Automate your network with Ansible and NAPALM
データセンターネットワークの構成について
Oracle Database Applianceのご紹介(詳細)
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
今改めて学ぶ Microsoft Azure 基礎知識
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
“見てわかる” ファイバーチャネルSAN基礎講座(第2弾)~FC SAN設計における勘所とは?~
MHA for MySQLとDeNAのオープンソースの話
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Ad

Viewers also liked (20)

PDF
Hadoop概要説明
PDF
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
PPTX
Kinesis and Spark Streaming - Advanced AWS Meetup - August 2014
PDF
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
PDF
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
PDF
APNのメリットを再確認してみた 20150907
PDF
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
PPTX
Spark streamingを使用したtwitter解析によるレコメンドサービス例
PDF
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
PDF
elasticsearch-hadoopをつかってごにょごにょしてみる
PDF
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
PDF
What's Amazon Athena? - re:Growth 2016 Osaka
PDF
SparkやBigQueryなどを用いた モバイルゲーム分析環境
PDF
Awsでつくるapache kafkaといろんな悩み
PDF
オンプレミスから AWS への劇的ビフォーアフター
PPTX
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
PPTX
Life of an Fluentd event
PDF
Building Real-Time Data Pipelines with Kafka, Spark, and MemSQL
PDF
AWSスポットインスタンスの真髄
PDF
Apache Spark の紹介(前半:Sparkのキホン)
Hadoop概要説明
分散処理基盤ApacheHadoop入門とHadoopエコシステムの最新技術動向(OSC2015 Kansai発表資料)
Kinesis and Spark Streaming - Advanced AWS Meetup - August 2014
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
APNのメリットを再確認してみた 20150907
Twitter分析のためのリアルタイム分析基盤@第4回Twitter研究会
Spark streamingを使用したtwitter解析によるレコメンドサービス例
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
elasticsearch-hadoopをつかってごにょごにょしてみる
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
What's Amazon Athena? - re:Growth 2016 Osaka
SparkやBigQueryなどを用いた モバイルゲーム分析環境
Awsでつくるapache kafkaといろんな悩み
オンプレミスから AWS への劇的ビフォーアフター
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Life of an Fluentd event
Building Real-Time Data Pipelines with Kafka, Spark, and MemSQL
AWSスポットインスタンスの真髄
Apache Spark の紹介(前半:Sparkのキホン)
Ad

Similar to Spark Streaming + Amazon Kinesis (20)

PDF
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
PDF
LambdaとMobileの美味しいかもしれない関係
PDF
Androidを中心に紐解くIoT
PDF
Scala: Mobile Backend on AWS
PDF
Serverless Revolution
PDF
Deep Dive into Spark SQL with Advanced Performance Tuning
PDF
[要約] Building a Real-Time Bidding Platform on AWS #AWSAdTechJP
PDF
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
PPTX
Sparkにプルリク投げてみた
PDF
Amazon EC2 Container Service Deep dive
PDF
CloudFormation (CFn)入門(公開用)
PDF
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
PDF
Growing up serverless
PDF
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
PPTX
Azure Antenna AI 概要
PDF
AWS Black Belt Techシリーズ AWS SDK
PDF
AWS Summit New York 2017 Keynote Recap
PDF
Amazon Web Services 最新事例集
PDF
Accelerating AdTech on AWS #AWSAdTechJP
PDF
Scaling on AWS - Feb 2016
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
LambdaとMobileの美味しいかもしれない関係
Androidを中心に紐解くIoT
Scala: Mobile Backend on AWS
Serverless Revolution
Deep Dive into Spark SQL with Advanced Performance Tuning
[要約] Building a Real-Time Bidding Platform on AWS #AWSAdTechJP
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Sparkにプルリク投げてみた
Amazon EC2 Container Service Deep dive
CloudFormation (CFn)入門(公開用)
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
Growing up serverless
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Azure Antenna AI 概要
AWS Black Belt Techシリーズ AWS SDK
AWS Summit New York 2017 Keynote Recap
Amazon Web Services 最新事例集
Accelerating AdTech on AWS #AWSAdTechJP
Scaling on AWS - Feb 2016

More from Yuta Imai (20)

PPTX
Node-RED on device to Apache NiFi on cloud, via SORACOM Canal, with no Internet
PDF
HDP2.5 Updates
PDF
Deep Learning On Apache Spark
PDF
Hadoop in adtech
PDF
Hadoop/Spark セルフサービス系の事例まとめ
PDF
IoTアプリケーションで利用するApache NiFi
PDF
OLAP options on Hadoop
PDF
Apache ambari
PDF
Spark at Scale
PDF
Dynamic Resource Allocation in Apache Spark
PDF
Apache Hiveの今とこれから - 2016
PDF
Hadoop最新事情とHortonworks Data Platform
PDF
Benchmark and Metrics
PDF
Hadoop and Kerberos
PDF
オンラインゲームの仕組みと工夫
PDF
Amazon Machine Learning
PDF
Global Gaming On AWS
PDF
Digital marketing on AWS
PDF
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
PPTX
クラウドネイティブなアーキテクチャでサクサク解析
Node-RED on device to Apache NiFi on cloud, via SORACOM Canal, with no Internet
HDP2.5 Updates
Deep Learning On Apache Spark
Hadoop in adtech
Hadoop/Spark セルフサービス系の事例まとめ
IoTアプリケーションで利用するApache NiFi
OLAP options on Hadoop
Apache ambari
Spark at Scale
Dynamic Resource Allocation in Apache Spark
Apache Hiveの今とこれから - 2016
Hadoop最新事情とHortonworks Data Platform
Benchmark and Metrics
Hadoop and Kerberos
オンラインゲームの仕組みと工夫
Amazon Machine Learning
Global Gaming On AWS
Digital marketing on AWS
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
クラウドネイティブなアーキテクチャでサクサク解析

Spark Streaming + Amazon Kinesis