

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR の以前の AMI バージョンによるクラスターおよびアプリケーション設定のカスタマイズ
<a name="emr-3x-customizeappconfig"></a>

Amazon EMR リリースバージョン 4.0.0 では、設定分類を使用してアプリケーションを設定する簡単な方法が導入されました。詳細については、「[アプリケーションの設定](emr-configure-apps.md)」を参照してください。AMI バージョンを使用する場合は、渡した引数とともにブートストラップアクションを使用してアプリケーションを設定します。たとえば、ブートストラップアクション `configure-hadoop` および `configure-daemons` は、Hadoop や YARN に固有の `--namenode-heap-size` などの 環境プロパティを設定します。より新しいバージョンでは、これらは `hadoop-env` と `yarn-env` 設定分類を使用して設定されます。実行するブートストラップアクションの一般的な設定の詳細については、[Github の emr-bootstrap-actions リポジトリ](https://github.com/awslabs/emr-bootstrap-actions)を参照してください。

次の表は、より最近の Amazon EMR リリースバージョンでブートストラップアクションを構成分類にマップしています。


**Hadoop**  

| 影響を受けるアプリケーションファイル名 | AMI バージョンのブートストラップアクション | 設定分類 | 
| --- | --- | --- | 
| core-site.xml  | configure-hadoop -c  | core-site | 
| log4j.properties  | configure-hadoop -l  | hadoop-log4j | 
| hdfs-site.xml  | configure-hadoop -s  | hdfs-site  | 
| 該当なし | 該当なし | hdfs-encryption-zones | 
| mapred-site.xml  | configure-hadoop -m  | mapred-site | 
| yarn-site.xml  | configure-hadoop -y  | yarn-site | 
| httpfs-site.xml  | configure-hadoop -t  | httpfs-site | 
| capacity-scheduler.xml  | configure-hadoop -z  | capacity-scheduler | 
| yarn-env.sh  | configure-daemons --resourcemanager-opts | yarn-env | 


**[Hive]**  

| 影響を受けるアプリケーションファイル名 | AMI バージョンのブートストラップアクション | 設定分類 | 
| --- | --- | --- | 
| hive-env.sh | 該当なし | hive-env | 
| hive-site.xml | hive-script --install-hive-site ${MY\_HIVE\_SITE\_FILE} | hive-site | 
| hive-exec-log4j.properties | 該当なし | hive-exec-log4j | 
| hive-log4j.properties | 該当なし | hive-log4j | 


**EMRFS**  

| 影響を受けるアプリケーションファイル名 | AMI バージョンのブートストラップアクション | 設定分類 | 
| --- | --- | --- | 
| emrfs-site.xml | configure-hadoop -e | emrfs-site | 
| 該当なし | s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ | emrfs-site (新しい設定 fs.s3.cse.encryptionMaterialsProvider.uri と併用) | 

全分類の一覧については、[アプリケーションの設定](emr-configure-apps.md) を参照してください。

## アプリケーションの環境変数
<a name="emr-3x-appenv"></a>

AMI バージョンを使用する場合、`hadoop-user-env.sh` スクリプトが、`configure-daemons` ブートストラップアクションと組み合わせて使用され、Hadoop 環境を設定します。スクリプトには、以下のアクションが含まれます。

```
#!/bin/bash 
export HADOOP_USER_CLASSPATH_FIRST=true; 
echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh
```

Amazon EMR リリース 4.x では、次の例に示すように `hadoop-env` 設定分類を使用して同じ手順を実行します。

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_USER_CLASSPATH_FIRST":"true",
                  "HADOOP_CLASSPATH":"/path/to/my.jar"
               }
            }
         ]
      }
   ]
```

別の例として、`configure-daemons` の使用、`--namenode-heap-size=2048` を渡すこと、`--namenode-opts=-XX:GCTimeRatio=19` は以下の設定分類と同じです。

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_DATANODE_HEAPSIZE":  "2048",
           	"HADOOP_NAMENODE_OPTS":  "-XX:GCTimeRatio=19"
               }
            }
         ]
      }
   ]
```

他のアプリケーションの環境変数は、`/home/hadoop/.bashrc` では定義されなくなりました。代わりに、コンポーネントやアプリケーションごとに、主に `/etc/default` のような `/etc/default/hadoop` ファイルで設定されます。アプリケーション RPM によってインストールされる `/usr/bin/` にあるラッパースクリプトでも、バイナリスクリプトを実際に含める前に、追加の環境変数を設定できます。

## サービスポート
<a name="emr-3x-serviceports"></a>

AMI バージョンを使用する場合は、一部のサービスでカスタムポートを使用します。


**ポート設定の変更箇所**  

| 設定 | AMI バージョン 3.x | オープンソースのデフォルト | 
| --- | --- | --- | 
| fs.default.name | hdfs://emrDeterminedIP:9000 | デフォルト (hdfs://{{emrDeterminedIP}}:8020)  | 
| dfs.datanode.address | 0.0.0.0:9200 | デフォルト (0.0.0.0:50010)  | 
| dfs.datanode.http.address | 0.0.0.0:9102 | デフォルト (0.0.0.0:50075)  | 
| dfs.datanode.https.address | 0.0.0.0:9402 | デフォルト (0.0.0.0:50475) | 
| dfs.datanode.ipc.address | 0.0.0.0:9201 | デフォルト (0.0.0.0:50020) | 
| dfs.http.address | 0.0.0.0:9101 | デフォルト (0.0.0.0:50070)  | 
| dfs.https.address | 0.0.0.0:9202 | デフォルト (0.0.0.0:50470)  | 
| dfs.secondary.http.address | 0.0.0.0:9104 | デフォルト (0.0.0.0:50090) | 
| yarn.nodemanager.address | 0.0.0.0:9103 | デフォルト (${yarn.nodemanager.hostname}:0)  | 
| yarn.nodemanager.localizer.address  | 0.0.0.0:9033 | デフォルト (${yarn.nodemanager.hostname}:8040) | 
| yarn.nodemanager.webapp.address | 0.0.0.0:9035 | デフォルト (${yarn.nodemanager.hostname}:8042) | 
| yarn.resourcemanager.address | {{emrDeterminedIP}}:9022 | デフォルト (${yarn.resourcemanager.hostname}:8032) | 
| yarn.resourcemanager.admin.address | {{emrDeterminedIP}}:9025 | デフォルト (${yarn.resourcemanager.hostname}:8033) | 
| yarn.resourcemanager.resource-tracker.address | {{emrDeterminedIP}}:9023 | デフォルト (${yarn.resourcemanager.hostname}:8031) | 
| yarn.resourcemanager.scheduler.address | {{emrDeterminedIP}}:9024 | デフォルト (${yarn.resourcemanager.hostname}:8030) | 
| yarn.resourcemanager.webapp.address | 0.0.0.0:9026  | デフォルト (${yarn.resourcemanager.hostname}:8088) | 
| yarn.web-proxy.address | {{emrDeterminedIP}}:9046  | デフォルト (値なし)  | 
| yarn.resourcemanager.hostname | 0.0.0.0 (デフォルト)  | {{emrDeterminedIP}} | 

**注記**  
{{emrDeterminedIP}} は、Amazon EMR で生成される IP アドレスです。

## [ユーザー]
<a name="emr-3x-users"></a>

AMI バージョンを使用する場合、ユーザー `hadoop` がすべてのプロセスを実行し、すべてのファイルを保有します。Amazon EMR リリースバージョン 4.0.0 以降では、ユーザーはアプリケーションレベルやコンポーネントレベルで存在します。

## インストールシーケンス、インストールされているアーティファクト、およびログファイルの場所
<a name="emr-3x-directories"></a>

AMI バージョンを使用する場合、アプリケーションのアーティファクトおよびその設定ディレクトリは、`/home/hadoop/{{application}}` ディレクトリにインストールされます。たとえば、Hive をインストールした場合は、ディレクトリは `/home/hadoop/hive` でした。Amazon EMR リリース 4.0.0 以降では、アプリケーションのアーティファクトは `/usr/lib/{{application}}` ディレクトリにインストールされます。AMI バージョンを使用する場合、ログファイルはさまざまな場所にあります。次の表に、場所を示します。


**Amazon S3 のログの場所の変更**  

| デーモンまたはアプリケーション | ディレクトリの場所 | 
| --- | --- | 
| instance-state | node/{{instance-id}}/instance-state/ | 
| hadoop-hdfs-namenode | daemons/{{instance-id}}/hadoop-hadoop-namenode.log | 
| hadoop-hdfs-datanode | daemons/{{instance-id}}/hadoop-hadoop-datanode.log | 
| hadoop-yarn (ResourceManager) | daemons/{{instance-id}}/yarn-hadoop-resourcemanager | 
| hadoop-yarn (プロキシサーバー) | daemons/{{instance-id}}/yarn-hadoop-proxyserver | 
| mapred-historyserver | daemons/{{instance-id}}/ | 
| httpfs | daemons/{{instance-id}}/httpfs.log | 
| hive-server | node/{{instance-id}}/hive-server/hive-server.log | 
| hive-metastore | node/{{instance-id}}/apps/hive.log | 
| Hive CLI | node/{{instance-id}}/apps/hive.log | 
| YARN アプリケーションのユーザーログおよびコンテナログ | task-attempts/ | 
| Mahout | 該当なし | 
| Pig | 該当なし | 
| spark-historyserver | 該当なし | 
| MapReduce ジョブ履歴ファイル | jobs/ | 

## Command runner
<a name="emr-differences-commandrunner"></a>

AMI バージョンを使用する場合、`/home/hadoop/contrib/streaming/hadoop-streaming.jar` のような多くのスクリプトまたはプログラムが、シェルのログインパス環境に置かれていないため、command-runner.jar または script-runner.jar などの jar ファイルを使用する際に完全パスを指定する必要があります。`command-runner.jar` が AMI に置かれるため、`script-runner.jar` を使用する場合のように完全 URI を指定する必要がなくなりました。

## レプリケーション係数
<a name="emr-3x-replication"></a>

レプリケーション係数を使用すると、Hadoop JVM をいつ起動するかを設定できます。Hadoop JVM は、タスクごとに新しく起動できます。これにより、タスクの独立性を高めることも、タスク間で JVM を共有してフレームワークのオーバーヘッドを低下させることもできます。多くの小さいファイルを処理する場合は、JVM を何回も再利用して起動のコストを分散させることに意味があります。ただし、各タスクが長時間かかる場合や大量のデータを処理する場合は、後続のタスクのためにすべてのメモリが確実に解放されるように、JVM を再利用しない選択もできます。AMI のバージョンを使用する場合は、`configure-hadoop` ブートストラップアクションを使用してレプリケーション係数をカスタマイズすることができ、`mapred.job.reuse.jvm.num.tasks` プロパティを設定します。

次の例は、無限の JVM 再利用の JVM 再利用係数の設定を示しています。

**注記**  
読みやすくするために、Linux 行連続文字 (\\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

```
aws emr create-cluster --name "{{Test cluster}}" --ami-version {{3.11.0}} \
--applications Name={{Hue}} Name={{Hive}} Name={{Pig}} \
--use-default-roles --ec2-attributes KeyName={{myKey}} \
--instance-groups InstanceGroupType={{MASTER}},InstanceCount={{1}},InstanceType={{m3.xlarge}} \
InstanceGroupType={{CORE}},InstanceCount={{2}},InstanceType={{m3.xlarge}} \
--bootstrap-actions Path={{s3://elasticmapreduce/bootstrap-actions/configure-hadoop}},\
Name={{"Configuring infinite JVM reuse"}},Args=[{{"-m","mapred.job.reuse.jvm.num.tasks=-1"}}]
```