Partilhar via


Execute os exemplos do MapReduce incluídos no HDInsight

Saiba como executar os exemplos do MapReduce incluídos no Apache Hadoop no HDInsight.

Pré-requisitos

Os exemplos do MapReduce

As amostras estão localizadas no cluster HDInsight em /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar. O código-fonte desses exemplos está incluído no cluster HDInsight em /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

Os seguintes exemplos estão contidos neste arquivo:

Exemplo Descrição
Contagem agregada de palavras Conta as palavras nos arquivos de entrada.
Agregadowordhist Calcula o histograma das palavras nos arquivos de entrada.
bbp Usa Bailey-Borwein-Plouffe para calcular dígitos exatos de Pi.
DBCOUNT Conta os logs de exibição de página armazenados em um banco de dados.
Distbbp Usa uma fórmula do tipo BBP para calcular bits exatos de Pi.
grep Conta as correspondências de uma expressão regular na entrada.
aderir Executa uma junção sobre conjuntos de dados classificados e igualmente particionados.
multifilewc Conta palavras de vários ficheiros.
Pentomino Programa de colocação de azulejos para encontrar soluções para problemas de pentomino.
pi Estimativas Pi usando um método quase Monte Carlo.
EscritorDeTextoAleatório Grava 10 GB de dados textuais aleatórios por nó.
randomwriter Grava 10 GB de dados aleatórios por nó.
secondarysort Define uma classificação secundária para a fase de redução.
ordenar Classifica os dados escritos pelo escritor aleatório.
Sudoku Um solucionador de sudoku.
teragen Gere dados para o Terasort.
Terasort Execute a função terasort.
Teravalida Verificação de resultados de terasort.
contagem de palavras Conta as palavras nos arquivos de entrada.
wordmean Conta o comprimento médio das palavras nos arquivos de entrada.
wordmedian Conta o comprimento médio das palavras nos arquivos de entrada.
palavra desvio-padrão Conta o desvio padrão do comprimento das palavras nos arquivos de entrada.

Executar o exemplo de contagem de palavras

  1. Conecte-se ao HDInsight usando SSH. Substitua CLUSTER pelo nome do cluster e digite o seguinte comando:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Na sessão SSH, use o seguinte comando para listar os exemplos:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
    

    Este comando gera a lista de exemplos da seção anterior deste documento.

  3. Use o comando a seguir para obter ajuda em um exemplo específico. Neste caso, o exemplo de contagem de palavras :

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
    

    Você recebe a seguinte mensagem:

    Usage: wordcount <in> [<in>...] <out>
    

    Essa mensagem indica que você pode fornecer vários caminhos de entrada para os documentos de origem. O caminho final é onde a saída (contagem de palavras nos documentos de origem) é armazenada.

  4. Utilize o seguinte para contar todas as palavras nos Cadernos de Leonardo da Vinci, que são fornecidos como dados de exemplo com seu cluster.

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
    

    A entrada para este trabalho é lida em /example/data/gutenberg/davinci.txt. A saída para este exemplo é armazenada em /example/data/davinciwordcount. Ambos os caminhos estão localizados no armazenamento padrão para o cluster, não no sistema de arquivos local.

    Observação

    Conforme observado na ajuda para o exemplo de contagem de palavras, você também pode especificar vários arquivos de entrada. Por exemplo, hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount contaria palavras em davinci.txt e ulysses.txt.

  5. Quando o trabalho for concluído, use o seguinte comando para exibir a saída:

    hdfs dfs -cat /example/data/davinciwordcount/*
    

    Este comando concatena todos os arquivos de saída produzidos pelo trabalho. Ele exibe a saída para o console. O resultado é semelhante ao seguinte texto:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Cada linha representa uma palavra e quantas vezes ela ocorreu nos dados de entrada.

O exemplo do Sudoku

Sudoku é um quebra-cabeça lógico composto por nove grades 3x3. Algumas células na grade têm números, enquanto outras estão em branco, e o objetivo é resolver para as células em branco. O link anterior tem mais informações sobre o quebra-cabeça, mas o objetivo deste exemplo é resolver para as células em branco. Assim, a nossa entrada deve ser um ficheiro que esteja no seguinte formato:

  • Nove linhas de nove colunas
  • Cada coluna pode conter um número ou ? (o que indica uma célula em branco)
  • As células são separadas por um espaço

Há uma certa maneira de construir quebra-cabeças Sudoku; Não é possível repetir um número numa coluna ou linha. Há um exemplo do cluster HDInsight que foi construído corretamente. Ele está localizado em /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta e contém o seguinte texto:

8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8

Para executar este problema de exemplo através do exemplo Sudoku, use o seguinte comando:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta

Os resultados são semelhantes ao seguinte texto:

8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8

Exemplo de Pi (π)

A amostra pi usa um método estatístico (quase-Monte Carlo) para estimar o valor de pi. Os pontos são colocados aleatoriamente em uma unidade quadrada. O quadrado também contém um círculo. A probabilidade de os pontos caírem dentro do círculo é igual à área do círculo, pi/4. O valor de pi pode ser estimado a partir do valor de 4R. R é a razão entre o número de pontos que estão dentro do círculo e o número total de pontos que estão dentro do quadrado. Quanto maior for a amostra de pontos utilizados, melhor será a estimativa.

Use o seguinte comando para executar este exemplo. Este comando usa 16 mapas com 10.000.000 de amostras cada para estimar o valor de pi:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000

O valor retornado por este comando é semelhante a 3.141591550000000000000. Para referências, as primeiras 10 casas decimais de pi são 3,1415926535.

Exemplo de GraySort de 10 GB

GraySort é uma classificação de referência. A métrica é a taxa de classificação (TB/minuto) que é alcançada ao classificar grandes quantidades de dados, geralmente um mínimo de 100 TB.

Este exemplo usa uns modestos 10 GB de dados para que possa ser executado com relativa rapidez. Utiliza as aplicações MapReduce desenvolvidas por Owen O'Malley e Arun Murthy. Essas aplicações ganharam o benchmark anual de classificação de terabytes de uso geral ("Daytona") em 2009, com uma taxa de 0,578 TB/min (100 TB em 173 minutos). Para obter mais informações sobre este e outros benchmarks de classificação, consulte o site Sort Benchmark .

Este exemplo usa três conjuntos de programas MapReduce:

  • TeraGen: Um programa MapReduce que gera linhas de dados para classificar

  • TeraSort: Coleta amostras dos dados de entrada e usa MapReduce para classificar os dados em uma ordem total

    TeraSort é uma classificação padrão do MapReduce, com exceção de um particionador personalizado. O particionador usa uma lista ordenada de chaves de amostra N-1 que definem o intervalo de chaves para cada redução. Em particular, todas as chaves tais que sample[i-1] <= key < sample[i] são enviadas para reduzir i. Este particionador garante que os resultados de reduce i são todos menores do que aqueles de reduce i+1.

  • TeraValidate: Um programa MapReduce que valida que a saída está classificada globalmente

    Ele cria um mapa por arquivo no diretório de saída, e cada mapa garante que cada chave seja menor ou igual à anterior. A função de mapa gera registros da primeira e da última chave de cada arquivo. A função reduce garante que a primeira chave do arquivo i seja maior do que a última chave do arquivo i-1. Quaisquer problemas são reportados no final da fase de redução, com as chaves que estão fora de ordem.

Use as seguintes etapas para gerar dados, classificar e validar a saída:

  1. Gere 10 GB de dados, que são armazenados no armazenamento padrão do cluster HDInsight em /example/data/10GB-sort-input:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
    

    O -Dmapred.map.tasks informa ao Hadoop quantas tarefas de mapa usar para esse trabalho. Os dois parâmetros finais instruem o trabalho a criar 10 GB de dados e armazená-los em /example/data/10GB-sort-input.

  2. Use o seguinte comando para classificar os dados:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
    

    O -Dmapred.reduce.tasks informa ao Hadoop quantas tarefas de redução devem ser usadas para o trabalho. Os dois parâmetros finais são apenas os locais de entrada e saída para os dados.

  3. Use o seguinte para validar os dados gerados pela classificação:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
    

Próximos passos

Neste artigo, você aprendeu como executar os exemplos incluídos nos clusters HDInsight baseados em Linux. Para obter tutoriais sobre como usar o Pig, o Hive e o MapReduce com o HDInsight, consulte os seguintes tópicos: