Personalização da configuração de clusters e aplicativos com AMI versões anteriores da Amazon EMR - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Personalização da configuração de clusters e aplicativos com AMI versões anteriores da Amazon EMR

A EMR versão 4.0.0 da Amazon introduziu um método simplificado de configuração de aplicativos usando classificações de configuração. Para obter mais informações, consulte Configurar aplicações. Ao usar uma AMI versão, você configura aplicativos usando ações de bootstrap junto com os argumentos que você passa. Por exemplo, as ações configure-hadoop e configure-daemons bootstrap definem o Hadoop e propriedades YARN específicas do ambiente, como. --namenode-heap-size Em versões mais recentes, elas são configuradas usando as classificações de configuração hadoop-env e yarn-env. Para ações de bootstrap que realizam configurações comuns, consulte o emr-bootstrap-actions repositório no Github.

As tabelas a seguir mapeiam as ações de bootstrap para as classificações de configuração nas EMR versões mais recentes da Amazon.

Hadoop
Nome do arquivo de aplicativo afetado AMIação de bootstrap da versão Classificação de configuração
core-site.xml configure-hadoop -c core-site
log4j.properties configure-hadoop -l hadoop-log4j
hdfs-site.xml configure-hadoop -s hdfs-site
n/a n/a 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
Nome do arquivo de aplicativo afetado AMIação de bootstrap da versão Classificação de configuração
hive-env.sh n/a hive-env
hive-site.xml hive-script --install-hive-site ${MY_HIVE_SITE_FILE} hive-site
hive-exec-log4j.properties n/a hive-exec-log4j
hive-log4j.properties n/a hive-log4j
EMRFS
Nome do arquivo de aplicativo afetado AMIação de bootstrap da versão Classificação de configuração
emrfs-site.xml configure-hadoop -e emrfs-site
n/a s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ emrfs-site (com nova configuração fs.s3.cse.encryptionMaterialsProvider.uri)

Para obter uma lista de todas as classificações, consulte Configurar aplicações.

Variáveis de ambientes de aplicações

Ao usar uma AMI versão, um hadoop-user-env.sh script é usado junto com a ação configure-daemons bootstrap para configurar o ambiente Hadoop. O script inclui as seguintes ações:

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

Na EMR versão 4.x da Amazon, você faz o mesmo usando a classificação de hadoop-env configuração, conforme mostrado no exemplo a seguir:

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

Como outro exemplo, usar configure-daemons e transmitir --namenode-heap-size=2048 e --namenode-opts=-XX:GCTimeRatio=19 é equivalente às seguintes classificações de configuração.

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

As outras variáveis do ambiente de aplicativos não são mais definidas em /home/hadoop/.bashrc. Em vez disso, elas são definidas nos arquivos /etc/default por componente ou aplicativo, como por exemplo /etc/default/hadoop. Os scripts de wrapper /usr/bin/ instalados pelo aplicativo também RPMs podem definir variáveis de ambiente adicionais antes de envolver o script bin real.

Portas de serviço

Ao usar uma AMI versão, alguns serviços usam portas personalizadas.

Alterações nas configurações das portas
Configuração AMIversão 3.x Padrão de código aberto
fs.default.name hdfs://IP: 9000 emrDetermined padrão (hdfs: emrDeterminedIP //:8020)
dfs.datanode.address 0.0.0.0:9200 default (0.0.0.0:50010)
dfs.datanode.http.address 0.0.0.0:9102 default (0.0.0.0:50075)
dfs.datanode.https.address 0.0.0.0:9402 default (0.0.0.0:50475)
dfs.datanode.ipc.address 0.0.0.0:9201 default (0.0.0.0:50020)
dfs.http.address 0.0.0.0:9101 default (0.0.0.0:50070)
dfs.https.address 0.0.0.0:9202 default (0.0.0.0:50470)
dfs.secondary.http.address 0.0.0.0:9104 default (0.0.0.0:50090)
yarn.nodemanager.address 0.0.0.0:9103 default (${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 default (${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 default (${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP: 9022 default (${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP: 9025 default (${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP: 9023 default (${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP: 9024 default (${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 default (${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP: 9046 default (no-value)
yarn.resourcemanager.hostname 0.0.0.0 (default) emrDeterminedIP
nota

emrDeterminedIPÉ um endereço IP gerado pela AmazonEMR.

Usuários

Ao usar uma AMI versão, o usuário hadoop executa todos os processos e possui todos os arquivos. Na EMR versão 4.0.0 e posterior da Amazon, os usuários existem no nível do aplicativo e do componente.

Sequência de instalação, artefatos instalados e locais dos arquivos de log

Ao usar uma AMI versão, os artefatos do aplicativo e seus diretórios de configuração são instalados no /home/hadoop/application diretório. Por exemplo, se você tivesse o Hive instalado, o diretório seria /home/hadoop/hive. Na EMR versão 4.0.0 e posterior da Amazon, os artefatos do aplicativo são instalados no /usr/lib/application diretório. Ao usar uma AMI versão, os arquivos de log são encontrados em vários lugares. A tabela a seguir lista os locais.

Alterações nos locais de log no Amazon S3
Daemon ou aplicação Local do diretório
instance-state nodo/ /instance-state/ instance-id
hadoop-hdfs-namenode instance-iddaemons///.log hadoop-hadoop-namenode
hadoop-hdfs-datanode instance-iddaemons///.log hadoop-hadoop-datanode
fio de hadoop () ResourceManager instance-iddaemons//yarn-hadoop-resourcemanager
hadoop-yarn (Proxy Server) instance-iddaemons//yarn-hadoop-proxyserver
mapred-historyserver instance-iddaemons//
httpfs instance-iddaemons/ /httpfs.log
hive-server node/ /hive-server/hive-server.log instance-id
hive-metastore node/ /apps/hive.log instance-id
Colmeia CLI node/ /apps/hive.log instance-id
YARNregistros de usuários de aplicativos e registros de contêineres task-attempts/
Mahout N/D
Pig N/D
spark-historyserver N/D
Arquivos de histórico de trabalhos do mapreduce jobs/

Executor de comandos

Ao usar uma AMI versão, muitos scripts ou programas, por exemplo/home/hadoop/contrib/streaming/hadoop-streaming.jar, não são colocados no ambiente do caminho de login do shell, então você precisa especificar o caminho completo ao usar um arquivo jar, como command-runner.jar ou script-runner.jar, para executar os scripts. Ele command-runner.jar está localizado noAMI, portanto, não há necessidade de saber a totalidadeURI, como foi o caso comscript-runner.jar.

Fator de replicação

O fator de replicação permite que você configure quando iniciar um JVM Hadoop. Você pode iniciar um novo Hadoop JVM para cada tarefa, o que proporciona melhor isolamento de tarefas, ou você pode compartilhar JVMs entre tarefas, proporcionando menor sobrecarga da estrutura. Se você estiver processando muitos arquivos pequenos, faz sentido reutilizá-los JVM várias vezes para amortizar o custo de inicialização. No entanto, se cada tarefa levar muito tempo ou processar uma grande quantidade de dados, você poderá optar por não reutilizá-las JVM para garantir que toda a memória seja liberada para tarefas subsequentes. Ao usar uma AMI versão, você pode personalizar o fator de replicação usando a ação configure-hadoop bootstrap para definir a mapred.job.reuse.jvm.num.tasks propriedade.

O exemplo a seguir demonstra a configuração do fator de JVM reutilização para reutilização infinitaJVM.

nota

Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

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"]