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.
Para modificar as propriedades do Pig, navegue até a guia Configurações do Pig e expanda o painel Propriedades avançadas do porco.
Encontre, descomente e altere o valor da propriedade que deseja modificar.
Selecione Salvar no lado superior direito da janela para salvar o novo valor. Algumas propriedades podem exigir uma reinicialização do serviço.
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.
Para modificar o mecanismo de execução, no painel Propriedades porco avançadas, localize a propriedade
exectype
.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.
Para ativar o modo local, defina
pig.auto.local.enabled
como true. O valor predefinido é false.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.
Para ativar, defina
pig.user.cache.enabled
como true. O padrão é false.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.