分散処理の基本的な仕組みについて
こんにちは、コグラフ株式会社データアナリティクス事業部の木村です。
ビックデータ周りの単語を初めて聞くと関係性が分からなくなることがあります。
今回はHadoop、Spark、Hiveなど分散処理関連の用語を改めて確認し整理します。
分散処理とは
データを複数台のサーバに分散して蓄積および並列処理するための手法で、
大量のデータを短時間で処理するために用いる方法です。
従来の単一のコンピュータで処理するよりも高速で効率的なデータ処理を実現できます。
なぜ分散処理が必要だったか
分散処理の需要が高まった背景に、生成されるデータ量が増え、企業や組織がこのビックデータをビジネスに活用したかったということがあります。
そこで生まれたのが分散処理という方法です。
コンピュータの性能が向上したこと、ネットワーク技術が発展したことで分散処理が実現可能となりました。
分散処理フレームワーク
フレームワークはシステムに機能を組み込む際に使うひな形のことで、
分散処理の機能を組み込む際に使える有名なフレームワークといえば、HadoopやSparkです。
まずはHadoopの特徴とHiveとの関係性について説明します。
Hadoop
2000年代初頭、アパッチソフトウェア財団がオープンソースのフレームワークであるHadoopを構築しました。
耐障害性やスケーラビリティを重視し、大規模なデータセットの効率的な処理を目的としています。
*スケーラビリティ(拡張性):規模の変化にどれくらい柔軟に対応できるか
Hadoopの特徴
・HDFS(Hadoop Distributed File System):
Hadoopの分散ファイルシステムで、大規模なデータセットを複数のノードに分散して格納します。
高い冗長性と信頼性を持ち、データの耐障害性を確保することが出来ます。
*冗長性:耐障害性を高めるためにシステム全体を二重化して予備のシステムを用意すること
・MapReduce:
大規模なデータセットを複数のノードで並列処理するための分散処理モデルです。
簡潔にいえば、HDFSはデータの保存と冗長性を担当し、MapReduceはデータの変換と処理を担当します。
・Hive:
Hive はMapReduce上で動作するクエリ処理技術のことです。
MapReduceとHiveの課題:
MapReduceやHiveはバッチ処理に適しており、大規模データの処理に活用する上でのインタラクティブなクエリの実行には向いていないという点が課題でした。
*バッチ処理:一定量の(あるいは一定期間の)データを集め、一括処理すること
*インタラクティブなクエリの実行:リアルタイムまたはほぼリアルタイムで結果を取得すること
HadoopのデータをDWHなどでインタラクティブに分析するための解決策として誕生したのがSparkです。
Spark
Sparkはインメモリ処理を活用することで高速なデータ処理を実現し、インタラクティブなクエリ実行に向いています。
MapReduceよりも柔軟性があり、リアルタイム処理だけでなくストリーミング処理や機械学習など、さまざまなデータ処理の要件に対応することが出来ます。
またHadoopと連携することもできるため、HDFSに格納されたデータを活用することも可能です。
まとめ
HadoopとSpark、どちらがいいかはデータ処理の要件や目的によりますが
それぞれの特徴をまとめます。
Hadoop
分散ファイルシステム(HDFS)と分散処理モデル(MapReduce)から構成される
データの保存とバッチ処理に特化しており、大量のデータの処理とストレージに向いている
MapReduce上でクエリを処理する技術としてHiveがある
Spark
分散データ処理と高速なインメモリ処理を提供する
データ処理や分析において高速なインタラクティブなクエリやストリーミング処理、機械学習を実現する
既存のHadoop環境と統合することができ、HDFSなどを活用することも可能である
分散処理について学び始めた人にとって、これらの用語の関係性は分かりにくいかもしれません。
まずは概要を理解してイメージを掴んでもらえば幸いです!
Twitterもやってます!
コグラフデータ事業部ではTwitterでも情報を発信しています。
データ分析に興味がある、データアナリストになりたい人など、ぜひフォローお願いします!
#Hadoop #Hive #Spark
#データ分析入門 #データアナリスト #データアナリスト募集
#私の仕事 #コグラフデータ