すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Hadoop 環境の構築

最終更新日:May 16, 2026

Elastic Compute Service (ECS) Linux インスタンス上に分散型または疑似分散型の Hadoop クラスターをデプロイし、ビッグデータの保存と処理を行います。

背景情報

Apache Hadoop は、コンピュータークラスター全体で大規模なデータセットを分散処理するためのフレームワークです。単一のサーバーから数千台のマシンまで拡張でき、各マシンはローカルでの計算とストレージを提供します。Hadoop はアプリケーションレイヤーで障害を検出し処理するため、ハードウェアの冗長性に頼ることなく高可用性を実現します。

Hadoop のコアコンポーネントは、Hadoop 分散ファイルシステム (HDFS) と MapReduce です。

  • HDFS:アプリケーションデータを保存し読み取るための分散ファイルシステムです。

  • MapReduce:タスクを Map と Reduce のフェーズに分割し、YARN (Yet Another Resource Negotiator) 上で実行される分散コンピューティングフレームワークです。

機能

疑似分散モード

完全分散モード

ノード数

単一ノード。すべてのサービスが 1 台のマシンで実行されます。

複数ノード。サービスは複数のマシンに分散されます。

リソース使用率

単一マシンのリソースを使用します。

複数のマシンのコンピューティングリソースとストレージリソースを活用します。

耐障害性

低。単一障害点によりクラスター全体が利用できなくなります。

高。データレプリケーションと高可用性設定をサポートします。

シナリオ

  • 開発とテスト

  • 学習とトレーニング

  • 小規模プロジェクト

  • 本番環境

  • 高可用性と耐障害性のシナリオ

  • マルチユーザーとマルチタスク

  • 大規模なデータの保存と処理

クイックデプロイ

今すぐ実行 をクリックして Terraform Explorer を開き、Terraform コードを表示および実行して、ECS インスタンス上に Hadoop 環境を自動的に構築します。

前提条件

ECS インスタンスは、次の要件を満たす必要があります。

環境

要件

インスタンス

疑似分散

インスタンス 1 台

分散

インスタンス 3 台以上

説明

インスタンスを [高可用性] 戦略を使用するデプロイメントセットに追加して、可用性を向上させ、クラスター管理を簡素化します。

オペレーティングシステム

Linux

パブリック IP アドレス

インスタンスにはパブリック IP アドレスが割り当てられているか、Elastic IP アドレス (EIP) が関連付けられています。

インスタンスのセキュリティグループ

ポート 22、443、8088 (Hadoop YARN Web UI)、および 9870 (Hadoop NameNode Web UI) でのインバウンドトラフィックを許可してください。

説明

分散デプロイメントの場合は、ポート 9868 (Hadoop Secondary NameNode Web UI) でのトラフィックも許可してください。

詳細については、「セキュリティグループルールの管理」をご参照ください。

Java 開発キット (JDK)

このトピックでは、Hadoop 3.2.4 と Java 8 を使用します。他のバージョンについては、「Hadoop Java Versions」をご参照ください。

Hadoop バージョン

Java バージョン

Hadoop 3.3

Java 8 と Java 11

Hadoop 3.0.x~3.2.x

Java 8

Hadoop 2.7.x~2.10.x

Java 7 と Java 8

操作手順

分散

説明

Hadoop をデプロイする前にノードを計画します。この例では 3 台のインスタンスを使用します。hadoop001 はマスターノード、hadoop002hadoop003 はワーカーノードです。

機能コンポーネント

hadoop001

hadoop002

hadoop003

HDFS

  • NameNode

  • DataNode

DataNode

  • SecondaryNameNode

  • DataNode

YARN

NodeManager

  • ResourceManager

  • NodeManager

NodeManager

ステップ 1:JDK のインストール

重要

すべてのノードに JDK をインストールしてください。

  1. 通常のユーザーとして ECS インスタンスに接続します。

    詳細については、「ワークベンチを使用して Linux インスタンスに接続する」をご参照ください。

    重要

    Hadoop コミュニティでは、セキュリティと権限の問題から、root ユーザーとして Hadoop を実行することは推奨されていません。ecs-user などの非 root ユーザーを使用してください。

  2. JDK 1.8 のインストールパッケージをダウンロードします。

    wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  3. JDK 1.8 のインストールパッケージを解凍します。

    tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  4. JDK のインストールフォルダーを移動して名前を変更します。

    この例では、JDK のインストールフォルダーを java8 に変更します。別の名前を使用することもできます。

    sudo mv java-se-8u41-ri/ /usr/java8
  5. Java の環境変数を設定します。

    JDK のインストールフォルダーの名前を変更した場合は、次のコマンドの java8 を実際の名前で置き換えてください。

    sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile"
    sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile'
    source /etc/profile
  6. JDK がインストールされていることを確認します。

    java -version

    次の出力は、インストールが成功したことを示します。

    image

ステップ 2:パスワードなしの SSH ログインの設定

重要

この操作をすべてのインスタンスで実行してください。

パスワードなしの SSH ログインを設定すると、ノードはパスワード認証なしで接続できるようになり、クラスター管理が簡素化されます。

  1. ホスト名とホスト名の名前解決を設定します。

    sudo vim /etc/hosts

    すべてのインスタンスの <プライマリプライベート IP アドレス> <ホスト名> 情報を /etc/hosts ファイルに追加します。例:

    <プライマリプライベート IP アドレス> hadoop001
    <プライマリプライベート IP アドレス> hadoop002
    <プライマリプライベート IP アドレス> hadoop003
  2. 公開鍵と秘密鍵を作成します。

    ssh-keygen -t rsa

    image

  3. ssh-copy-id <ホスト名> を実行し、ホスト名を正しい名前に置き換えてください。例:

    hadoop001 で、ssh-copy-id hadoop001ssh-copy-id hadoop002、および ssh-copy-id hadoop003 を実行します。各コマンドの後、yes と対応するインスタンスのパスワードを入力してください。

    ssh-copy-id hadoop001
    ssh-copy-id hadoop002
    ssh-copy-id hadoop003

    出力が次のようになると、パスワードなしのログインが設定されます。

    image

ステップ 3:Hadoop のインストール

重要

すべてのインスタンスで次のコマンドを実行してください。

  1. Hadoop のインストールパッケージをダウンロードします。

    wget http://mirrors.cloud.aliyuncs.com/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
  2. Hadoop のインストールパッケージを /opt/hadoop に解凍します。

    sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/
    sudo mv /opt/hadoop-3.2.4 /opt/hadoop
  3. Hadoop の環境変数を設定します。

    sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile"
    source /etc/profile
  4. yarn-env.shhadoop-env.sh の設定ファイルを変更します。

    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh'
    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh'
  5. Hadoop がインストールされていることを確認します。

    hadoop version

    次の出力は、インストールが成功したことを示します。

    image

ステップ 4:Hadoop の設定

重要

すべてのノードで Hadoop の設定ファイルを変更してください。

  1. Hadoop 設定ファイル core-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/core-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

         <!--NameNode アドレスを指定します-->
         <property>
               <name>fs.defaultFS</name>
               <value>hdfs://hadoop001:8020</value>
         </property>
         <!--Hadoop が生成するファイルを格納するディレクトリを指定します-->
         <property>
               <name>hadoop.tmp.dir</name>
               <value>/opt/hadoop/data</value>
         </property>
         <!--HDFS Web ログインの静的ユーザーを hadoop として設定します-->
         <property>
                <name>hadoop.http.staticuser.user</name>
                <value>hadoop</value>
         </property>
  2. Hadoop 設定ファイル hdfs-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

          <!-- NameNode の Web エンドポイント -->
          <property>
              <name>dfs.namenode.http-address</name>  
              <value>hadoop001:9870</value>
          </property>
          <!-- Secondary NameNode の Web エンドポイント -->
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>hadoop003:9868</value>
          </property>
  3. Hadoop 設定ファイル yarn-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/yarn-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

           <!--NodeManager がデータを取得する方法はシャッフルです-->
           <property>
      	 <name>yarn.nodemanager.aux-services</name>
      	 <value>mapreduce_shuffle</value>
           </property>
      
          <!--YARN (ResourceManager) のアドレスを指定します-->     
          <property>
      	 <name>yarn.resourcemanager.hostname</name>
      	 <value>hadoop002</value>
          </property> 
          
          <!--NodeManager がコンテナに渡すことができる環境変数のホワイトリストを指定します-->
          <property>
          	<name>yarn.nodemanager.env-whitelist</name>
          	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
          </property>
  4. Hadoop 設定ファイル mapred-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/mapred-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

         <!--Hadoop に、YARN 上で MapReduce (MR) を実行するように指示します-->
         <property>
      	 <name>mapreduce.framework.name</name>
      	 <value>yarn</value>
         </property>
  5. Hadoop 設定ファイル workers を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/workers
    2. workers ファイルにインスタンス情報を挿入します。

      hadoop001
      hadoop002
      hadoop003

ステップ 5:Hadoop の起動

  1. namenode をフォーマットします。

    警告

    最初の起動時にのみ、マスターノード (hadoop001) で namenode をフォーマットします。

    hadoop namenode -format
  2. Hadoop を起動します。

    重要
    • Hadoop コミュニティでは、セキュリティと権限の問題から、root ユーザーとして Hadoop を実行することは推奨されていません。ecs-user などの非 root ユーザーを使用してください。

    • Hadoop を root で実行する必要がある場合は、次の設定ファイルを変更する前に、アクセス制御モデルと関連するリスクを理解してください。

      注:Hadoop を root として実行すると、データ漏洩、root 権限を取得できるマルウェアに対する脆弱性の増加、予期せぬ権限の問題など、深刻なセキュリティリスクが生じます。詳細については、「Hadoop 公式ドキュメント」をご参照ください。

    root ユーザーが Hadoop サービスを起動できるように設定ファイルを変更します。

    次の設定ファイルは通常、/opt/hadoop/sbin ディレクトリにあります。

    1. start-dfs.shstop-dfs.sh ファイルに、次のパラメーターを追加します。

      HDFS_DATANODE_USER=root
      HADOOP_SECURE_DN_USER=hdfs
      HDFS_NAMENODE_USER=root
      HDFS_SECONDARYNAMENODE_USER=root

      image

    2. start-yarn.shstop-yarn.sh ファイルに、次のパラメーターを追加します。

      YARN_RESOURCEMANAGER_USER=root
      HADOOP_SECURE_DN_USER=yarn
      YARN_NODEMANAGER_USER=root

      image

    1. hadoop001 で、start-dfs.sh を実行して HDFS サービスを起動します。

      このスクリプトは、NameNode、SecondaryNameNode、および DataNode を起動します。

      start-dfs.sh

      jps の出力が次のようになると、HDFS が実行されています。

      image

    2. hadoop002 で、start-yarn.sh を実行して YARN サービスを起動します。

      このスクリプトは、ResourceManager と NodeManager を起動します。

      start-yarn.sh

      出力が次のようになると、YARN が実行されています。

      image

  3. 3 つすべてのノードで起動したプロセスを表示します。

    jps

    起動したプロセスは次のとおりです。

    image

  4. ブラウザで http://<hadoop002 ECS インスタンスのパブリック IP アドレス>:8088 と入力して、YARN の Web UI にアクセスします。

    クラスターのリソース使用状況、MapReduce ジョブの状態、キュー情報を表示できます。

    重要

    セキュリティグループでポート 8088 のインバウンドトラフィックを許可してください。そうしないと、Web UI にアクセスできません。詳細については、「セキュリティグループルールの追加」をご参照ください。

    image

  5. ブラウザで http://<hadoop001 ECS インスタンスのパブリック IP アドレス>:9870 と入力して NameNode の Web UI にアクセスし、http://<hadoop003 ECS インスタンスのパブリック IP アドレス>:9868 と入力して SecondaryNameNode の Web UI にアクセスします。

    HDFS の状態、クラスターのヘルス状態、アクティブなノード、NameNode のログを表示できます。

    次のページは、分散環境が構築されたことを示します。

    重要

    セキュリティグループでポート 9870 のインバウンドトラフィックを許可してください。そうしないと、Web UI にアクセスできません。詳細については、「セキュリティグループルールの追加」をご参照ください。

    image

疑似分散

ステップ 1:JDK のインストール

  1. 通常のユーザーとして ECS インスタンスに接続します。

    詳細については、「ワークベンチを使用して Linux インスタンスに接続する」をご参照ください。

    重要

    Hadoop コミュニティでは、セキュリティと権限の問題から、root ユーザーとして Hadoop を実行することは推奨されていません。ecs-user などの非 root ユーザーを使用してください。

  2. JDK 1.8 のインストールパッケージをダウンロードします。

    wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  3. JDK 1.8 のインストールパッケージを解凍します。

    tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  4. JDK のインストールフォルダーを移動して名前を変更します。

    この例では、JDK のインストールフォルダーを java8 に変更します。別の名前を使用することもできます。

    sudo mv java-se-8u41-ri/ /usr/java8
  5. Java の環境変数を設定します。

    JDK のインストールフォルダーの名前を変更した場合は、次のコマンドの java8 を実際の名前で置き換えてください。

    sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile"
    sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile'
    source /etc/profile
  6. JDK がインストールされていることを確認します。

    java -version

    次の出力は、インストールが成功したことを示します。

    image

ステップ 2:パスワードなしの SSH ログインの設定

説明

単一ノードでもパスワードなしの SSH ログインが必要です。そうしないと、NameNode と DataNode の起動が権限拒否エラーで失敗します。

  1. 公開鍵と秘密鍵を作成します。

    ssh-keygen -t rsa

    image

  2. 公開鍵を authorized_keys ファイルに追加します。

    cd .ssh
    cat id_rsa.pub >> authorized_keys

ステップ 3:Hadoop のインストール

  1. Hadoop のインストールパッケージをダウンロードします。

    wget http://mirrors.cloud.aliyuncs.com/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
  2. Hadoop のインストールパッケージを /opt/hadoop に解凍します。

    sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/
    sudo mv /opt/hadoop-3.2.4 /opt/hadoop
  3. Hadoop の環境変数を設定します。

    sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile"
    source /etc/profile
  4. yarn-env.shhadoop-env.sh の設定ファイルを変更します。

    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh'
    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh'
  5. Hadoop がインストールされていることを確認します。

    hadoop version

    次の出力は、インストールが成功したことを示します。

    image

ステップ 4:Hadoop の設定

  1. Hadoop 設定ファイル core-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/core-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

          <property>
              <name>hadoop.tmp.dir</name>
              <value>file:/opt/hadoop/tmp</value>
              <description>一時ファイルを保存する場所</description>
          </property>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>
  2. Hadoop 設定ファイル hdfs-site.xml を変更します。

    1. ファイルを編集用に開きます。

      sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml
    2. <configuration></configuration> ノードに次の内容を挿入します。

          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/opt/hadoop/tmp/dfs/name</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/opt/hadoop/tmp/dfs/data</value>
          </property>

ステップ 5:Hadoop の起動

  1. namenode をフォーマットします。

    hadoop namenode -format
  2. Hadoop を起動します。

    重要
    • Hadoop コミュニティでは、セキュリティと権限の問題から、root ユーザーとして Hadoop を実行することは推奨されていません。ecs-user などの非 root ユーザーを使用してください。

    • Hadoop を root で実行する必要がある場合は、次の設定ファイルを変更する前に、アクセス制御モデルと関連するリスクを理解してください。

      注:Hadoop を root として実行すると、データ漏洩、root 権限を取得できるマルウェアに対する脆弱性の増加、予期せぬ権限の問題など、深刻なセキュリティリスクが生じます。詳細については、「Hadoop 公式ドキュメント」をご参照ください。

    root ユーザーが Hadoop サービスを起動できるように設定ファイルを変更します。

    次の設定ファイルは通常、/opt/hadoop/sbin ディレクトリにあります。

    1. start-dfs.shstop-dfs.sh ファイルに、次のパラメーターを追加します。

      HDFS_DATANODE_USER=root
      HADOOP_SECURE_DN_USER=hdfs
      HDFS_NAMENODE_USER=root
      HDFS_SECONDARYNAMENODE_USER=root

      image

    2. start-yarn.shstop-yarn.sh ファイルに、次のパラメーターを追加します。

      YARN_RESOURCEMANAGER_USER=root
      HADOOP_SECURE_DN_USER=yarn
      YARN_NODEMANAGER_USER=root

      image

    1. HDFS サービスを起動します。

      このスクリプトは、NameNode、SecondaryNameNode、および DataNode を起動します。

      start-dfs.sh

      出力が次のようになると、HDFS が実行されています。

      image

    2. YARN サービスを起動します。

      このスクリプトは、ResourceManager、NodeManager、および ApplicationHistoryServer を起動します。

      start-yarn.sh

      出力が次のようになると、YARN が実行されています。

      image

  3. 起動したプロセスを表示します。

    jps

    起動したプロセスは次のとおりです。

    image

  4. ブラウザで http://<ECS インスタンスのパブリック IP アドレス>:8088 と入力して、YARN の Web UI にアクセスします。

    クラスターのリソース使用状況、MapReduce ジョブの状態、キュー情報を表示できます。

    重要

    セキュリティグループでポート 8088 のインバウンドトラフィックを許可してください。そうしないと、Web UI にアクセスできません。詳細については、「セキュリティグループルールの追加」をご参照ください。

    image

  5. ブラウザで http://<ECS インスタンスのパブリック IP アドレス>:9870 と入力して、NameNode の Web UI にアクセスします。

    HDFS の状態、クラスターのヘルス状態、アクティブなノード、NameNode のログを表示できます。

    次のページは、疑似分散環境が構築されたことを示します。

    重要

    セキュリティグループでポート 9870 のインバウンドトラフィックを許可してください。そうしないと、Web UI にアクセスできません。詳細については、「セキュリティグループルールの追加」をご参照ください。

    image.png

関連操作

スナップショット整合性グループの作成

分散 Hadoop の場合、スナップショット整合性グループを使用して、クラスター全体でデータの一貫性を確保します。詳細については、「スナップショット整合性グループの作成」をご参照ください。

Hadoop 関連の操作

HDFS の操作については、「一般的な HDFS コマンド」をご参照ください。

関連ドキュメント