TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

Hadoopとは? 分散処理の基礎と応用

Hadoopとは?ビッグデータ処理を支える分散処理フレームワークの基礎と応用

1. はじめに

Hadoop(ハドゥープ)は、ビッグデータを効率的に処理するためのオープンソースの分散処理フレームワーク です。
Googleの論文を基に開発され、HDFSHadoop Distributed File System)MapReduce を中心としたアーキテクチャを採用しています。

本記事では、Hadoopの概要、基本機能、活用方法について詳しく解説します。


2. Hadoopの基本構成

Hadoopは、大規模データを分散処理するための4つの主要コンポーネント で構成されています。

2.1. HDFSHadoop Distributed File System)

  • 分散ストレージ を提供し、大容量データを複数のノードに分割して保存 する。
  • データをレプリケーション(複製) し、耐障害性を確保。

2.2. YARN(Yet Another Resource Negotiator)

2.3. MapReduce

  • データ処理を並列実行するプログラミングモデル
  • Map フェーズでデータを分割、Reduce フェーズで集約処理を行う。

2.4. Hadoop Common

  • Hadoopのコアライブラリやツールを提供。
  • HDFSMapReduceを利用するためのAPIを含む。

3. Hadoopの動作の流れ

Hadoopを用いたデータ処理の流れは、以下のようになります。

  1. データの分割

    • HDFSにデータを格納すると、自動的にブロック単位(例:128MB)で分割される。
  2. データのレプリケーション

    • 同じデータを複数のノードに複製し、耐障害性を向上。
  3. MapReduceによる並列処理

    • Map:データを分割して個別の処理を実行。
    • Reduce:Mapフェーズの結果を集約して処理。
  4. 結果の統合

    • Reduce処理が完了すると、最終的なデータがHDFSに保存される。

4. Hadoopの活用事例

4.1. ログデータ解析

  • WebサイトやアプリのログデータHDFSに保存し、MapReduceを用いてユーザー行動を分析。
  • 例:広告のクリック率分析、アクセス解析

4.2. 機械学習

4.3. IoTデータの処理

  • センサーやIoTデバイスから収集されるリアルタイムデータをHadoopで処理 し、異常検知や予測分析を実施。
  • 例:スマートシティ、工場の設備監視。

4.4. 医療・ゲノム解析

  • 医療データや遺伝子データをHDFSに格納し、大規模データ解析を実行。
  • 例:疾患の予測、パーソナライズ医療。

5. Hadoopのセットアップと基本操作

5.1. Hadoopのインストール

Hadoopをローカルまたはクラスタで実行するには、以下の手順でセットアップを行います。

  1. Hadoopをダウンロード wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz tar -xvzf hadoop-3.3.4.tar.gz

  2. 環境変数を設定 ~/.bashrc に以下を追加。 export HADOOP_HOME=~/hadoop-3.3.4 export PATH=$PATH:$HADOOP_HOME/bin

  3. HDFSのフォーマット hdfs namenode -format

  4. Hadoopクラスタの起動 start-dfs.sh start-yarn.sh


5.2. HDFSの基本コマンド

HDFSにファイルを保存・管理するための基本的なコマンドを紹介します。

コマンド 説明
hdfs dfs -ls / HDFSのファイル一覧を表示
hdfs dfs -mkdir /data /data ディレクトリを作成
hdfs dfs -put localfile.txt /data/ ローカルのファイルをHDFSへアップロード
hdfs dfs -get /data/output.txt local_output.txt HDFSのファイルをローカルにダウンロード
hdfs dfs -rm /data/file.txt HDFSのファイルを削除

5.3. MapReduceの基本

Hadoopでは、PythonJavaMapReduceジョブを作成できます。

PythonによるMapReduceの例

from mrjob.job import MRJob

class WordCount(MRJob):
    def mapper(self, _, line):
        for word in line.split():
            yield word, 1

    def reducer(self, word, counts):
        yield word, sum(counts)

if __name__ == '__main__':
    WordCount.run()

実行方法

python wordcount.py input.txt > output.txt

このスクリプトは、入力テキストの単語数をカウントするMapReduceプログラム です。


6. Hadoopの進化と代替技術

Hadoopは強力なビッグデータ処理フレームワークですが、近年では新しい技術が登場 しています。

6.1. Hadoopの課題

  • リアルタイム処理が苦手
  • 運用の複雑さ
    • クラスタ管理が必要で、運用コストが高い。

6.2. 代替技術

技術 特徴
Apache Spark Hadoopより高速なインメモリ処理を実現
Google BigQuery クラウド上でスケーラブルなデータ分析 が可能
Amazon EMR HadoopクラスタAWS上で簡単に構築・運用

現在は、HadoopとSparkを組み合わせて活用するケースが増加 しています。


7. まとめ

項目 内容
Hadoopとは? ビッグデータを分散処理するフレームワーク
主要コンポーネント HDFS, YARN, MapReduce, Hadoop Common
活用事例 ログ解析、機械学習、IoTデータ処理、医療解析
基本操作 HDFSコマンド、MapReduceジョブの作成
代替技術 Apache Spark、Google BigQuery、Amazon EMR

Hadoopは、大規模データの処理において依然として強力なフレームワークですが、リアルタイム分析にはSparkなどの技術と組み合わせて利用するのが主流 になっています。
Hadoopの基本を押さえ、適切なビッグデータ処理技術を選択しましょう!