質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Hadoop

Apache Hadoopは大規模なデータの分散処理をサポートするJavaソフトウェアフレームワークです。Hadoopを利用すると、数千ノードおよびペタバイト級のアプリケーションデータを処理することができます。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

Q&A

1回答

2807閲覧

大規模なストリームデータをリアルタイムで取り扱うwebサービスを作る場合、どのようなインフラ、アプリケーション構成で行うのがベターでしょうか?

qaz3330

総合スコア113

Hadoop

Apache Hadoopは大規模なデータの分散処理をサポートするJavaソフトウェアフレームワークです。Hadoopを利用すると、数千ノードおよびペタバイト級のアプリケーションデータを処理することができます。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

0グッド

3クリップ

投稿2015/11/15 09:20

普段はruby on rails で開発をしているものです。

Spark等に興味があり、何か、ストリームデータをリアルタイムで取り扱うwebサービスを作って見ようと思ってます。

※サンプルということもあり、Twitterのデータか、気象データなどを考えております。
大規模にも耐えられるような設計にすることを前提としております。
大規模の定期は私の中では曖昧ですが、Hadoopとかを導入している大企業が使うぐらいの規模を想定してます。

尚、Sparkに興味があるものの、必ずしもSparkは使わなくても構いません。

ストリームデータを扱うのであれば、Nodejsが良いとの話も聞きましたため、みなさまのご意見を伺いたいです。

得意なのは
ruby on railsなので、これを上手く使いながら実装できるのであれば、一番有難いですが、
私の知識の中では、ruby on railsで、ストリームデータを扱うのは不便に感じました。

また、Twitterのデータか、気象データなどを考えておりますが、他に、こういうサービスがいいんじゃないですかというのがあれば、そちらも頂戴できれば助かります。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

リアルタイム=速報性と定義した場合、良く聞くキーワードは[HDP]Stormや[CDH]SparkStreamingです。
また、リアルタイムに何かを出す。というテーマであればサンプルにあるWordCountのようにログデータや単純なTextファイルでも十分にデモできるかと思います。
少しわかりづらくなる要因として、ストリームデータの取り扱いは2か所で必要です。
①データを受け取ってカウントしたりと言った計算をHadoopで行う部分
※こちらがSparkStreamingやStormです。
②Hadoopがリアルタイムに集計した結果をWeb(表示側)がストリームデータとして取り扱う
※こちらがnode.jsやWebSocketです。

リアルタイムに処理するサービスは幾つかありますが、案毎に特徴があります。
どんなサービスを提供したいのかが不明確なので、どのような案があるのか?を参考にコメントします。
私がビッグデータを扱う案件で思う所見は「アーキテクチャ(言語含む)」がシステム構成を決定するのではなく、「どんなデータを扱うか?」を元に「アーキテクチャ(言語含む)」を決定づけると印象づいてます。

案1:Twitterの投稿数やホットキーワードをランキング表示する
データの特徴:速報性重視、単純な計算式が多い(複雑な式がない)
アーキテクチャの候補:HDP利用、Flume(ログ転送)->Storm(集計)->HBase(集計結果を時系列で保持)->Web(HBaseの時系列データを表示)
長所:速報性が高い。受けたデータの集計→表示までの時間が短い
短所:Stormは永続化したデータの集計に向かないため、グルーピングやソートなどの計算が難しい

案2:センサー等から今の天気情報を受け取って近況をWebで表示する
データの特徴:地域や単位時間など、1秒など低レイテンシで観測することに意味がない(早く見たいだけ)
アーキテクチャの例:CDH利用、Fluentd(ログ転送)->HDFS(地域や時系列など意味づけした単位で保持)-->Spark(地域毎や時間毎など意味ある単位でグルーピングして集計)-->HBase(集計結果の保持)-->Web(集計済の結果表示)
長所:地域でのグルーピングなど、案1と比較して詳細な分析ができる
短所:1秒前などの結果は出せず速報性は案1に負ける

参考になれば幸いです。

投稿2015/11/16 04:08

YuusukeNomura

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qaz3330

2015/11/17 12:12

事例とともに解説してくださりありがとうございます。 ①データを受け取ってカウントしたりと言った計算をHadoopで行う部分 ②Hadoopがリアルタイムに集計した結果をWeb(表示側)がストリームデータとして取り扱う部分 の区別がきちんとできていなかったため、明瞭に理解ができました! その上で追加で質問させてください。 表示側において、node.jsやWebSocketを上げていただきましたが、 やはりリアルタイムに、かつ、速度性を意識した際に、ruby on rails や python、 php といったスクリプト言語では、対処が難しいのでしょうか?
qaz3330

2015/11/17 12:17

また、ご共有頂きました、アーキテクチャの候補をもとに、早速、サービスを作ろうと思い、サーバー構成などを考えていたのですが、以下の様なイメージであってますでしょうか? 調べられることは調べる所存ですが、もしお手間でなければ、どれくらいのスペックのサーバーを何台必要か簡単で構いませんので教えて頂けないでしょうか? 案 →サーバー4台必要になる? ・HDP利用、Flume(ログ転送) ・Storm(集計) ・HBase(集計結果を時系列で保持) ・Web(HBaseの時系列データを表示) 案2 →サーバー5台必要になる? ・CDH利用、Fluentd(ログ転送) ・HDFS(地域や時系列など意味づけした単位で保持) ・Spark(地域毎や時間毎など意味ある単位でグルーピングして集計) ・HBase(集計結果の保持) ・Web(集計済の結果表示)
YuusukeNomura

2015/11/19 03:58

> やはりリアルタイムに、かつ、速度性を意識した際に、ruby on rails や python、 php といったスクリプト言語では、対処が難しいのでしょうか? ruby on rails や pythonにあまり明るくないため明確な回答が難しいですが。 求める速度次第だと思います。 ・1秒未満のような速報性を求めるならストリーミングしか選択肢がありませんが、 ・5秒毎や10秒毎、使うユーザ数が少数、など求める条件が低い場合は、  リアルタイム集計の結果をmemcacheやredisなどのメモリに書き込んで  ポーリングする案もあるかと思います。(この場合、言語問いません) > 調べられることは調べる所存ですが、もしお手間でなければ、どれくらいのスペックのサーバーを何台必要か簡単で構いませんので教えて頂けないでしょうか? 必要なサーバ台数/Specは格納するデータ量と求めるレイテンシ次第なのですが、 選択肢としては以下3つあるかと思います。 1. お試しVMを使ってみる  HDP/CDHなど各社SandBox用のVMを提供しています。  必要Specは通常のVM比較して高めに感じますが、手軽に始められます。  もちろん本番では使えません。  http://hortonworks.com/products/hortonworks-sandbox/ 2. データウェアハウスを利用する  自身で用意しないという選択です。  長所:サーバ自体の構築/管理が不要、手軽に利用可能、拡張が容易(お金次第)  短所:長期利用は割高、ただしhadoop技術者の有無を考慮に入れたりすると     良案になるケースもある。  https://www.treasuredata.com/jp/  https://cloud.google.com/hadoop/ 3. 自前でサーバを立てる  初期投資が最も高く、長期ランニングを想定すればするほど改修しやすいケース。  性能測定のスライドを見ると数十ノード利用のケース(少ないケース)もあります。  http://www.slideshare.net/techblogyahoo/impala-yj 余談ですが、 こちらで必要台数などを都度質問するよりも、 SlideShareなどで実現したいものに近いHadoop導入事例を調べたほうが 期待する情報が見つかるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問