Este é um programa Java para criar um índice invertido de palavras que ocorrem em um grande conjunto de documentos extraídos das páginas da Web usando o Hadoop MapReduce e o Google DataProc.
Como nosso conjunto de dados, estamos usando um subconjunto de 74 arquivos de um total de 408 arquivos (texto extraído de tags HTML) derivado do projeto Stanford Webbase que está disponível aqui. Foi obtido de um rastreamento da web realizado em fevereiro de 2007. É uma das maiores coleções, totalizando mais de 100 milhões de páginas da Web de mais de 50.000 sites. Esta versão já foi limpa.
Neste projeto, configuramos um amostra de cluster Hadoop usando o modo local (independente) e depois implementamos o projeto real no modo totalmente distribuído no Google DataProc no conjunto de dados real.
Precisamos configurar o projeto no GNU/Linux, pois é a plataforma de desenvolvimento e produção suportada para o Hadoop. Para obter uma distribuição do Hadoop, faça o download de um lançamento estável recente de um dos espelhos do Apache Download. Observe que este projeto foi implantado e testado usando hadoop-3.1.1 . Desscala a distribuição do Hadoop baixada. Na pasta de distribuição, edite o arquivo etc/hadoop/hadoop-env.sh para definir parâmetros variáveis do ambiente da seguinte forma:
# add these line to the hadoop-env.sh or set them in terminal
export JAVA_HOME=/usr/java/latest
export PATH= ${JAVA_HOME} /bin: ${PATH}
export HADOOP_CLASSPATH= ${JAVA_HOME} /lib/tools.jarEm seguida, tente o seguinte comando:
$ bin/hadoopIsso deve exibir a documentação de uso para o script Hadoop. Agora você está pronto para iniciar seu cluster Hadoop no modo independente.
Este trabalho simples do Hadoop recebe dois arquivos de texto da pasta "entrada" como os argumentos do mapeador.
# file01
5722018411 Hello World Bye World # file02
6722018415 Hello Hadoop Goodbye HadoopE ao enviar um emprego no Hadoop e aplicar a etapa de redução, gera um índice invertido como abaixo:
bye 5722018411:1
goodbye 6722018415:1
hadoop 6722018415:2
hello 5722018411:1 6722018415:1
world 5722018411:2 Para enviar um emprego no Hadoop, a implementação do MadReduce deve ser embalada como um arquivo jar . Para isso, copie o arquivo InvertedIndex.java deste projeto para a pasta raiz de distribuição do Hadoop e, enquanto você ainda estiver lá, execute os seguintes comandos para compilar InvertedIndex.java e criar um arquivo jar .
$ bin/hadoop com.sun.tools.javac.Main InvertedIndex.java
$ jar cf invertedindex.jar InvertedIndex * .class Copie input/file01 e input/file02 deste projeto e coloque -os dentro da pasta input da pasta Distrubution Hadoop. Enquanto você ainda estiver lá, execute o seguinte comando para enviar o trabalho, obter os arquivos de entrada da pasta input , gerar o índice invertido e armazenar sua saída na pasta output :
$ bin/hadoop jar invertedindex.jar InvertedIndex input outputE finalmente para ver a saída, execute o comando abaixo:
$ bin/hadoop dfs -cat output/part-r-00000 Nesta seção, criamos um cluster com 3 nós de trabalhador no Google DataProc e executamos o trabalho invertedindex.jar no conjunto de dados real.
Primeiro, precisamos de uma conta na plataforma do Google Cloud. Você pode se inscrever para uma avaliação com créditos gratuitos de US $ 300 se você ainda não tiver um.
No Google Cloud Console, crie um novo projeto ou selecione um existente. Para este exercício, usaremos o DataProc. Usando o DATAPROC, podemos criar rapidamente um cluster de instâncias de computação executando o Hadoop. A alternativa ao DATAPROC seria configurar individualmente cada nó de computação, instalar o Hadoop, configurar HDFs, configurar o nó mestre, etc. O DATAPROC automatiza esse processo cansativo para nós.
No Google Cloud Consol, selecione DataProc na lista de navegação à esquerda. Se for a primeira vez que você estiver usando o DataPROC, pode ser necessário ativar primeiro a API DataProc. Clicar em 'Criar Cluster' o levará à seção Configuração do cluster. Dê qualquer nome único ao seu cluster e selecione a zona desejada. Você precisa criar um mestre e 3 nós de trabalhadores. Selecione os processadores de configuração padrão (memória N1-Standard-4 4VCPU 15 GB) para mestre e cada membro e reduza o armazenamento para armazenamento em disco rígido de 32 GB. Altere o número de nós do trabalhador para 3. Deixe tudo o mais padrão e clique em 'Criar'.
Agora que o cluster está configurado, teremos que configurá -lo um pouco antes de podermos executar empregos nele. Selecione o cluster que você acabou de criar na lista de clusters na seção Cloud DataProc em seu console. Vá para a guia Instâncias da VM e clique no botão SSH ao lado da instância com a função mestre.
Clicar no botão SSH levará você a uma interface da linha de comando (CLI) como um Xterm ou terminal. Todos os comandos nas etapas a seguir devem ser inseridas na CLI. Não existe um diretório doméstico no HDFS para o usuário atual que teremos que configurar isso antes de prosseguir. (Para descobrir seu nome de usuário, execute whoami )
$ hadoop fs -mkdir -p /user/ < your username here > JAVA_HOME já foi configurado e não precisamos configurá -lo novamente.
Observe que esta etapa deve ser feita sempre que você abrir um novo terminal SSH. Para eliminar esta etapa, você também pode configurar este JAVA_HOME , PATH e HADOOP_CLASSPATH no etc/hadoop/hadoop-env.sh .
$ export PATH= ${JAVA_HOME} /bin: ${PATH}
$ export HADOOP_CLASSPATH= ${JAVA_HOME} /lib/tools.jarAgora execute:
$ hadoop fs -lsSe não houver erro, isso implica que seu cluster foi configurado com sucesso. Se você encontrar um erro, provavelmente será devido a uma variável de ambiente ausente ou diretório inicial do usuário que não está sendo configurado corretamente.
Para garantir que as variáveis do ambiente sejam definidas, execute o comando env .
Nota : Desative o faturamento do cluster quando você não o estiver usando. Deixá -lo em execução custará créditos extras.
Faça o download do conjunto de dados deste link e descompacte o conteúdo. Você encontrará duas pastas dentro de 'Development' e 'Full Data'. Os dados de 'desenvolvimento' podem ser usados para fins de desenvolvimento e teste.
Clique em 'DataProc' no menu de navegação esquerda. Em seguida, localize o endereço do balde de estadiamento de armazenamento do Google Cloud padrão para o seu cluster.
Vá para a seção de armazenamento na barra de navegação esquerda e selecione o balde padrão do seu cluster na lista de baldes. Clique no botão Upload Folder e faça o upload das pastas devdata e fulldata individualmente.
Agora estamos prontos para enviar um trabalho do Hadoop para executar nossa implementação do MapReduce nos dados reais. Use o comando ssh ou nano / vi para copiar ou criar InvertedIndex.java no cluster mestre.
Execute o seguinte comando para criar o arquivo jar :
$ hadoop com.sun.tools.javac.Main InvertedIndex.java
$ jar cf invertedindex.jar InvertedIndex * .classAgora você tem um arquivo jar para o seu trabalho. Você precisa colocar esse arquivo JAR no balde de nuvem padrão do seu cluster. Basta criar uma pasta chamada jar no seu balde e carregá -lo para essa pasta. Se você criou seu arquivo JAR no nó principal do cluster, use os seguintes comandos para copiá -lo para a pasta JAR.
$ hadoop fs -copyFromLocal ./invertedindex.jar
$ hadoop fs -cp ./invertedindex.jar gs://dataproc-69070.../JAR O gs://dataproc-69070... A parte é o balde padrão do seu cluster. Ele precisa ser precendido pelo GS: // para dizer ao ambiente Hadoop que é um balde e não um local regular no sistema de arquivos.
Vá para a seção 'Jobs' na barra de navegação esquerda da página DataProc e clique em 'Enviar trabalho'. Preencha os parâmetros do trabalho da seguinte forma:
gs:///dataproc-69070.../JAR/invertedindex.jar .gs:///dataproc-69070.../fulldata .gs:///dataproc-69070.../fulloutput . A pasta é criada durante a execução. Você receberá um erro se der o nome de uma pasta existente.Agora envie o trabalho. Você pode ver o log enquanto estiver em execução.
NOTA : Se você encontrar uma Java.lang.Interrupted Exception poderá ignorá -lo com segurança. Seu trabalho ainda será executado.
Os arquivos de saída serão armazenados na pasta de saída no balde. Se você abrir esta pasta, notará que o índice invertido está em vários segmentos. (Exclua o arquivo _success na pasta antes da Mergin todos os arquivos de saída). Para mesclar os arquivos e criar uma saída de texto final, execute os seguintes comandos:
$ hadoop fs -getmerge gs://dataproc-69070.../fulloutput ./output.txt
$ hadoop fs -copyFromLocal ./output.txt
$ hadoop fs -cp ./output.txt gs://dataproc-69070.../output.txt Agora você criou com sucesso um índice invertido de todo o conjunto de dados. Você pode usar grep para ver as entradas de índice para qualquer palavra ácida:
$ grep -w ' ^peace ' output.txt Se você deseja recipilar e enviar um novo trabalho novamente, poderá remover os arquivos .jar , .class , .java e hadoop usando o comando abaixo de acordo.
$ hadoop fs -rm ./wordcount.jar ./output.txt WordCount * .class
$ hadoop fs -rm gs://dataproc-69070.../JAR/wordcount.jar ; gs://dataproc-69070.../output.txt
$ hadoop fs -rm gs://dataproc-69070.../fulloutput/ *
$ hadoop fs -rmdir gs://dataproc-69070.../fulloutput
Este trabalho é licenciado sob uma licença internacional Creative Commons Attribution 4.0.