分散処理

分散処理システムについて

投稿日:

こちらを読むと

  • 超ざっくりと分散システムについて理解できます(素人対象)

分散処理とは

まずは、参考サイトから。 

分散処理とは、処理速度の向上とサーバー負荷軽減のために、1つの処理を分散して行う方式のことです。

分散処理には、1台のコンピュータに多数のプロセッサを搭載して処理する方法と、大規模データ処理を複数のサーバーに分散させ、処理結果をネットワーク上で共有する方法の2種類があります。

後者の分散処理では、1台のサーバーで処理するよりも処理速度を向上させることができます。また、特定のサーバーが稼働しなくなった場合でも、他の複数のサーバーが処理を継続するため、1台のサーバーで処理するよりも信頼性を保つことができます。

(IDCFrontier 用語集 | 分散処理 より)

簡単に言えば、複数のプロセッサ or サーバーで、処理を負荷分散すること。それにより、処理速度の向上や信頼性の保持を行うことができる。
という感じでしょうか。

分散処理が必要な背景

近年、データの量が爆発的に増加しています。しかし、単独のサーバーで大量のデータを処理すると負荷がかかり過ぎ、いずれサーバーのパフォーマンスに問題を抱えることになります。分散処理は、このような問題を解決する技術として注目を集めています。

超大量のデータをリアルタイムで分析したり、Webサイトにアクセスした訪問者のすべての行動分析を行ったり、分散処理の需要は高まっています。このような注目の中、分散処理システム基盤である「Hadoop」が多くのWebサービス企業から採用されています。

(IDCFrontier 用語集 | 分散処理 より)

ブロードバンドの普及により、ネットワーク上を流れるデータ量が増えたこと、IoTにより収集できるデータの種類が増えたことにより、大量のデータを収集・分析することができるようになりました。

その反面扱うデータ量が増えたため、1つのサーバーでさばくのが厳しくなってきた、というところでしょうか。

分散処理OSS

分散処理ができるOSSで有名なものとしては、以下があります。

  • Hadoop
  • Apache Spark

表にまとめるとこんな感じでしょうか。

OSSHadoopApach Spark
処理方式MapReduceSpark式 MapReduce
書かれている言語JavaScala
使い方Javaで直接 or 専用ソフト(Hive QL/Pig等)利用各言語(Scala/Java/Python等)のAPI
長所情報が充実高速(インメモリで処理可能)
短所低速(HDDのオーバーヘッド大)各言語のAPIラッパーによるオーバーヘッドで多少遅くなる

HadoopもApach Sparkも、MapReduceという概念で分散処理を行いますが、HadoopはデータをHDDに書き込むためオーバーヘッドが大きいですが、Apach Sparkはインメモリで処理可能なため、高速なようです。

HadoopはApach Sparkよりも歴史があり、情報が充実しています。

例えばAmazonにてHadoopを検索すると1000件以上ヒットしますが、Apach Sparkは200件未満でした。

※私は分散処理について全くの素人なので、誤りがあるかもしれません。

まとめ

  • 超ざっくりと分散システムについて理解できたかと思います。

ここでは処理のキモとなるMapReduceについては詳細には触れませんが、興味があるのでまた後日紹介できたらと思います。

データ分析に対して、分散処理は避けられないことのようです。私も機械学習を生業にすることを目指していますので、分散処理についてもキャッチアップし続けていこうと思います!

Reference

IDCFrontier 用語集|分散処理
Casley Consulting, Inc. 分散処理に入門してみた
graffe.jp Apach Sparkとは?



-分散処理

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

関連記事はありませんでした