Otimizar o Apache Pig com o Apache Ambari no Azure HDInsight
Apache Ambari é uma interface da Web voltada para gerenciar e monitorar clusters do HDInsight. Para obter uma introdução à IU da Web do Ambari, consulte Gerenciar clusters do HDInsight com a IU da Web do Apache Ambari.
Propriedades do Apache Pig podem ser modificadas da interface do usuário da Web do Ambari para ajustar consultas de Pig. Modificar propriedades de Pig do Ambari modifica diretamente as propriedades de Pig no arquivo /etc/pig/2.4.2.0-258.0/pig.properties
.
Para modificar propriedades de Pig, navegue até a guia Configurações de Pig e, em seguida, expanda o painel Propriedades avançadas de Pig.
Localize, remova as marcas de comentário e altere o valor da propriedade que deseja modificar.
Selecione Salvar no canto superior direito da janela para salvar o novo valor. Algumas propriedades podem exigir uma reinicialização do serviço.
Observação
As configurações de nível de sessão substituem os valores de propriedade no arquivo pig.properties
.
Ajustar mecanismo de execução
Dois mecanismos de execução estão disponíveis para executar scripts de Pig: MapReduce e Tez. O Tez é um mecanismo otimizado e muito mais rápido que o MapReduce.
Para modificar o mecanismo de execução, no painel Propriedades avançadas de Pig, localize a propriedade
exectype
.O valor padrão é MapReduce. Altere-o para Tez.
Habilitar modo local
De forma semelhante ao Hive, o modo local é usado para acelerar trabalhos com quantidades de dados relativamente menores.
Para habilitar o modo local, defina
pig.auto.local.enabled
como true. O valor padrão é false.Trabalhos com um tamanho de dados de entrada menor que o valor da propriedade
pig.auto.local.input.maxbytes
são considerados trabalhos pequenos. O valor padrão é 1 GB.
Copiar o cache de jar do usuário
O Pig copia os arquivos JAR exigidos pelo UDFs para um cache distribuído para torná-los disponíveis para nós de tarefa. Esses jars não mudam com frequência. Se habilitada, a configuração pig.user.cache.enabled
permite que os jars sejam colocados em um cache para reutilizá-los para trabalhos executados pelo mesmo usuário. Essa configuração resulta em uma pequena melhoria no desempenho do trabalho.
Para habilitar, defina
pig.user.cache.enabled
como true. O padrão é falso.Para definir o caminho base dos jars armazenado em cache, defina
pig.user.cache.location
como o caminho base. O padrão é/tmp
.
Otimizar o desempenho com as configurações de memória
As seguintes configurações de memória podem ajudar a otimizar o desempenho de script do Pig.
pig.cachedbag.memusage
: A quantidade de memória fornecida a um recipiente. Um recipiente é um conjunto de tuplas. Uma tupla é um conjunto ordenado de campos e um campo é uma parte dos dados. Se estiverem além da memória alocada, os dados em um recipiente serão despejados para o disco. O valor padrão é 0.2, que representa 20 por cento da memória disponível. Essa memória é compartilhada entre todos os recipientes em um aplicativo.pig.spill.size.threshold
: Recipientes maiores que esse limite de tamanho de despejo (em bytes) são despejados para o disco. O valor padrão é 5 MB.
Compactar arquivos temporários
O Pig gera arquivos temporários durante a execução do trabalho. Compactar os arquivos temporários resulta em uma melhoria do desempenho ao ler ou gravar arquivos no disco. As configurações a seguir podem ser usadas para compactar arquivos temporários.
pig.tmpfilecompression
: quando for true, habilitará a compactação de arquivos temporários. O valor padrão é false.pig.tmpfilecompression.codec
: o codec de compactação a ser usado para compactar os arquivos temporários. Os codecs de compactação recomendados são o LZO e o Snappy para menor uso da CPU.
Habilitar combinação de divisão
Quando habilitada, pequenos arquivos são combinados para que haja menos tarefas de mapeamento. Essa configuração melhora a eficiência de trabalhos com muitos arquivos pequenos. Para habilitar, defina pig.noSplitCombination
como true. O valor padrão é false.
Ajustar 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 mapeamento. O valor padrão é o tamanho do bloco padrão do sistema de arquivos. Aumentar esse valor resulta em um número menor de tarefas do mapeador.
Ajustar redutores
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 e por padrão é 1 GB. Para limitar o número máximo de redutores, defina a propriedadepig.exec.reducers.max
como 999 por padrão.