Enviar búsqueda
Cargar
Stormとその周辺 2013.03.15
•
Descargar como PPTX, PDF
•
1 recomendación
•
1,304 vistas
Minoru Chikamune
Seguir
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 26
Descargar ahora
Recomendados
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
AdvancedTechNight
Stormのパフォーマンス分析
Stormのパフォーマンス分析
Ken IshiKen
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
AdvancedTechNight
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
AdvancedTechNight
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
Etsuji Nakai
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
Daichi Egawa
Recomendados
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
AdvancedTechNight
Stormのパフォーマンス分析
Stormのパフォーマンス分析
Ken IshiKen
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
AdvancedTechNight
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
AdvancedTechNight
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
Etsuji Nakai
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
Daichi Egawa
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Seiichiro Ishida
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
Nobuyuki Tamaoki
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
Toru Makabe
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
NTT DATA OSS Professional Services
Eucalyptus infra technology
Eucalyptus infra technology
Etsuji Nakai
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Satoshi Shimazaki
Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221
Etsuji Nakai
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
LeapMind Inc
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
Etsuji Nakai
20130329 rtm3
20130329 rtm3
openrtm
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
Etsuji Nakai
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
Chika SATO
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
Satoshi Shimazaki
RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能
Etsuji Nakai
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
samemoon
AspectJによるJava言語拡張 2012.09.07
AspectJによるJava言語拡張 2012.09.07
Minoru Chikamune
省メモリーに関するデザインパターン 2011.04.18
省メモリーに関するデザインパターン 2011.04.18
Minoru Chikamune
Más contenido relacionado
La actualidad más candente
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Seiichiro Ishida
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
Nobuyuki Tamaoki
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
Toru Makabe
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
NTT DATA OSS Professional Services
Eucalyptus infra technology
Eucalyptus infra technology
Etsuji Nakai
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Satoshi Shimazaki
Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221
Etsuji Nakai
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
LeapMind Inc
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
Etsuji Nakai
20130329 rtm3
20130329 rtm3
openrtm
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
Etsuji Nakai
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
Chika SATO
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
Satoshi Shimazaki
RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能
Etsuji Nakai
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
samemoon
La actualidad más candente
(20)
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
Eucalyptus infra technology
Eucalyptus infra technology
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
20130329 rtm3
20130329 rtm3
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
バックアップことはじめ JPUG第29回しくみ+アプリケーション分科会(2014-05-31)
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
オープンソースのクラウド基盤 CloudStack技術解説~ストレージ編~
RDOで体験! OpenStackの基本機能
RDOで体験! OpenStackの基本機能
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
Destacado
AspectJによるJava言語拡張 2012.09.07
AspectJによるJava言語拡張 2012.09.07
Minoru Chikamune
省メモリーに関するデザインパターン 2011.04.18
省メモリーに関するデザインパターン 2011.04.18
Minoru Chikamune
「Googleを支える技術」の解説 2010.08.23
「Googleを支える技術」の解説 2010.08.23
Minoru Chikamune
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
Minoru Chikamune
有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25
Minoru Chikamune
D3によるデータビジュアライゼーション 2013.09.13
D3によるデータビジュアライゼーション 2013.09.13
Minoru Chikamune
「Raspberry pi」勉強会 2015.03.20
「Raspberry pi」勉強会 2015.03.20
Minoru Chikamune
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
Minoru Chikamune
「Lispインタープリター」勉強会 2014.12.04
「Lispインタープリター」勉強会 2014.12.04
Minoru Chikamune
Hadoop / MapReduce とは
Hadoop / MapReduce とは
Takeshi Matsuoka
CDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokuben
Cloudera Japan
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark application
Tatsuhiro Chiba
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
オラクルエンジニア通信
AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16
Amazon Web Services Japan
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Hadoop / Spark Conference Japan
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
Yifeng Jiang
MapReduce入門
MapReduce入門
Satoshi Noto
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Hadoop / Spark Conference Japan
Destacado
(20)
AspectJによるJava言語拡張 2012.09.07
AspectJによるJava言語拡張 2012.09.07
省メモリーに関するデザインパターン 2011.04.18
省メモリーに関するデザインパターン 2011.04.18
「Googleを支える技術」の解説 2010.08.23
「Googleを支える技術」の解説 2010.08.23
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
「グーグルの自動運転Carの技術要素」勉強会 2014.08.29
有名論文から学ぶディープラーニング 2016.03.25
有名論文から学ぶディープラーニング 2016.03.25
D3によるデータビジュアライゼーション 2013.09.13
D3によるデータビジュアライゼーション 2013.09.13
「Raspberry pi」勉強会 2015.03.20
「Raspberry pi」勉強会 2015.03.20
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「Lispインタープリター」勉強会 2014.12.04
「Lispインタープリター」勉強会 2014.12.04
Hadoop / MapReduce とは
Hadoop / MapReduce とは
CDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokuben
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark application
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
AWS IoT アップデート 2016.02.16
AWS IoT アップデート 2016.02.16
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
MapReduce入門
MapReduce入門
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Similar a Stormとその周辺 2013.03.15
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
Midori Oge
できる!KickstartとAnsible!
できる!KickstartとAnsible!
Wataru NOGUCHI
世界征服を目指すJubatusだからこそ期待する5つのポイント
世界征服を目指すJubatusだからこそ期待する5つのポイント
NTT DATA OSS Professional Services
20101029 open cloudcampus-1
20101029 open cloudcampus-1
Masanori Itoh
20150523 operation jaws(JAWS-UG OSAKA #13)
20150523 operation jaws(JAWS-UG OSAKA #13)
Daiki Mori
ロボコン勉強会向けStm32を用いてマスタースレーブシステム
ロボコン勉強会向けStm32を用いてマスタースレーブシステム
DoNabe1
MeeGo Seminar Winter Porting 20101209
MeeGo Seminar Winter Porting 20101209
Mitz Amano
Android起動周りのノウハウ
Android起動周りのノウハウ
chancelab
Jubatus tutorial
Jubatus tutorial
JubatusOfficial
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
1Uサーバーから始めるスケーラブルな「mCloud Project Server」
1Uサーバーから始めるスケーラブルな「mCloud Project Server」
Satoshi Konno
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Yuichiro Saito
July techfesta2014 f30
July techfesta2014 f30
Motoki Kakinuma
機械学習とJubatus
機械学習とJubatus
Junya Yamaguchi
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
NTT DATA OSS Professional Services
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
Utmをつくってみた202001
Utmをつくってみた202001
Takamune Konishi
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
Tomotsune Murata
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
SORACOM, INC
Similar a Stormとその周辺 2013.03.15
(20)
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
できる!KickstartとAnsible!
できる!KickstartとAnsible!
世界征服を目指すJubatusだからこそ期待する5つのポイント
世界征服を目指すJubatusだからこそ期待する5つのポイント
20101029 open cloudcampus-1
20101029 open cloudcampus-1
20150523 operation jaws(JAWS-UG OSAKA #13)
20150523 operation jaws(JAWS-UG OSAKA #13)
ロボコン勉強会向けStm32を用いてマスタースレーブシステム
ロボコン勉強会向けStm32を用いてマスタースレーブシステム
MeeGo Seminar Winter Porting 20101209
MeeGo Seminar Winter Porting 20101209
Android起動周りのノウハウ
Android起動周りのノウハウ
Jubatus tutorial
Jubatus tutorial
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
1Uサーバーから始めるスケーラブルな「mCloud Project Server」
1Uサーバーから始めるスケーラブルな「mCloud Project Server」
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
July techfesta2014 f30
July techfesta2014 f30
機械学習とJubatus
機械学習とJubatus
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Utmをつくってみた202001
Utmをつくってみた202001
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
はじめてのアマゾンクラウド②[仮想サーバ(Amazon EC2)を立ち上げる]
Stormとその周辺 2013.03.15
1.
ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:info@ulsystems.co.jp Tel: 03-6220-1420 Fax:
03-6220-1402 ULS Copyright © 2013 UL Systems, Inc. All rights reserved. Stormとその周辺 2013/3/15 講師役:近棟 稔
2.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. はじめに 2011年にTwitterのNathan Marz氏(元BackType社所属)らが開発した「Storm」がオー プンソースとして公開されました。 Stormは、時々刻々と生み出されるストリームデータを並列分散処理するための基盤で す。世の中的にはEDA(Event Driven Architecture)を実現するためのCEP基盤と位置 づけられると思います。ただし、Stormは、かなりプリミティブな機能を提供します。CEPと いうよりも、やはり汎用の並列分散処理基盤だと考えたほうが正確だと思います。 Stormを一言で表現すると、「Javaのスレッドのようなものを複数台で走らせることが出 来るようにしたもの」だと思います。JavaではひとつのJavaVMの中でconcurrentフレー ムワークを用いたマルチスレッド処理を記述しますが、 concurrentフレームワークは1プ ロセスのJavaVM内に閉じた計算しか出来ません。それをクラスター上で動かせるように したのがStormであると考えても良いかもしれません。 Stormの利用局面も、 concurrentフレームワークを利用したくなるシーンに似ています。 例えば、可能な限り多くのCPUを使った大量の計算処理を高速に行いたい場合に向い ています(例:科学計算や人工知能分野)。また、巨大なデータをある程度の大きさに分 割して個別のCPUで処理したい場合にも向いています。もちろんストリーム処理にも向 いていますが、CPU負荷が高くない(マルチスレッド処理でまかなえる)ストリーム処理に はオーバースペックだと思います。 1
3.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. パイプライン処理の振り返り [お題] システムが単一フォルダーに出力する10個のログファイルから、ERRORログが何行書かれ ているかを取得したい状況を考えます。なお、問題を簡単にするために、ERRORログはgrep ERRO R で抽出可能とします。 普段、なにげなく使っているパイプ「|」を使った上記の処理は、一般に「(ソフトウエア)パイプライン 処理」といいます。このパイプライン処理は、以下の様な非常に優秀な特徴を備えています。 パイプラインで繋がれた各プロセスは、並列実行されます。上記の例では、cat と grep と wc が並列実行さ れます。grepはcatが行を吐き出すたびにそれに追随して行のフィルタリングを行いますし、wcはgrepがフィ ルタリングした行が出力されるたびにそれに追随して行をカウントします。 データを貯めこまず、逐次実行されるため、処理全体としてメモリーをあまり必要としません。 並列実行される各プロセスは処理速度に差がありますが、その速度差をパイプラインは自動調整ししてくれ ます。 各パイプは適切にバッファリングを行います。このバッファリングによって、処理に緩急がある場合でも、ス ループットを可能な限り上げることが可能になります。 2 $ cat *.log | grep ERROR | wc -l 答えの例 (UNIXもしくはそれに類する環境で) • cat *.log によって、全ファイルをダンプします。 • 標準出力で出てきたデータをパイプで受け取って、grepにかけます。 • 絞られたログをwc (Word Count)にかけて、行数をカウントします。 cat grep wc バッファ 速度調整 バッファ 速度調整 並列実行 (処理全体として省メモリ) read 10ファイル
4.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. 並列処理の振り返り 並列処理は、マルチスレッドプログラミングでよく行う方法です。 入力データをある程度のかたまりに分割して、ワーカースレッドに渡して処理させます。ワーカース レッドの数をCPUコア数の数倍程度に増やせば、複数のCPUコアをうまく利用した処理が可能にな ります。 並列処理はパイプライン処理(直列処理)と併用可能ですので、実際には混ぜて使います。 3 データ分割 処理 処理 処理 処理 データ統合 出力データ入力データ ワーカースレッド 処理 処理 処理 処理 処理 処理 処理 処理処理 処理 処理 入力 データ 出力 データ 処理 出力 データ Stormは、これ↑をサポートします
5.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormはパイプライン処理と並列処理の両方をサポートします StormとUNIXのパイプライン処理の共通点 StormがUNIXのパイプライン処理と異なる所 4 共通点 説明 ストリーム処理であること Stormの処理はストリームに対する処理です。パイプライン上のプロセスは、入力を受け取り次第、 自分の受け持ち処理をして、後続処理に渡します。 自動速度調整 ストリーム上にボトルネックとなるノードが存在する場合、そのノードに歩調を合わせて全体のスト リームの処理速度が決まります。 バッファの存在 Stormもプロセス間の速度差を調整するためのバッファーがあります。Stormのバッファーは キューで実現されています。 相違点 説明 プロセスの入出力ストリーム は何本でも持てる UNIXのパイプライン処理はコマンドラインベースの場合、標準入力や標準出力など限られたスト リームを使います。しかし、Stormの場合は任意の本数の入力ストリームと出力ストリームを扱うこ とが可能です。(UNIXも名前付きパイプを使えば複数のストリームを扱えるのと似ている) 並列処理可能 典型的なUNIXのパイプライン処理と異なり、Stormは並列処理も可能です。Stormでは直列にも 並列にも処理を分散可能なので、処理の特性に応じた構成に調整することが可能です。この、処理 (ストリーム)の繋がりをStormではトポロジーといいます。 メッセージの処理保証 Stormはトポロジー上を流れるデータが完全に流れたか否かをトラッキングする事が可能です。こ のことにより、個々のメッセージが、少なくとも一度は処理がされた事を保証可能です。 スケールアウト可能 Stormは複数台のマシンを用いてスケールアウトさせることを前提としています。UNIXのパイプで もnetcatなどを組み合わせれば可能ではあるものの、実運用には耐えられません。 耐障害性 ノードが一部落ちた場合であっても、システム全体が落ちることのない、耐障害性を持っています。 この性質は、後述するZooKeeper によって得ています。
6.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormの構成要素 Stormは独特な要素で構成されています。 5 要素 英語的な意味 構成要素の説明 Spout 吹き出し口 Spoutは処理対象のデータストリームを生成するコンポーネントです。Spoutはデータストリーム をDBやMQやRPCなどからデータを取得し、後続の処理に渡す役割をします。データストリーム は何種類でも作成可能です。また、別の重要な役割として、後続の処理すべてでメッセージが処 理し終えた際に、その通知を受け取るコンポーネントでもあります。 Bolt 稲妻 thunderbolt (雷電, 落雷) 重い処理を分散して行う、ワーカーとして振る舞うコンポーネントです。Boltは複数種類の入力ス トリームを受け取り、複数種類の出力ストリームに吐き出します。Boltは別のBoltへ出力ストリー ムを渡すこともあります。また、DBの読み書きやRPC呼び出しをBolt内に記述することもありま す。 Tuple Pythonなどの言語で 扱う「タプル」と同義 レコード。組。 SpoutやBoltが入出力する単位は「タプル」と呼ばれるレコード(組)になります。DBの1レコード 相当のものをSpoutやBoltはストリーム上でやり取りします。なお、タプルの定義(スキーマ定義 と類似)はストリーム毎に行います。 Topolo gy ネットワーク構成、繋 がりの形 StormではSpoutとBoltがネットワーク状に接続された状態で動作します。この、SpoutとBolt の接続状態をStormではTopologyと呼びます。Topologyは、並列実行の指示、タプルのグ ルーピング方法などの情報も保持します。 ストリームには以下のものが付随します。 ・streamId(ストリームの名前) ・流れるTupleの定義 Spout Bolt Bolt Tuple SpoutやBoltには以下のものが付随します。 ・ componentId ・複数の出力ストリームの定義 Tuple Tuple
7.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. SpoutとBoltのイメージ SpoutもBoltも複数のストリームを扱うことが可能です。 6 Spout Bolt 複数の 出力ストリーム (Tupleが流れる) 複数の 入力ストリーム (Tupleが流れる) 複数の 出力ストリーム (Tupleが流れる) • DB • キュー • ソケット入力 • RPC呼び出しなど
8.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormのプログラム例:数を数えさせてみる Spoutから数値を機械的に振り出し、その数をBoltで数えるサンプルを作ってみます。 7 NumSpout CountBoltack / fail ... 5 4 3 2 1 Topologyの定義 componentID 並列数
9.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. NumSpoutの実装 数値を出力するNumSpoutの実装は以下の通りです。 8 初期化 Spoutの出力フォーマット "default"の名前でストリームを1つ作成している。 自分で名前を付けて複数のストリームを記述することも 可能 数値を出力するロジック本体 emitはこのメソッド内で何度やっても大丈夫。 トポロジーを正常に通り抜けてきた場合は、 ここでそのメッセージIDが通知される トポロジーを正常に通り抜ける事が出来なかった場合は、 ここでそのメッセージIDが通知される ackやfailで利用するメッセージIDは自分で指定する
10.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. CountBoltの実装 メッセージの数を数えるCountBoltの実装を以下に示します。このBoltは出力をしないた めdeclareOutputFieldsが空実装になっています。 9 初期化 Boltの出力フォーマットの定義は無し メッセージをカウントするロジック本体 Tupleの1項目目を取得 正常に処理したことを伝達
11.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. 単一のJVM環境で実行 (デバッグ用) Stormは単一のJVM環境でTopologyを実行可能です。主にデバッグ用に利用します。 起動すると、通常のmainから実行するJavaアプリケーションとして動作し、Stormのすべ ての内部モジュールを単一のJVM内で立ち上げた後、ここで作成したTopologyが実行 されます。 実行すると、プログラムを止めるまでNumSpoutは数字を吐き出し続け、CountBoltはそ れを数え続けます。 10 このモードで実行
12.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormクラスターで実行 Stormクラスターで実行するには、以下の部分が実行されるようにします。 Stormクラスターで実行するには、Stormクラスターをセットアップする必要があるため、 まずはセットアップ方法を説明します。 11 このモードで実行
13.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormクラスターのセットアップ Stormクラスターのセットアップには以下のステップを踏みます。 Linux環境を用意 ZooKeeperのインストール(Linuxのパッケージになっているものをそのまま使います) ZMQライブラリのインストール(これもLinuxパッケージになっています) JZMQのコンパイル(nathanmarz作成のZMQのJavaラッパーです。JNIでラッピングされている ため、C++でのコンパイルが必要です) Stormの配布パッケージをダウンロードし、好きな場所に展開。binフォルダーにPATHを通して おく。 少し大変なのは、JZMQのコンパイルでした。私が試した際にはビルドスクリプトがうまく 動きませんでした。一旦コンパイル出来てしまえば作られるのは単なるシェアードライブ ラリですので、ビルドスクリプトがうまく動作すればここも問題なかったはずです。 重要な設定ファイルは以下の2つです。複数マシンでクラスター環境を作る場合は設定 が必要になります。単一マシンにすべてのソフトウエアをセットアップする場合はデフォ ルトの設定で大丈夫です。 zookeeperの設定ファイル Stormの設定ファイル(クラスター側とクライアント側) 私が試したのは、Ubuntu 12.10 Desktop版 の環境です。他のLinuxディストリビュー ションでも同様の作業となります。なお、Windows上でのセットアップはハードルが高い と思われます。 12
14.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormクラスターの起動 Stormクラスターは以下の手順で実行します。 zookeeperをスタートします。Ubuntuの場合は、インストールすると自動起動しました。 「storm nimbus」でnimbusを起動します。 「storm supervisor」でsupervisorを起動します。 「storm ui」でStormのユーザーインターフェースを起動します。 すべて起動すると、以下のUIで起動状況を確認可能です。 13 zooinspector (zookeeperが管理している情報を閲覧) Storm UI (Stormで動作しているTopologyの状態を表示可能。 TopologyをUI上から停止・再開する事も可能)
15.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. StormクラスターにTopologyを投入 StormクラスターにTopologyを投入するために、まずは自作のTopology実装をjarにまとめます。ここでは「numc ount.jar」にまとめたとします。 以下のコマンドでStormクラスターにnumcount.jarを投入します。なお、argsは特に必要ありませんが、現在のNu mCountTopologyが何らかの引数を与えられるとStormクラスターにデプロイするように記述してあるために与え ています。 > storm jar numcount.jar num.NumCountTopology args jarを投入すると、Stormクラスターにjarが配布され、クラスター内で処理が始まります。このTopologyの場合、To pologyを止めるまでNumSpoutは数字を吐き出し続け、CountBoltはそれを数え続けます。 Storm UIを見ると、 EmittedやAckedの値が急上昇していく事が確認できます。 14 Storm UI (EmittedやAckedの値が急上昇) htopの表示 CPUは4コア張り付く
16.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. 動作中のStorm すべてのコンポーネントを1つのマシン上にデプロイして動かしている様子です。 15
17.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. この構成でどの程度のパフォーマンスが出るか この非常に単純な処理で、1件あたり約0.03ミリ秒(30マイクロ秒)かかりました。この性能について 少し考えてみます。 JDBCのバッチinsertを用いると、Oracleでは最速で1件あたり0.007ミリ秒(7マイクロ秒)程度でinser t出来ます。それに比べると少し遅く感じます。ただし、7マイクロ秒はIOの限界に近い性能で、イン メモリーベースのKVSであるRedisでさえ8マイクロ秒前後のput性能です。30マイクロ秒は頑張って いる方だと思います。 なお、このパフォーマンステストではVirtualBoxを用いていますし、すべてのコンポーネントを1台の VMに入れているなど、条件が悪い所があります。Stormのマニュアルによると、通常は1ノードあた り1メッセージあたり平均で1マイクロ秒で処理可能であるとの記載があります。これは一般的に見 てもかなり高速な処理になります。というのも、メインメモリーへの平均参照時間は0.1マイクロ秒で すので、1マイクロ秒は、そのたった10倍の時間でしかありません。光の速さで移動したとして、300 m移動可能な時間でしかありません。 16 NumSpout CountBoltack / fail ... 5 4 3 2 1 行って帰るまでのターン アラウンドタイムが30マイクロ秒 来たメッセー ジの数を数 える (参考) https://gist.github.com/nahurst/3711264
18.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormのアーキテクチャ Nimbus, Supervisor, ZooKeeper, ØMQ, Thrift などの役割を以下に示します。 17 構成要素 英語の意味 説明 Nimbus 後光 オーラ NimbusはStormにおけるマスターノードです。Nimbusはクラスター内にコードを配信し、タスクをアサ インし、異常をモニタリングします。 Supervi sor 管理人 監督 SupervisorはStormにおけるワーカーノードです。Nimbusからの依頼に従い、ワーカープロセス(別 のJVMプロセス)を起動します。トポロジーはStormクラスター内の複数のマシンにまたがったワーカー プロセス内で実行されます。 ZooKee per 飼育員 元々GoogleのChubbyを真似たHadoop実装で、分散システムを運用可能な状態にするためのキーテ クノロジーとなります。Hadoop以外の分散システムでも利用例が多いです。ZooKeeperがあれば、クラ スター全体の設定情報の共有に始まり、クラスター内のマシンの生死の管理やノードの動的な追加への 対応など、管理可能な分散システムを構成するために不可欠な要素が入っています。 ØMQ - C++で書かれた非常に高速なソケットライブラリーです。StormではSpoutやBolt間で高速な通信を実 現するために利用されています。 Kryo (軽量) Tupleを非常にコンパクトにシリアライズするために利用されています。Storm以外のプロダクトでもよく 使われているようです。GoogleのProtocol Buffersよりも優秀という話もあります。 Thrift 節約 Facebookが作成したRPCの仕組みです。Stormのトポロジーの実態はThriftで定義されたものです。 Clojure - Stormのコア部分はClojure(Lisp方言)で書かれています。 Nimbus ZooKeeperZooKeeperZooKeeperZooKeeperZooKeeper SupervisorSupervisorSupervisorSupervisorSupervisorSupervisorSupervisor ステートレス ステートレス 状態管理 最低5台で運用 (参考) https://github.com/nathanmarz/storm/wiki/Implementation-docs
19.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. ZooKeeperを理解するには、ZooKeeperが参考にしたGoogleのChubbyを 理解するのが手っ取り早いです。 Chubbyは、Windowsのレジストリーのような細かな情報をツリー状のフォルダー階層に格納可能 にしたものです。この中に、クラスター内で利用したい設定値などを入れて利用します。 Chubbyは運用時には最低5台以上のマシンを利用します。1つのノードをChubbyでは「Chubbyセ ル」と呼びます。Chubbyセルの中の1つはマスターとして機能し、このマシンが健在の間はすべて のリクエストをこのマスター1台で処理します。他の4台は、いつでもマスターに成り代わることので きるバックアップです。更に、5つのChubbyセルのうち1つは、別のデータセンターに置く運用をされ ています。 新たなマスターを選ぶ必要が生じた際には、Paxosというコンセンサスアルゴリズムを用います。初 回起動時や障害発生時は、生きているマシン達は投票によって誰が次のマスターになるかを決定 します。これらの挙動はChubbyのクローンであるZooKeeperでもほとんど同じです。 マスターがすべて対処 どれか1台は別のデー タセンターに配置 18
20.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormではクラスター全体を管理するための情報をZooKeeperに置くことにより、クラス ターのノードが故障するようなトラブルがあったとしても問題なく処理を継続可能な構成 になっています。 StormではZooKeeperに以下のような情報を格納しています。 クラスター内で共有したほうが良い設定情報を一括してZooKeeperに保持しています。 Nimbusがクラスター内にタスクをアサインする際に、Supervisorとしてどのマシンが利用可能 かといった情報を取得する必要があり、その情報をZooKeeperに保持しています。 Supervisorは、自分がまだ生きていて、新たなタスクを受け取れる事を定期的にZooKeeperに 書き込みを行います(ハートビート。心拍音のようなもの。死ぬと鼓動も聞こえなくなる)。 Supervisorは、自分の忙しさをZooKeeperに書込みます。Nimbusは新たなタスクのアサインを する際に、この情報を参考にして、出来るだけ暇なSupervisorにタスクを渡そうとします。 StormにおけるZooKeeperの使われ方 19 Nimbus ZooKeeperZooKeeperZooKeeperZooKeeperZooKeeper SupervisorSupervisorSupervisorSupervisorSupervisorSupervisorSupervisor ステートレス ステートレス状態管理 丈夫なZooKeeperが状態を完全に保ってくれるからこそ、 他のノードは安心して死ねる
21.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormにおけるデータの処理保証(トランザクション) Stormの大きな特徴の1つはデータの処理保証です。以下の3つの方式から選択出来ます。 20 方式 説明 何も保証しない データがすべて処理されたか否かを気にしなくても良い場合に使用 する方式です。 各タプルを 最低1回処理する (more than once) ack/failを使用し、各タプルが最低1回は処理されることを保証す る方式です。StormはSpoutから投入したTupleがトポロジー全体 を通して処理されたか否かをトラッキングします。もしもトポロジーの 一部の処理で問題が発生した場合、もしくは時間が経ってもTuple のackが返ってこない場合、再度そのTupleを処理します。そのた め、複数回処理される可能性はあるものの、すべてのTupleが最 低1回処理されるように作ることが可能です。 各タプルをカッチリ 1回処理する (exactly once) more than onceのセマンティクスでは、word countにて単語を 数えすぎてしまうような挙動をしてしまいます。Stormではmore than onceを更に押し進めたexactly onceセマンティクスもサ ポートしています。このためにはTransactional Topologyもしくは Tridentを用います。なお、TridentはStorm上で作られたDSLの ような存在です。
22.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Stormと組み合わせて使われるキューやDB Stormは単体で動作させることはまず無く、外部と何らかの入出力を伴います。Stormと組み合わ せて利用される典型的なソフトウエアを以下に示します。 21 タイプ 典型例 Stormでの使われ方 インメモ リーDB Redis Redisはディスク書き出し機能と豊富なデータ構造サポートの付いたインメモリーDBです。 格納可能なデータはメモリーの量に制限されてしまいますが、動作は非常に高速です。 RedisはMySQLの代替えとして使われることさえあります。 Stormと組み合わせて使う場合、RedisはStormクラスターで使えるグローバル変数の置 き場のような位置づけとして使います。たとえば、トポロジーでの処理結果をBoltから書き 込んでおくといった使い方が典型例です。 MQ Kafka MQを用いて他システムとStorm間のデータを受け渡す事は、とても一般的です。 nathanmarzによると、色々存在するキューの仕組みの中でもApache Kafkaが最も Stormとの相性が良いようです。Kafkaはディスク書き込みを前提としたキューですが、イ ンメモリーのキューと同程度に高速に動作します。 巨大な DB Mongo DB MongoDBは巨大なデータを扱うことの出来るNoSQLデータベースです。テラバイト級の データを扱えるため、Redisのような容量制限を気にすることなく大きなデータを蓄えること が出来ます。fluentdによって収集したログをMongoDBに書いておくといった用途にも利 用可能なほど余裕があります。 MongoDBには「tailable cursor」という機能があります。この機能は「tail -f」のように、 他から書き込みがあった場合に即時変更分が通知されるような機能です。この機能は StormのSpoutによって未処理のデータを吸い出す方法として都合が良いです。 その他の 外部API DRPC REST StormはStorm自身に内蔵されているDRPC機能によって外部からトポロジーをRPC呼 び出しする事も可能です。また、RESTや単純なソケット通信によって、Spoutにデータを流 し込む事も可能です。
23.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Redisの紹介 RedisはメモリーベースのKVSですが、非常にユニークです。KVSというとキーにBLOBを保存するという形を思い 浮かべますが、Redisではそのような使い方をしません。RedisでのkeyはRDBでのテーブル名や、プログラム中の 変数名に近いです。 Redisでは、key(変数名相当)に対し、List,HashMap,Set,SortedSetなどを保持させます。トランザクション中では、 これらのコレクションを操作し、状態を変更します。このような考え方をするため、keyの増減はあまりせず、keyの 指し示すコレクション(データコンテナ)の中身が頻繁に変わるような動きをさせるのが標準的な使い方になります。 Redisは300KB程度しかない小さなプログラムですが、クラスター構成を取ることも可能な扱いやすいDBです。 データを随時ディスクに書くことが出来るため、 MySQLの代替えとしてトランザクションデータの書き込み先として 利用する事例も出てきています。Redisを何か他のDBのキャッシュとして見なすのではなく、単独のDBとして使う という事です。 22 key1 スカラー値 key2 List key3 HashMap key4 HashSet key5 SortedSet ・ ・ ・ ・ disk 定期的もしくは 即時書き出し Redisでのキーはテーブル名や 変数名みたいなものであまり増減しない RedisではListを用いてFIFOを 作ったり、HashSetを用いてテーブル のような物を扱ったりといった使い方を する。 Redisのクライアント Redisは、DBを扱っているというよりも、(リモートにある)変数を扱っているような感覚で扱えます。 パフォーマンスが非常に良いので、クエリー回数を減らすような努力もあまり必要ではありません。 Redisサーバー
24.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Redisを使ってみる (Javaから使う場合はJedisライブラリーを使います) Redisの起動 コマンドラインから「redis-server redis.conf」 で起動出来ます。Ubuntuの場合、Redisをパッケージ からインストールすると、自動的にデーモンとして動作し始めました。 RedisでMQを作ってみます。RedisのListを"queue1"というキーに入れることで実現しています。 23 $ redis-cli > lpush queue1 a > lpush queue1 b セッション1(エンキュー側) $ redis-cli > brpop queue1 100 1) "queue1" 2) "a" セッション2(デキュー側1つ目) $ redis-cli > brpop queue1 100 1) "queue1" 2) "b" セッション3(デキュー側2つ目) "queue1"からpop要求をする。 この時、blocking指定をすると、 メッセージが到達するまで 待ちに入る。 "queue1"からpop要求をする。 こちらも待ちに入る。"queue1"へ文字列"a"を投入。 "l"は左(left)の意味。 瞬時に取得される 瞬時に取得される "queue1"へ文字列"b"を投入 このようなRedisの 性質をStormの Spoutで利用すると 都合が良いです。
25.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Redis+StormをJavaの概念とマッピングしてみる Redis+Stormの組み合わせは概念的にJavaのグローバル変数やスレッドの概念にマッピング可能 です。ただし、JavaはJavaVMに閉じた話になりますが、Redis+Stormでは複数台のマシンで処理 可能な事が違います。 24 Java Redis+Storm グローバル変数 Redisのキーはグローバル変数名に相当すると考えられます。また、Redisのサ ポートする5つの型は、Javaのコレクションライブラリーにマッピング可能です。 マルチスレッドプログラミングにてグローバル変数に触りすぎると性能が落ちてし まうのと同様に、Redisにアクセスし過ぎると全体のパフォーマンスは落ちてしま います。このあたりの性質も似ています。 ロック Redisを用いればロックによるタイミングの制御(排他制御)は可能です。 スレッド StormはJavaのスレッドに相当すると考えられます。Javaでのマルチスレッドプ ログラミングでは、BlockingQueueなどを用いてデータの流れを構成しますが、 Stormでのストリームの処理と非常に近いです。
26.
ULS Copyright ©
2013 UL Systems, Inc. All rights reserved. Kafka 主なプロダクトとの連携例 システムのログ収集~ログ解析までのイメージを書いてみると以下のようになります。 下の図は全くのイメージですが、Stormクラスターの役割はこのあたりになります。 ただし、ログの解析処理がそれほど大きなCPU負荷にならない場合、Stormはオーバー スペックになる可能性があります。 StormはTwitterではツイートのリアルタイム解析に用いているようです。ツイートの解析 にはCPUパワーが必要なため、Stormを用いて分散処理しているそうです。 25 稼働サーバー群 fluentdで各サーバー のログを収集して mongoDBへストア Web 表示 他シス テム Stormクラスター ログのリアルタイム解析 ログDB
Descargar ahora