Hadoopとは?
Hadoopとは、膨大データを分散する処理技術により蓄積・分析するオープンソースのミドルウェアです。
Javaベースのオープンソースフレームワークとして、データは汎用サーバーにクラスターとして格納されます。
オープンソースソフトウェアの開発プロジェクトである「Apacheプロジェクト」の元で、下記の企業が開発に参画しています。
- Intel
- Yahoo!
- Cloudera
- Microsoft
- Hortonworks
MapReduceプログラミングモデルが使用されており、ノードからデータ格納と高速な検索が可能です。
Hadoopが誕生した背景
Hadoopが誕生した背景は、Googleで下記の基盤技術がオープンソースとして実装されたためです。
- Google MapReduce(Googleの分散処理技術)
- GFS(Google File System:Googleの分散ファイルシステム)
上記の技術は、「検索サービスとして扱うWebページ情報をGFSに保存して、Google MapReduceに検索用インデックスを生成するといった用途で利用されます。
現在のApacheのコミュニティ議長であるDoug Cuttingを中心として、多くのメンバーがJavaベースで開発を行いました。
実際に開発されたコンポーネントは、下記の通りです。
- HDFS(Hadoop Distributed File System:Hadoop分散ファイルシステム)
- Hadoop MapReduce Framework(Hadoop MapReduceフレームワーク)
ちなみにHadoopの由来は、Doug Cuttingの子息が持っていた象のぬいぐるみの名前から来ています。
Hadoopの特徴
Hadoopの特徴は、下記の通りです。
- サーバーの追加でスケーラビリティを実現できる
- 処理の柔軟性が高い
- サーバーが故障しても問題なくシステムが動作する
ひとつずつ解説していきます。
サーバーの追加でスケーラビリティを実現できる
Hadoopはサーバーを追加することによって、処理性能や容量の拡大を実現できます。
サーバーを追加する際には、Hadoopクラスタの停止は必要ありません。
そのため、サービスを継続したままで運用が可能です。
また基盤設計やアプリケーションに影響を及ぼさない状態で、新規でスケーラビリティを得られるでしょう。
処理の柔軟性が高い
Hadoopは非定型データの格納が想定されており、処理の柔軟性も高いです。
従来のDWHやRDBMSと異なるポイントとして、HDFSにデータを格納する際のスキーマの定義が不要な点が挙げられます。
そのため、事前設計の手間を削減できる点がメリットです。
Hadoopは、処理のタイミングでHDFSに格納したデータを都度意味づけします。
つまり格納後で処理の方針が決定した際は、データを扱う方法を定義できます。
サーバーが故障しても問題なくシステムが動作する
Hadoopの特徴は、サーバーが故障しても問題なくシステムが動作する点です。
構成サーバーでは、専用のハードウェアや特別なスペックが必要ありません。
市販で入手できるサーバーが利用できるので、基盤構築費用を抑えられます。
さらに大量のサーバーを利用する際は、サーバーが故障時の取り扱いに注意しなければなりませんが、故障発生を前提として構築されています。
そのため任意サーバーが故障した場合でも、問題なくシステムは動作するので安心です。
こちらの記事では、オープンソースの概念や使い方、メリット・デメリットを解説しているので、ぜひ参考にしてください。
Hadoopを構成するコンポーネント
ここまで、Hadoopの概要や誕生した背景をお伝えしました。
続いて、Hadoopを構成するコンポーネントについて解説します。
- HDFS
- Hadoop MapReduce
- Hbase
それぞれ解説していきます。
HDFS
HDFS(Hadoop Distributed File System)とは、NameNodeとDataNodeで構成されている分散ファイルシステムです。
それぞれのノードの特徴として、下記が挙げられます。
- NameNode:分散ファイルシステムのメタ情報を管理する
- DataNode:データの実態を保存する
HDFSではサーバーのクラスターに分散された大容量データを管理するために、信頼性やコストパフォーマンスの高い方法が提供されています。
大量のデータを分散・保存できるので、高い冗長性と可用性の実現が可能です。
また、小さなブロックにデータを分割して異なるノードに配置することで、データの冗長性が確保されます。
HDFSはファイルシステム全体を複数サーバーに保存・分散するので、データの耐障害性を向上できるでしょう。
Hadoop MapReduce
Hadoop MapReduceとは、JobTrackerとTaskTrackerで構成されているプログラミングモデルです。
それぞれのトラッカーの特徴として、下記が挙げられます。
- JobTracker:MapReduceジョブやTask Trackerのリソースを管理する
- TaskTracker:タスクを実行する
Hadoop MapReduceをベースにして、クラスターに格納されている大容量データを処理するため並列で実行できるアプリケーションを作成できます。
ちなみにReduceタスクに関しては、データを複数のTask Trackerから取得しなければならないので、データのローカリティが考慮できない点には注意しましょう。
次に、Hadoop MapReduceのアプリケーションとHadoop YARNについて解説します。
アプリケーション
MapReduceアプリケーションは、MapReduce処理の基盤上の動作によって構成されています。
処理を行う際の定義は、下記の3つです。
- map処理:入力データに何かしらの処理を行い、キーとバリュー形式でデータに意味をつける
- reduse処理:map処理のキーごとで集約されたデータに、何かしらの処理を行う
- MapReduceジョブ定義:map処理とreduce処理を行うための情報を定義する
処理情報を共有するための通信やファイル操作による処理には、複雑な実装が欠かせません。
Hadoopの内部にはこれらの実装が施されており、MapReduceジョブを定義する場合は、複雑な実装を意識する必要がない点がメリットです。
ちなみにMapReduceのアプリケーションは、RDBMSで特定のデータをミリ秒オーダで抽出する処理には適していないので覚えておきましょう。
Hadoop YARN
Hadoop YARNとは、クラスタリソースを管理しながら各データ処理フレームワークのジョブを実行するためのリソースを提供してくれるResouse Managerです。
分散処理フレームワーク「Hadoop MapReduce」の仕組みが変更され、Hadoop YARNとMapReduce ApplicationMasterの分離によって誕生しました。
Hadoop YARNでは、MapReduceに向いていない処理に関して、各自が仕組みを実装してYARNの仕組みによる分散処理が可能です。
YARNの仕組みは、アプリケーションの集中管理によるマスターノードのボトルネックを解消して、さらに多くの処理ノードによるHadoopクラスタの構成が可能になりました。
今までは3,000〜4,000ノードがクラスタの限界でしたが、Hadoop YARNによって約10,000ノードのクラスタも構成できます。
Hbase
Hbaseとは、HDFS上で実行される列指向の分散型データベース管理システムです。
NoSQL型システムの代表格として、リレーショナル型とは構造が異なっています。
Hbaseは前提として分散コンピューティング環境が設計されており、複数のノードにデータを分散して記録する「シャーディング」処理が自動で行われます。
そのため高い拡張性や柔軟性、リアルタイムスピード、負荷に対しても柔軟な対応が可能です。
Hadoopの課題・展望
Hadoopの課題は、オープンソースで安価に導入できる一方でスキルを持った人材が求められる点です。
効率的な運用を行うには、「効果的にデータを処理するにはどのように分散するべきか」を考える必要があります。
そのためサーバーの配置やデータ処理の単位について検討したり、分析処理や統計処理をどのように連携して実行したりするかが課題です。
とはいえHadoopをベースとしてパッケージは増えているため、課題は解決されつつあります。
そのため今後の展望は、ビッグデータ時代を牽引する主要技術として、さらに普及していくと考えられています。
Hadoopの将来性
Hadoopが誇る並列分散処理技術は、現在も高く評価されています。
評価されている理由は、下記の通りです。
- ビッグデータストレージやIoTデータの格納先として、主要な選択肢になっている
- オンプレミス環境におけるHadoop利用が必要な企業が存在する
これからはデータレイクをクラウド内に構築して、機械学習によるデータ分析が当たり前になっていくでしょう。
その際にHadoopは有力な技術として、活用されている将来も十分に考えられます。
こちらの記事では、オンプレミス意味やクラウドとの違いなどを解説しているので、ぜひ参考にしてください。
まとめ
今回は、Hadoopの特徴や課題・展望、将来性について解説しました。
Hadoopとは、膨大なデータを分散処理技術によって蓄積・分析するオープンソースのミドルウェアです。
また、Hadoopの特徴として下記の3つがあるとお伝えしました。
- サーバーの追加でスケーラビリティを実現できる
- 処理の柔軟性が高い
- サーバーが故障しても問題なくシステムが動作する
構成コンポーネントには、HDFSとHadoop MapReduce、Hbaseがあります。
本記事でお伝えしたHadoopの課題や背景も参考にして、今後の発展に注目しましょう。
【SNSフォローのお願い】
kyozonは日常のビジネスをスマートにする情報を毎日お届けしています。
今回の記事が「役に立った!」という方はtwitterとfacebookもフォローいただければ幸いです。
twitter:https://twitter.com/kyozon_comix