As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Processamento de dados com streaming
O Hadoop Streaming é um utilitário que acompanha o Hadoop que permite o desenvolvimento de MapReduce executáveis em linguagens diferentes de Java. O Streaming é implementado como um arquivo JAR para que você possa executá-lo a na API do Amazon EMR ou na linha de comando, da mesma forma que executa um arquivo JAR padrão.
Esta seção descreve como usar streaming com o Amazon EMR.
nota
O Apache Hadoop Streaming é uma ferramenta independente. Assim sendo, não descreveremos suas funções e parâmetros aqui. Para obter mais informações sobre o Hadoop Streaming, acesse http://hadoop.apache. org/docs/stable/hadoop-streaming/HadoopStreaming.html
Utilização do utilitário Hadoop Streaming
Esta seção descreve como usar o utilitário Hadoop Streaming.
1 |
Escreva os programas executáveis do mapeador e do reducer na linguagem de programação de sua escolha. Siga as instruções na documentação do Hadoop para escrever seus executáveis de streaming. Os programas devem ler os dados de entrada de uma entrada padrão e escrever os dados de saída em uma saída padrão. Por padrão, cada linha de entrada/saída representa um registro e o primeiro caractere de tabulação em cada linha é usado como um separador entre a chave e o valor. |
2 |
Teste os executáveis localmente e carregue-os para o Amazon S3. |
3 |
Use a interface da linha de comando do Amazon EMR ou o console do Amazon EMR para executar a aplicação. |
Um script de mapeador é executado como um processo separado no cluster. Um executável do reducer transforma a saída de um executável do mapeador em uma saída de dados do fluxo de trabalho.
Os parâmetros input
, output
, mapper
e reducer
são necessários na maioria das aplicações de streaming. A tabela a seguir descreve esses e outros parâmetros opcionais.
Parameter | Descrição | Obrigatório |
---|---|---|
-input |
Local dos dados de entrada no Amazon S3. Tipo: string Padrão: nenhum Restrição: URI. Se não há protocolo especificado, ele usa o sistema de arquivos padrão do cluster. |
Sim |
-output |
Local onde o Amazon EMR carrega os dados processados no Amazon S3. Tipo: string Padrão: nenhum Restrição: URI Padrão: se não há um local especificado, o Amazon EMR carrega os dados no local especificado pela |
Sim |
-mapper |
Nome do executável do mapeador. Tipo: string Padrão: nenhum |
Sim |
-reducer |
Nome do executável do reducer. Tipo: string Padrão: nenhum |
Sim |
-cacheFile |
Um local no Amazon S3 que contém os arquivos que o Hadoop vai copiar para o diretório de trabalho local (com o objetivo principal de melhorar a performance). Tipo: string Padrão: nenhum Restrições: [URI]#[nome do symlink a ser criado no diretório de trabalho] |
Não |
-cacheArchive |
Arquivo JAR a ser extraído e colocado no diretório de trabalho Tipo: string Padrão: nenhum Restrições: [URI]#[nome do diretório do symlink a ser criado no diretório de trabalho] |
Não |
-combiner |
Combina os resultados Tipo: string Padrão: nenhum Restrições: nome da classe Java |
Não |
O código de exemplo a seguir é um executável do mapeador escrito em Python. Esse script faz parte do aplicativo WordCount de amostra.
#!/usr/bin/python import sys def main(argv): line = sys.stdin.readline() try: while line: line = line.rstrip() words = line.split() for word in words: print "LongValueSum:" + word + "\t" + "1" line = sys.stdin.readline() except "end of file": return None if __name__ == "__main__": main(sys.argv)