Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Saiba como executar os exemplos do MapReduce incluídos no Apache Hadoop no HDInsight.
Pré-requisitos
Um cluster Apache Hadoop em HDInsight. Consulte Introdução ao HDInsight no Linux.
Um cliente SSH. Para obter mais informações, veja Ligar ao HDInsight (Apache Hadoop) através de SSH.
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
Conecte-se ao HDInsight usando SSH. Substitua
CLUSTERpelo nome do cluster e digite o seguinte comando:ssh sshuser@CLUSTER-ssh.azurehdinsight.netNa sessão SSH, use o seguinte comando para listar os exemplos:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jarEste comando gera a lista de exemplos da seção anterior deste documento.
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 wordcountVocê 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.
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/davinciwordcountA 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/twowordcountcontaria palavras em davinci.txt e ulysses.txt.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 1Cada 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
isão todos menores do que aqueles de reducei+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:
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-inputO
-Dmapred.map.tasksinforma 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.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-outputO
-Dmapred.reduce.tasksinforma 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.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: