Partilhar via


Otimizar o Apache Pig com o Apache Ambari no Azure HDInsight

O Apache Ambari é uma interface web para gerenciar e monitorar clusters HDInsight. Para obter uma introdução à interface do usuário da Web do Ambari, consulte Gerenciar clusters HDInsight usando a interface do usuário da Web do Apache Ambari.

As propriedades do Apache Pig podem ser modificadas a partir da interface do usuário da Web do Ambari para ajustar as consultas do Pig. Modificar as propriedades Pig do Ambari modifica diretamente as propriedades Pig no /etc/pig/2.4.2.0-258.0/pig.properties arquivo.

  1. Para modificar as propriedades do Pig, navegue até a guia Configurações do Pig e expanda o painel Propriedades avançadas do porco.

  2. Encontre, descomente e altere o valor da propriedade que deseja modificar.

  3. Selecione Salvar no lado superior direito da janela para salvar o novo valor. Algumas propriedades podem exigir uma reinicialização do serviço.

    Advanced Apache pig properties.

Nota

Todas as configurações de nível de sessão substituem os valores de propriedade no pig.properties arquivo.

Ajuste o mecanismo de execução

Dois mecanismos de execução estão disponíveis para executar scripts Pig: MapReduce e Tez. Tez é um motor otimizado e é muito mais rápido do que MapReduce.

  1. Para modificar o mecanismo de execução, no painel Propriedades porco avançadas, localize a propriedade exectype.

  2. O valor padrão é MapReduce. Mude para Tez.

Ativar o modo local

Semelhante ao Hive, o modo local é usado para acelerar trabalhos com quantidades relativamente menores de dados.

  1. Para ativar o modo local, defina pig.auto.local.enabled como true. O valor predefinido é false.

  2. Os trabalhos com um tamanho de dados de entrada inferior ao valor da pig.auto.local.input.maxbytes propriedade são considerados trabalhos pequenos. O valor padrão é 1 GB.

Copiar cache jar do usuário

O Pig copia os arquivos JAR exigidos pelos UDFs para um cache distribuído para disponibilizá-los para nós de tarefas. Estes frascos não mudam com frequência. Se habilitada, a pig.user.cache.enabled configuração permite que jars sejam colocados em um cache para reutilizá-los para trabalhos executados pelo mesmo usuário. Esta configuração resulta num pequeno aumento no desempenho profissional.

  1. Para ativar, defina pig.user.cache.enabled como true. O padrão é false.

  2. Para definir o caminho base dos jars armazenados em cache, defina pig.user.cache.location como o caminho base. A predefinição é /tmp.

Otimize o desempenho com configurações de memória

As seguintes configurações de memória podem ajudar a otimizar o desempenho do script Pig.

  • pig.cachedbag.memusage: A quantidade de memória dada a um saco. Um saco é a coleção de tuplas. Uma tupla é um conjunto ordenado de campos e um campo é um pedaço de dados. Se os dados em um saco estiverem além da memória fornecida, eles serão derramados no disco. O valor padrão é 0,2, que representa 20% da memória disponível. Essa memória é compartilhada em todos os sacos em um aplicativo.

  • pig.spill.size.threshold: Sacos maiores que esse limite de tamanho de derramamento (em bytes) são derramados no disco. O valor padrão é 5 MB.

Comprimir ficheiros temporários

O Pig gera arquivos temporários durante a execução do trabalho. A compactação dos arquivos temporários resulta em um aumento de desempenho ao ler ou gravar arquivos no disco. As configurações a seguir podem ser usadas para compactar arquivos temporários.

  • pig.tmpfilecompression: Quando verdadeiro, habilita a compactação temporária de arquivos. O valor predefinido é false.

  • pig.tmpfilecompression.codec: O codec de compressão a ser usado para compactar os arquivos temporários. Os codecs de compressão recomendados são LZO e Snappy para menor uso da CPU.

Ativar a combinação de divisão

Quando ativado, pequenos arquivos são combinados para menos tarefas de mapa. Essa configuração melhora a eficiência dos trabalhos com muitos arquivos pequenos. Para ativar, defina pig.noSplitCombination como true. O valor predefinido é false.

Sintonizar mapeadores

O número de mapeadores é controlado modificando a propriedade pig.maxCombinedSplitSize. Esta propriedade especifica o tamanho dos dados a serem processados por uma única tarefa de mapa. O valor padrão é o tamanho de bloco padrão do sistema de arquivos. Aumentar esse valor resulta em um número menor de tarefas de mapeador.

Redutores de sintonia

O número de redutores é calculado com base no parâmetro pig.exec.reducers.bytes.per.reducer. O parâmetro especifica o número de bytes processados por redutor, por padrão 1 GB. Para limitar o número máximo de redutores, defina a pig.exec.reducers.max propriedade, por padrão 999.

Próximos passos