ゲートウェイは E-MapReduce クラスターと同じイントラネット内の ECS サーバーです。 ロードバランシング、およびセキュリティ隔離、または E-MapReduce クラスターへのジョブの送信に、ゲートウェイを使用します。

以下の 2 通りの方法でゲートウェイを作成します。

E-MapReduce コンソールでゲートウェイを作成

E-MapReduce ゲートウェイでは Hadoop クラスターのみがサポートされています。 E-MapReduce ゲートウェイを作成する前に、Hadoop クラスターを作成する必要があります。 E-MapReduce gateway を作成するには、以下の手順に従います。
  1. E-MapReduce コンソールにログインします。
  2. [ゲートウェイの作成] をクリックします。
  3. [ゲートウェイの作成] ページで 必要な情報を入力します。
    • 課金方法
      • サブスクリプションは、指定された期間課金します。 この方法は従量課金より費用効率がよく、特に 3 年分を一度に支払う場合は大幅な割引があります。
      • 従量課金は、時間によって課金します。 この方法ではプロダクトを使用した時間に基づいて料金を計算します。
    • クラスターでは、ジョブを送信するゲートウェイを作成します。 ゲートウェイはクラスターと一致した Hadoop 環境を自動的に設定します。
    • 設定は、ゾーンで使用可能な ECS インスタンスの仕様です。
    • システムディスクタイプは、ゲートウェイノードのシステムディスクタイプです。 システムディスクには、SSD クラウドディスクと高効率クラウドディスクの 2 つのタイプがあります。 表示されるタイプはサーバーモデルとリージョンによって変わります。デフォルトでは、クラスターがリリースされるときにシステムディスクがリリースされます。
    • システムディスクサイズは、最小サイズが 40 GB で、最大サイズが 500 GB です。 デフォルト値は 300 GB です。
    • データディスクタイプは、ゲートウェイノードのデータディスクタイプです。 データディスクには、SSD クラウドディスクと高効率クラウドディスクの 2 つのタイプがあります。 表示されるタイプはサーバーモデルとリージョンによって変わります。デフォルトでは、クラスターがリリースされるときにデータディスクがリリースされます。
    • データディスクサイズは、最小サイズが 200 GB で、最大サイズが 4000 GB です。 デフォルト値は 300 GB です。
    • 数量は、データディスクの数です。 最小は 1 個、最大は 10 個です。
    • クラスター名は、ゲートウェイの名前です。 1 文字から 64 文字の間で設定します。漢字、文字、数字、ハイフン (-) 、およびアンダースコア (_) を使用します。
    • パスワードとキーペア
      • パスワードモードは、ゲートウェイにログインするためにテキストボックスにパスワードを入力します。
      • キーペアモードは、ゲートウェイにログインするためにドロップダウンメニューでキーペア名を選択します。 キーペアが作成されていない場合は、右側の [キーペアを作成] をクリックして ECS コンソールに移動します。. キーペアに対応する .pem 形式の秘密鍵ファイルは公開しません。 ゲートウェイが作成されたら、キーペアの公開鍵はゲートウェイがある ECS に自動的に結合されます。 SSH を介してゲートウェイにログインするときに、秘密鍵ファイルに秘密鍵を入れます。
  4. [作成] をクリックして設定を保存します。

    正常に作成されたら、新しく作成されたゲートウェイがクラスターリストに表示され、[ステータス] 列のステータスは"アイドル"になります。

手動でゲートウェイを作成

  • ネットワーク環境

    ゲートウェイマシンが対応する E-MapReduce クラスターのセキュリティグループにあることを確認します。 これによって、ゲートウェイノードは E-MapReduce クラスターに簡単にアクセスできるようになります。 マシンのセキュリティグループの設定については、セキュリティグループの作成をご参照ください。

  • ソフトウェア環境
    • システム環境は CentOS 7.2+ を推奨します。
    • Java 環境は JDK 1.7 以降がインストールされている必要があります。OpenJDK 1.8.0 を推奨します。
  • 手順
    • E-MapReduce 2.7 より後のバージョン、または 3.2 より後のバージョン

      これらのバージョンでゲートウェイを作成するには、E-MapReduce コンソールの仕様を推奨します。

      手動でゲートウェイをセットアップする場合は、以下のスクリプトをゲートウェイホストにコピーして実行します。sh deploy.sh <masteri_ip> master_password_file
      • deploy.sh は、スクリプト名です。
      • masteri_ip は、アクセス可能な必要がある、クラスター内のマスターノードの IP アドレスです。
      • master_password_file は、マスターノードのパスワードを保存するファイルで、パスワードはファイルに書き込まれます。
      #! /usr/bin/bash
      If [$ #! = 2]
      then
         echo "Usage: $0 master_ip master_password_file"
         exit 1;
      fi
      masterip=$1
      masterpwdfile=$2
      if ! type sshpass >/dev/null 2>&1; then
         yum install -y sshpass
      fi
      if ! type java >/dev/null 2>&1; then
         yum install -y java-1.8.0-openjdk
      fi
      mkdir -p /opt/apps
      mkdir -p /etc/ecm
      echo "Start to copy package from $masterip to local gateway(/opt/apps)"
      echo " -copying hadoop-2.7.2"
      sshpass -f $masterpwdfile scp -r -o 'StrictHostKeyChecking no' root@$masterip:/usr/lib/hadoop-current /opt/apps/
      echo " -copying hive-2.0.1"
      sshpass -f $masterpwdfile scp -r root@$masterip:/usr/lib/hive-current /opt/apps/
      echo " -copying spark-2.1.1"
      sshpass -f $masterpwdfile scp -r root@$masterip:/usr/lib/spark-current /opt/apps/
      echo "Start to link /usr/lib/\${app}-current to /opt/apps/\${app}"
      if [ -L /usr/lib/hadoop-current ]
      then
         unlink /usr/lib/hadoop-current
      fi
      ln -s /opt/apps/hadoop-current  /usr/lib/hadoop-current
      if [ -L /usr/lib/hive-current ]
      then
         unlink /usr/lib/hive-current
      fi
      ln -s /opt/apps/hive-current  /usr/lib/hive-current
      if [ -L /usr/lib/spark-current ]
      then
         unlink /usr/lib/spark-current
      fi
      ln -s /opt/apps/spark-current /usr/lib/spark-current
      echo "Start to copy conf from $masterip to local gateway(/etc/ecm)"
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/ecm/hadoop-conf  /etc/ecm/hadoop-conf
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/ecm/hive-conf /etc/ecm/hive-conf
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/ecm/spark-conf /etc/ecm/spark-conf
      echo "Start to copy environment from $masterip to local gateway(/etc/profile.d)"
      sshpass -f $masterpwdfile scp root@$masterip:/etc/profile.d/hdfs.sh /etc/profile.d/
      sshpass -f $masterpwdfile scp root@$masterip:/etc/profile.d/yarn.sh /etc/profile.d/
      sshpass -f $masterpwdfile scp root@$masterip:/etc/profile.d/hive.sh /etc/profile.d/
      sshpass -f $masterpwdfile scp root@$masterip:/etc/profile.d/spark.sh /etc/profile.d/
      if [ -L /usr/lib/jvm/java ]
      then
         unlink /usr/lib/jvm/java
      fi
      echo "" >>/etc/profile.d/hdfs.sh
      echo export JAVA_HOME=/usr/lib/jvm/jre-1.8.0 >>/etc/profile.d/hdfs.sh
      echo "Start to copy host info from $masterip to local gateway(/etc/hosts)"
      sshpass -f $masterpwdfile scp root@$masterip:/etc/hosts /etc/hosts_bak
      cat /etc/hosts_bak | grep emr | grep cluster >>/etc/hosts
      if ! id hadoop >& /dev/null
      then
         useradd hadoop
      fi
    • E-MapReduce 2.7 より前のバージョン、または 3.2 より前のバージョン
      以下のスクリプトをゲートウェイホストにコピーして実行します。 sh deploy.sh <masteri_ip> master_password_file
      • deploy.sh は、スクリプト名です。
      • masteri_ip は、アクセス可能な必要がある、クラスター内のマスターノードの IP アドレスです。
      • master_password_file は、マスターノードのパスワードを保存するファイルで、パスワードはファイルに書き込まれます
      ! /usr/bin/bash
      if [ $# ! = 2 ]
      then
         echo "Usage: $0 master_ip master_password_file"
         exit 1;
      fi
      masterip=$1
      masterpwdfile=$2
      if ! type sshpass >/dev/null 2>&1; then
         yum install -y sshpass
      fi
      if ! type java >/dev/null 2>&1; then
         yum install -y java-1.8.0-openjdk
      fi
      mkdir -p /opt/apps
      mkdir -p /etc/emr
      echo "Start to copy package from $masterip to local gateway(/opt/apps)"
      echo " -copying hadoop-2.7.2"
      sshpass -f $masterpwdfile scp -r -o 'StrictHostKeyChecking no' root@$masterip:/usr/lib/hadoop-current /opt/apps/
      echo " -copying hive-2.0.1"
      sshpass -f $masterpwdfile scp -r root@$masterip:/usr/lib/hive-current /opt/apps/
      echo " -copying spark-2.1.1"
      sshpass -f $masterpwdfile scp -r root@$masterip:/usr/lib/spark-current /opt/apps/
      echo "Start to link /usr/lib/\${app}-current to /opt/apps/\${app}"
      if [ -L /usr/lib/hadoop-current ]
      then
         Unlink/usr/lib/hadoop-Current
      fi
      ln -s /opt/apps/hadoop-current  /usr/lib/hadoop-current
      if [ -L /usr/lib/hive-current ]
      then
         unlink /usr/lib/hive-current
      fi
      ln -s /opt/apps/hive-current  /usr/lib/hive-current
      if [ -L /usr/lib/spark-current ]
      then
         unlink /usr/lib/spark-current
      fi
      Ln-S/opt/apps/spark-current/usr/lib/spark-Current
      echo "Start to copy conf from $masterip to local gateway(/etc/emr)"
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/emr/hadoop-conf  /etc/emr/hadoop-conf
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/emr/hive-conf /etc/emr/hive-conf
      sshpass -f $masterpwdfile scp -r root@$masterip:/etc/emr/spark-conf /etc/emr/spark-conf
      Echo "start to copy environment from $ masterip to local Gateway (/etc/profile. d )"
      sshpass -f $masterpwdfile scp root@$masterip:/etc/profile.d/hadoop.sh /etc/profile.d/
      if [ -L /usr/lib/jvm/java ]
      then
         unlink /usr/lib/jvm/java
      fi
      ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre /usr/lib/jvm/java
      echo "Start to copy host info from $masterip to local gateway(/etc/hosts)"
      sshpass -f $masterpwdfile scp root@$masterip:/etc/hosts /etc/hosts_bak
      cat /etc/hosts_bak | grep emr | grep cluster >>/etc/hosts
      if ! id hadoop >& /dev/null
      then
         useradd hadoop
      fi
  • テスト
    • Hive
      [hadoop@iZ23bc05hrvZ ~]$ hive
      hive> show databases;
      OK
      default
      Time taken: 1.124 seconds, Fetched: 1 row(s)
      hive> create database school;
      OK
      Time taken: 0.362 seconds
      hive>
    • Hadoop ジョブの実行
      [hadoop@iZ23bc05hrvZ ~]$ hadoop  jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 10 10
      Number of Maps  = 10
      Samples per Map = 10
      Wrote input for Map #0
      Wrote input for Map #1
      Wrote input for Map #2
      Wrote input for Map #3
      Wrote input for Map #4
      Wrote input for Map #5
      Wrote input for Map #6
      Wrote input for Map #7
      Wrote input for Map #8
      Wrote input for Map #9
        File Input Format Counters 
            Bytes Read=1180
        File Output Format Counters 
            Bytes Written=97
      Job Finished in 29.798 seconds
      Estimated value of Pi is 3.20000000000000000000