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

Elastic Compute Service:Hadoop環境の構築

最終更新日:Dec 12, 2024

Hadoopは、Apache Foundationによって開発された、オープンソースの分散型Javaベースのソフトウェアフレームワークです。 Hadoopを使用すると、ユーザーは分散プログラムを開発し、分散システムの基本的な詳細を理解する必要なく、高速コンピューティングとストレージのためにクラスター容量を最大限に活用できます。 このトピックでは、Linuxオペレーティングシステムを実行するElastic Compute Service (ECS) インスタンス上にHadoop分散環境を構築する方法について説明します。

前提条件

次の要件を満たすECSインスタンスが作成されます。

  • ECSインスタンスは、システムに割り当てられたパブリックIPアドレスまたはelastic IPアドレス (EIP) に関連付けられています。

  • ECSインスタンスはLinuxオペレーティングシステムを実行します。

  • インバウンドルールは、開いているポート22、443、8088、および9870にECSインスタンスが属するセキュリティグループに追加されます。 ポート8088は、Hadoop Yet Another Resource Negotiator (YARN) のデフォルトのweb UIポートです。 ポート9870は、Hadoop NameNodeのデフォルトのweb UIポートです。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。

背景情報

Apache Hadoopソフトウェアライブラリは、単純なプログラミングモデルを使用して、コンピューターのクラスター全体で大規模なデータセットを分散して処理できるフレームワークです。 フレームワークは、単一のサーバーから、ローカル計算およびストレージ機能を提供する数千台のマシンにスケールアップできます。 Hadoopは、高可用性を提供するためにハードウェアに依存しません。 アプリケーション層で障害を検出して処理し、障害が発生しやすいコンピューターのクラスターの上に高可用性サービスを提供するように設計されています。

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

  • HDFSは、アプリケーションデータの分散ストレージに使用され、アプリケーションデータへのアクセスを提供する分散ファイルシステムです。

  • MapReduceは、Hadoopクラスター内のサーバー間でコンピューティングジョブを分散する分散コンピューティングフレームワークです。 コンピューティングジョブは、マップタスクと削減タスクに分割されます。 JobTrackerは、分散処理のタスクをスケジュールします。

詳細については、Apache Hadoop Webサイトをご覧ください。

HadoopはJava Development Kit (JDK) と統合されています。 Hadoopバージョンが異なれば、異なるJDKバージョンに対応する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.2.4とJava 8を使用します。 他のHadoopおよびJavaバージョンを使用するには、Hadoopの公式Webサイトにアクセスしてください。 詳細については、「Hadoop Javaバージョン」をご参照ください。

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

  1. ECS インスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  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インストールファイルが抽出されているフォルダを移動および名前変更します。

    この例では、フォルダ名はjava8に変更されます。 ビジネス要件に基づいて、フォルダーに別の名前を指定できます。

    sudo mv java-se-8u41-ri/ /usr/java8
  5. 次のコマンドを実行して、Java環境変数を設定します。

    JDKインストールファイルを抽出するフォルダ名がjava8以外の場合は, 次のコマンドで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

    次のコマンド出力は、JDKがインストールされていることを示します。

    image

ステップ2: 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.shおよびhadoop-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

    次のコマンド出力は、Hadoopがインストールされていることを示します。

    image

ステップ3: Hadoopの設定

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

    1. 次のコマンドを実行して、core-site.xml設定ファイルを開きます。

      sudo vim /opt/hadoop/etc/hadoop/core-site.xml
    2. Iキーを押して挿入モードに入ります。

    3. <configuration></configuration> セクションで、次の内容を追加します。

          <property>
              <name>hadoop.tmp.dir</name>
              <value>file:/opt/hadoop/tmp</value>
              <description>location to store temporary files</description>
          </property>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>

      image

    4. Escキーを押して挿入モードを終了し、:wqと入力してファイルを保存して閉じます。

  2. Hadoopのhdfs-site.xml設定ファイルを変更します。

    1. 次のコマンドを実行して、hdfs-site.xml設定ファイルを開きます。

      sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml
    2. Iキーを押して挿入モードに入ります。

    3. <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>

      image

    4. Escキーを押して挿入モードを終了し、:wqと入力してファイルを保存して閉じます。

ステップ4: パスワードなしのSSHログインを設定する

  1. 次のコマンドを実行して、公開鍵と秘密鍵のペアを作成します。

    ssh-keygen -t rsa

    次のコマンド出力は、公開鍵と秘密鍵が作成されたことを示します。

    image

  2. 次のコマンドを実行して、公開鍵をauthorized_keysファイルに追加します。

    cd .ssh
    cat id_rsa.pub >> authorized_keys

ステップ5: Hadoopを起動する

  1. 次のコマンドを実行してNameNodeを初期化します。

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

    重要
    • システムのセキュリティと安定性を確保するため、ApacheはHadoopをrootユーザーとして起動することを推奨しません。 権限の問題により、Hadoopをルートユーザーとして起動できない場合があります。 Hadoopは、ecs-userなどの非rootユーザーとして起動できます。

    • Hadoopをrootユーザーとして起動する場合は、Hadoop権限と関連するリスクを管理する手順に精通している必要があります。また、以下の設定ファイルを変更する必要があります。

      Hadoopをrootユーザーとして起動すると、深刻なセキュリティリスクが発生する可能性があることに注意してください。 セキュリティリスクには、データリーク、最も高いシステム権限を取得するためにマルウェアによって悪用される可能性のある脆弱性、予期しない権限の問題や操作が含まれますが、これらに限定されません。 Hadoop権限の詳細については、「セキュアモードのHadoop」をご参照ください。

    設定ファイルを変更して、Hadoopをrootユーザーとして起動できるようにします。

    ほとんどの場合、次の設定ファイルは /opt/hadoop/sbinディレクトリに格納されます。

    1. start-dfs.shおよびstop-dfs.sh設定ファイルに次のパラメーターを追加します。

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

      image

    2. start-yarn.shおよびstop-yarn.sh設定ファイルに次のパラメーターを追加します。

      YARN_RESOURCEMANAGER_USER=root
      HADOOP_SECURE_DN_USER=yarn
      YARN_NODEMANAGER_USER=root

      image

    1. 次のコマンドを実行して、HDFSサービスを開始します。

      start-dfs.shコマンドは、NameNode、SecondaryNameNode、DataNodeなどのコンポーネントを起動してHDFSサービスを開始します。

      start-dfs.sh

      次のコマンド出力は、HDFSサービスが開始されたことを示します。

      image

    2. 次のコマンドを実行して、YARNサービスを開始します。

      start-yarn.shコマンドは、ResourceManager、NodeManager、ApplicationHistoryServerなどのコンポーネントを起動して、YARNサービスを開始します。

      start-yarn.sh

      次のコマンド出力は、YARNサービスが開始されたことを示します。

      image

  3. 次のコマンドを実行して、開始されたプロセスを表示します。

    jps

    次の図に示すプロセスが開始されます。

    image

  4. YARNのweb UIにアクセスするには、コンピューターのwebブラウザーのアドレスバーにhttp:// <ECSインスタンスのパブリックIPアドレス>:8088と入力します。

    web UIには、リソースの使用状況、アプリケーションのステータス (MapReduceジョブなど) 、キュー情報など、クラスター全体に関する情報が表示されます。

    重要

    オープンポート8088にECSインスタンスが属するセキュリティグループにインバウンドルールが追加されていることを確認します。 それ以外の場合は、web UIにアクセスできません。 詳細については、「セキュリティグループルールの追加」をご参照ください。

    image

  5. NameNodeのweb UIにアクセスするには、コンピューターのwebブラウザーのアドレスバーにhttp:// <ECSインスタンスのパブリックIPアドレス>:9870と入力します。

    web UIには、ファイルシステムのステータス、クラスターの正常性、アクティブノード、NameNodeログなど、HDFSファイルシステムに関する情報が表示されます。

    次の図に示すページは、分散Hadoop環境が構築されていることを示しています。

    重要

    オープンポート9870にECSインスタンスが属するセキュリティグループにインバウンドルールが追加されていることを確認します。 それ以外の場合は、web UIにアクセスできません。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。

    image.png