ゲートウェイは E-MapReduce クラスターと同じイントラネット内の ECS サーバーです。 ロードバランシング、およびセキュリティ隔離、または E-MapReduce クラスターへのジョブの送信に、ゲートウェイを使用します。
以下の 2 通りの方法でゲートウェイを作成します。
- E-MapReduce 内で作成 (推奨)
- 手動で作成
E-MapReduce コンソールでゲートウェイを作成
E-MapReduce ゲートウェイでは Hadoop クラスターのみがサポートされています。 E-MapReduce ゲートウェイを作成する前に、Hadoop クラスターを作成する必要があります。
E-MapReduce gateway を作成するには、以下の手順に従います。
- E-MapReduce コンソールにログインします。
- [ゲートウェイの作成] をクリックします。
- [ゲートウェイの作成] ページで 必要な情報を入力します。
- 課金方法
- サブスクリプションは、指定された期間課金します。 この方法は従量課金より費用効率がよく、特に 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 を介してゲートウェイにログインするときに、秘密鍵ファイルに秘密鍵を入れます。
- 課金方法
- [作成] をクリックして設定を保存します。
正常に作成されたら、新しく作成されたゲートウェイがクラスターリストに表示され、[ステータス] 列のステータスは"アイドル"になります。
手動でゲートウェイを作成
- ネットワーク環境
ゲートウェイマシンが対応する 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
- E-MapReduce 2.7 より後のバージョン、または 3.2 より後のバージョン
- テスト
- 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
- Hive