Hadoopとは


Hadoopに関する基本的な内容をまとめてみたものです。Hadoopに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
Hadoopとは

Hadoopの概要

Hadoopは、
・テキスト
・画像
・ログ
などの構造化されていないデータを、高速に処理出来るオープンソースのプラットフォームです。
Hadoopは大規模なデータの処理に適しているだけではく、複数のコンピュータで処理を行う分散処理を可能としている点が特徴となっています。

従来の分残処理は処理を分散するだけものが多かったのですが、Hadoopの分散処理はデータも複数のコンピュータに分散させる事で、容易にスケールアウト出来るようになりました。

そのため、Hadoopを使えばビッグデータを処理するシステムは低コストで構築出来ると、注目を集めています。

分散処理を可能とするHDFSとMapReduce

Hadoopの分散処理機能を実現するのが、HDFSとMapReduceです。

分散ファイルシステムHDFSは複数のコンピュータのローカルディスクを、一つのストレージのように扱います。ローカルディスクを扱うのと同じ方法で分散ストレージを使えるので、特にユーザーが意識する事はありません。容易にスケールアウト出来ますから、ビッグデータを扱うのに最適なシステムを構築可能です。

MapReduceはMapフェーズとReduceフェーズにユーザーが処理を実装する事で、分散処理を実現します。MapReduceを有効に利用する事で一台のコンピュータでは長時間掛かるような操作でも、複数のコンピュータを使って短時間で処理する事が可能となります。

ビッグデータ分析基盤を低コストで構築出来る分析エンジン

ビッグデータを分析する基盤を構築するには、コストの掛かるデータウェアハウスなどを用意する必要があるため、なかなか導入出来ない企業も少なくありませんでした。
しかし、HadoopをベースとしたAmazon Elastic Mapreduceなどのビッグデータ分析エンジンが普及するようになって、比較的容易に導入出来る環境が整って来ています。

手軽に利用出来るクラウド型ビッグデータ分析エンジンと、ウェブサーバ・データベースサーバ・ワークフロー管理ツール・分析サーバなどを組み合わせる事で、短期間で低コストのビッグデータ分析基盤を構築する事が出来ます。

ビッグデータの分析基盤を構築する際の考え方のポイントは、「蓄積「処理「パイプライン」です。

3つのフェーズから構成されるMapReduce

MapReduceとは、Hadoopで分散処理を行うプログラミングモデルです。

MapReduceには、
・Map
・Reduce
・Shuffle
の3つのフェーズが存在し、map関数とreduce関数を使って処理内容を記述します。

MapとReduceは処理内容をユーザーが指定するフェーズですが、ShuffleはMapReduceが自動的に処理を行うフェーズです。

MapReduce: 各フェーズの処理内容

MapReduce内のデータは、KeyとValueを組み合わせて表現されます。
通常のテキストもMapフェーズにおいて、KeyとValueを組み合わせたデータに作り変えられます。

Mapフェーズの結果をキーに従ってソートを行い、キーが同じものをまとめるのがShuffle処理です。

Reduceフェースでは、Map処理の結果を使って処理を行います。
同じキーを持つデータ数をカウントするなどの処理が行う事で、より効率良く処理する事が可能となります。

大規模データの読み込みに適しているHDFS

分散処理を行うHadoopで、ファイルの管理を担当するのがHDFS(Hadoop Distributed File System)です。
複数のノードにファイルを分割して格納しますが、ユーザーからは一つのファイルを扱うようにしか見えませんので、分割処理である事を意識する事はありません。

ビッグデータを高速で処理出来ますがデータを書き込むよりも読み込む方が得意なので、HDFSを効果的に使用するには、ファイルの書き込みをする回数を最低限に減らして、ファイルの読み込みを中心にするべきです。
大量のデータを蓄積して分析をするためにデータを読むDWHやBIツールを使用するのであれば、HDFSの性能を活かす事が出来ます。

高速の分散処理が可能で障害にも強いHDFS

HDFSが高速で分散処理出来るのは、

・数多くのディスクにアクセス出来る環境を構築する事で、処理の多重度を上げる
・出来るだけローカルディスク内のデータを活用する

といった工夫がされているからです。

これらの工夫は処理速度を向上させるだけではなく、ディスクに障害が発生するなどの障害対策にも役立っています。

Hadoop上で稼働するHive

Hiveは、Hadoop上でDWHを構築する時に使うオープンソースのソフトウェアです。

HBaseというHadoop上で動くデータベースもありますが、HiveのインターフェイスはHDFSと親和性の高いので、快適な操作が可能となっています。

HiveのSQLライクな言語HiveQLを使う事で、Hadoop内のデータを手軽に処理する事が可能です。

Hiveの使い方

Hiveは、専用のインタプリタhiveで各種操作を行います。
SQLと同じようなコマンドで、操作する事が可能です。

・CREATE TABLE:テーブルの作成
・LOAD DATA:データの読み込み
・SELECT:テーブルの検索
・INSERT:データの保存