Como instalar o Hadoop?


26

Estou tentando instalar o Hadoop na versão Ubuntu 12.04. Seguindo as instruções de http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/ , instalei java-6-openjdkno Ubuntu software-center. Tenho posto java_homeem .bashrc. Também definido java_homeno Hadoop conf/env.sh. Ao formatar o namenode, estou recebendo o seguinte erro:

usr/lib/jvm/java-6-openjdk/bin/java no such file or directory.

Obrigado. Mas é um sistema operacional de 64 bits.


1
Por que existe uma recompensa quando o usuário encontra a solução? Que tipo de resposta é esperada?
verde

1
@ green7 A intenção é encontrar uma resposta que, na verdade, seja marcada como aceita, seja altamente detalhada e afins. Como não parece haver um, entendo Jorge adicionando a recompensa.
Thomas Ward

@TheLordofTime A resposta detalhada deve conter no máximo 5 linhas, pois a pergunta é muito localizada. E se uma resposta contendo as instruções de instalação do Hadoop for esperada, ela será redundante, pois o link mencionado na pergunta explica maravilhosamente. Além disso, como a resposta, com mais votos, foi postada pelo próprio solicitante, é muito improvável que ele aceite qualquer outra resposta.
verde

@ green7 se a pergunta for muito localizada, vote para fechá-la como tal?
Thomas Ward

Respostas:


39

Os guias que segui quando tinha 12.04 foram:

Na verdade, eu era contra o MyLearning, porque a primeira coisa que recomendou foi o Oracle Java 7 em vez do OpenJDK 7, mas tive alguns problemas com o OpenJDK 7 ao tentar fazer isso, então tive que ir com o Oracle.

O guia é mais direto e aqui está:

  1. Instale Java

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Criar usuário do Hadoop

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    Onde hduser é o usuário do Hadoop que você deseja ter.

  3. Configurando SSH

    su - hduser   
    ssh-keygen -t rsa -P ""
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    

    Para ter certeza de que a instalação do SSH foi bem, você pode abrir um novo terminal e tentar criar uma sessão ssh usando hdusero seguinte comando:

    ssh localhost
    

    reinstale o ssh se o host local não se conectar (pode ser necessário adicionar hduserao sudo como na etapa abaixo)

    sudo apt-get install openssh-server
    
  4. Editar sudoers

    sudo visudo
    
  5. Adicione no final a linha para adicionar hduser aos sudoers

    hduser ALL=(ALL:ALL) ALL
    

    Para salvar, pressione CTRL+ X, digite Ye pressioneENTER

  6. Desativar IPv6

    sudo gedit /etc/sysctl.conf
    

    ou

    sudo nano /etc/sysctl.conf
    

    Copie as seguintes linhas no final do arquivo:

    #disable ipv6  
    net.ipv6.conf.all.disable_ipv6 = 1  
    net.ipv6.conf.default.disable_ipv6 = 1   
    net.ipv6.conf.lo.disable_ipv6 = 1  
    

    Se você tiver um problema dizendo a você, não tem permissões, basta executar o comando anterior com a conta root (caso o sudo não seja suficiente. Para mim foi)

  7. Agora reinicie.

    Você também pode fazer, sudo sysctl -pmas prefiro reiniciar.

    Após a reinicialização, verifique se o IPv6 está desativado:

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    

    deve dizer 1 . Se diz 0 , você perdeu alguma coisa.

  8. Instalando o Hadoop

    Existem várias maneiras de fazer isso, o que o Guia sugere é fazer o download no site Apache Hadoop e descompactar o arquivo na sua hduserpasta pessoal. Renomeie a pasta extraída para hadoop.

    A outra maneira é usar um PPA que foi testado para 12.04:

    sudo add-apt-repository ppa:hadoop-ubuntu/stable  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install hadoop  
    

    NOTA: O PPA pode funcionar para alguns e para outros não. O que eu tentei foi fazer o download do site oficial porque eu não sabia sobre o PPA.

  9. Atualizar $HOME/.bashrc

    Você precisará atualizar o .bashrcpara hduser(e para cada usuário que você precisa administrar o Hadoop). Para abrir o .bashrcarquivo, você precisará abri-lo como root:

    sudo gedit /home/hduser/.bashrc  
    

    ou

    sudo nano /home/hduser/.bashrc  
    

    Em seguida, você adicionará as seguintes configurações no final do .bashrcarquivo

    # Set Hadoop-related environment variables   
    export HADOOP_HOME=/home/hduser/hadoop  
    
    # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)`
    export JAVA_HOME=/usr/lib/jvm/java-7-oracle  
    

    Agora, se você tiver o OpenJDK7, seria algo como isto:

    export JAVA_HOME=/usr/lib/java-7-openjdk-amd64  
    

    O que deve ser observado aqui é a pasta em que o Java reside com a versão AMD64. Se o acima não funcionar, tente procurar nessa pasta específica ou definir o Java que será usado com:

    sudo update-alternatives --config java  
    

    Agora, para alguns alias úteis:

    # Some convenient aliases and functions for running Hadoop-related commands  
    unalias fs &> /dev/null   
    alias fs="hadoop fs"    
    unalias hls &> /dev/null  
    alias hls="fs -ls"  
    
    # Add Hadoop bin/ directory to PATH  
    export PATH=$PATH:$HADOOP_HOME/bin  
    
  10. Configurando o Hadoop

    A seguir estão os arquivos de configuração que podemos usar para fazer a configuração adequada. Alguns dos arquivos que você usará com o Hadoop são (Mais informações neste site ):

    start-dfs.sh- Inicia os daemons do Hadoop DFS, o namenode e os datanodes. Use isso antes do start-mapred.sh

    stop-dfs.sh - Pára os daemons do Hadoop DFS.

    start-mapred.sh - Inicia o Hadoop Map / Reduce daemons, o jobtracker e tasktrackers.

    stop-mapred.sh - Pára o mapa do Hadoop / reduz os daemons.

    start-all.sh- Inicia todos os daemons do Hadoop, o nó de nome, o tipo de dados, o gerenciador de tarefas e os gerenciadores de tarefas. Descontinuada; use start-dfs.sh e start-mapred.sh

    stop-all.sh- Pára todos os daemons do Hadoop. Descontinuada; use stop-mapred.sh e stop-dfs.sh

    Mas antes de começarmos a usá-los, precisamos modificar vários arquivos na /confpasta.

    hadoop-env.sh

    Procure o arquivo hadoop-env.sh, precisamos atualizar apenas a variável JAVA_HOME neste arquivo:

    sudo gedit /home/hduser/hadoop/conf/hadoop-env.sh
    

    ou

    sudo nano /home/hduser/hadoop/conf/hadoop-env.sh
    

    ou nas versões mais recentes estará em

    sudo nano /etc/hadoop/conf.empty/hadoop-env.sh
    

    ou

    sudo nano /etc/hadoop/hadoop-env.sh
    

    Altere a seguinte linha:

    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    

    Para

    export JAVA_HOME=/usr/lib/jvm/java-7-oracle
    

    Nota: se você receber um Error: JAVA_HOME is not seterro ao iniciar os serviços, esqueceu de descomentar a linha anterior (basta remover #).

    core-site.xml

    Agora precisamos criar um diretório temporário para a estrutura do Hadoop. Se você precisar desse ambiente para teste ou para um protótipo rápido (por exemplo, desenvolva programas hadoop simples para seu teste pessoal ...), sugiro criar esta pasta no /home/hduser/diretório, caso contrário, você deve criar essa pasta em um local compartilhado na pasta compartilhada ( como / usr / local ...), mas você pode enfrentar alguns problemas de segurança. Mas, para superar as exceções que podem ser causadas pela segurança (como java.io.IOException), criei a pasta tmp no espaço do hduser.

    Para criar esta pasta, digite o seguinte comando:

    sudo mkdir /home/hduser/tmp   
    

    Observe que se você quiser criar outro usuário administrador (por exemplo, hduser2 no grupo hadoop), conceda a ele uma permissão de leitura e gravação nesta pasta usando os seguintes comandos:

    sudo chown hduser:hadoop /home/hduser/tmp  
    sudo chmod 755 /home/hduser/tmp  
    

    Agora, podemos abrir hadoop/conf/core-site.xmlpara editar a entrada hadoop.tmp.dir. Podemos abrir o core-site.xml usando o editor de texto:

    sudo gedit /home/hduser/etc/hadoop/core-site.xml  
    

    ou

    nano /home/hduser/etc/hadoop/core-site.xml
    

    Em seguida, adicione as seguintes configurações entre os <configure>elementos xml :

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hduser/tmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>The name of the default file system.  A URI whose
      scheme and authority determine the FileSystem implementation.  The
      uri's scheme determines the config property (fs.SCHEME.impl) naming
      the FileSystem implementation class.  The uri's authority is used to
      determine the host, port, etc. for a filesystem.</description>
    </property>
    

    Agora edite mapred-site.xml

    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:54311</value>
      <description>The host and port that the MapReduce job tracker runs
      at.  If "local", then jobs are run in-process as a single map
      and reduce task.
      </description>
    </property>
    

    Agora edite hdfs-site.xml

    <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>Default block replication.
      The actual number of replications can be specified when the file is created.
      The default is used if replication is not specified in create time.
      </description>
    </property> 
    
  11. Formatando NameNode

    Agora você pode começar a trabalhar no Nó. Primeiro formato:

    ~/hduser/hadoop/bin/hadoop namenode -format
    

    ou

    ./home/hduser/hadoop/bin/hadoop namenode -format
    

    Você deve formatar o NameNode no seu HDFS. Você não deve executar esta etapa quando o sistema estiver em execução. Geralmente isso é feito uma vez na primeira vez da sua instalação.

  12. Iniciando o Hadoop Cluster

    Você precisará navegar para o diretório hadoop / bin e executar o ./start-all.shscript.

    cd ~/hduser/hadoop/bin/  
    start-all.sh  
    

    Se você possui uma versão diferente da mostrada nos guias (que você provavelmente terá se fizer isso com o PPA ou uma versão mais recente), tente da seguinte maneira:

    cd ~/hduser/hadoop/bin/   
    start-dfs.sh  
    start-mapred.sh   
    

    Isso iniciará um Namenode, Datanode, Jobtracker e um Tasktracker em sua máquina.

  13. Verificando se o Hadoop está em execução

    Existe uma boa ferramenta chamada jps. Você pode usá-lo para garantir que todos os serviços estejam ativos. Na sua pasta hadoop bin, digite:

    jps
    

    Ele deve mostrar todos os processos relacionados ao Hadoop.

    NOTA: Como isso foi feito há cerca de 6 meses para mim, se houver alguma peça que não funcione, entre em contato.

Hadoop usando Juju (um encanto de Juju para Hadoop)

Retirado do Charming Hadoop

Assumirei que o seguinte já está configurado:

  • Você tem um servidor com Juju já definido
  • Você tem acesso ao servidor (local ou remotamente)
  • Você tem o Juju configurado e pronto para começar a adicionar encantos
  • Você está usando o 12.04 (Isso porque eu testei tudo isso com o 12.04)
  • Você já configurou ~/.juju/environments.yamlcom as informações sobre o servidor que usará, incluindo a origem do PPA.

Agora, siga estas etapas para executar um serviço Hadoop:

  1. Inicialize o ambiente para o Hadoop

    juju bootstrap
    

    Aguarde até terminar e verifique se está se conectando corretamente:

    juju status
    
  2. Implantar o Hadoop (mestre e escravo)

    juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master   
    
    juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
    
  3. Criar relações

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Expor o Hadoop (Como você já implementou e criou relações, o serviço deve estar em execução)

    juju expose hadoop-master
    

    E verifique o status para ver se está funcionando corretamente:

    juju status hadoop-master
    

Até agora você tem um Hadoop em execução. Há muitas outras coisas que você pode fazer que podem ser encontradas no link fornecido ou no encanto oficial de Juju para Hadoop

Para os JuJu Charms atualizados (configurações, guia passo a passo e muito mais), você pode visitar: JuJu Charms e criar seu próprio ambiente JuJu e ver como cada arquivo é configurado e como cada serviço se conecta.



hduser (ALL)=(ALL:ALL) ALL lança erro de sintaxe ...
tutuca

tente com hduser ALL=(ALL:ALL) ALL, remover o primeiro par de suportes
ssoto

1
@ssoto acabou de verificar e sim. Talvez eles tenham mudado nas últimas versões.
Luis Alvarado

1
.bachrc- espere até Johann Sebastian ouvir isso. Oh, espere, ele não pode ... porque ele é surdo. :-D
David Foerster

6

Instalei o Hadoop com êxito definindo o caminho de JAVA_HOMEcomo usr/lib/jvm/java-6-openjdk-amd64.


Você pode ser um pouco mais descritivo?
Panther

3

Derivado de @Luis Alvarado resposta , aqui é a minha versão para o Ubuntu 14.04 e Hadoop 2.5.1

Em resumo

  1. Instale Java
  2. Prepare um usuário executivo para o Hadoophduser
  3. Mudar para a hduserpartir de agora
  4. Permitir o hdusercontrole remoto via ssh com menos frases
  5. Desativar IPv6
  6. Baixe e configure o pacote Hadoop
  7. Prepare o caminho do sistema $ HADOOP_HOME e $ JAVA_HOME
  8. Configurar os serviços do Hadoop
  9. Iniciar os serviços do Hadoop

Feito. Boa sorte!

Etapas detalhadas

Instale Java

Baixar e instalar

$ sudo add-apt-repository ppa:webupd8team/java    
$ sudo apt-get update && sudo apt-get upgrade    
$ sudo apt-get install oracle-java7-installer

Certifique-se de ter o Java7 instalado

$ which java
$ ls -l /usr/bin/java
$ ls -l /etc/alternatives/java

deveríamos ter javaapontado para/usr/lib/jvm/java-7-oracle/jre/bin/java

Prepare um usuário executivo para o Hadoophduser

Criar usuário hduserno grupohadoop

$ sudo addgroup hadoop  
$ sudo adduser --ingroup hadoop hduser

Conceda hdusero privilégio sudo

Editar sudo

$ sudo visudo

Adicione ao final esta linha

hduser ALL=(ALL:ALL) ALL

Mudar para a hduserpartir de agora

$ su - hduser

Permitir o hdusercontrole remoto via ssh com menos frases

Instalar o openssh

$ sudo apt-get install openssh-server

Gere chave pública / privada RSA para conexão SSH; a senha está vazia comoparameter -P ""

$ ssh-keygen -t rsa -P ""
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

Certifique-se de hduserpoder ssh remoto localmente sem uma senha

$ ssh localhost

Desativar IPv6

Edite o arquivo de configuração

$ sudo nano /etc/sysctl.conf

Copiar para o final

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1   
net.ipv6.conf.lo.disable_ipv6 = 1

Verifique se o IPv6 está desativado por uma reinicialização ou chamada

$ sudo sysctl -p 

Então ligue

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

Deve dizer 1, o que significa OK ^^

Baixe e configure o pacote Hadoop

Faça o download dos pacotes do Hadoop 2.5.1 no site Apache Hadoop

A URL direta para este pacote é este link

http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz

Então, vamos fazer o download para hdusera pasta inicial, extraí-la e renomeá-la parahadoop

$ wget http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz
$ tar -xvzf hadoop-2.5.1.tar.gz
$ mv hadoop-2.5.1 hadoop

Verifique se o Hadoop está armazenado em hdusercasa

$ ls /home/hduser/hadoop

Prepare o caminho do sistema $ HADOOP_HOME e $ JAVA_HOME

Edite hdusero arquivo .bashrc

$ nano .bashrc

Coloque os valores finais para $HADOOP_HOMEe$JAVA_HOME

# Set Hadoop-related environment variables   
export HADOOP_HOME=/home/hduser/hadoop  

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

Adicione as binarypastas do Hadoop ao sistema$PATH

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

Abra um novo terminal, efetue login como hdusere verifique se você possui $ HADOOP_HOME com os comandos disponíveis

$ echo $HADOOP_HOME
$ which start-all.sh
$ which start-dfs.sh
$ which start-yarn.sh

Deveríamos ver o caminho completo desses nomes.

Configurar os serviços do Hadoop

Cada componente no Hadoop é configurado usando um arquivo XML.

  • Propriedades comuns estão no core-site.xml

  • As propriedades do HDFS estão em hdfs-site.xml

  • As propriedades do MapReduce vão para mapred-site.xml

insira a descrição da imagem aqui

Esses arquivos estão todos localizados na pasta $ HADOOP_HOME / etc / hadoop

Defina novamente JAVA_HOME hadoop-env.sheditando a linha

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Defina o Hadoop temp foldere o file systemnome em core-site.xml em

<configuration>
  ...
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hduser/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>The name of the default file system.  A URI whose
    scheme and authority determine the FileSystem implementation.  The
    uri's scheme determines the config property (fs.SCHEME.impl) naming
    the FileSystem implementation class.  The uri's authority is used to
    determine the host, port, etc. for a filesystem.</description>
  </property>
  ...
</configuration>

Precisamos preparar isso temp foldercomo configurado em/home/hduser/tmp

$ cd /home/hduser
$ mkdir tmp
$ chown hduser:hadoop tmp
$ chmod 755 tmp

Definir file systemé block replicationem hdfs-site.xml

<configuration>
  ...
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>Default block replication.
    The actual number of replications can be specified when the file is created.
    The default is used if replication is not specified in create time.
    </description>
  </property>
  ...
</configuration>

Definir map-reduce jobem mapred-site.xml

<configuration>
  ...
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:54311</value>
    <description>The host and port that the MapReduce job tracker runs
    at.  If "local", then jobs are run in-process as a single map
    and reduce task.
    </description>
  </property>
  ...
</configuration>

Formato name node

$ hdfs namenode -format

Iniciar serviço Hadoop

Ligar

$ start-dfs.sh && start-yarn.sh

esses dois comandos estão localizados em $ HADOOP_HOME / sbin, que adicionamos ao sistema $ PATH antes.

Verifique se os serviços do Hadoop foram iniciados corretamente

$ jps

nós deveríamos ver

insira a descrição da imagem aqui


1
Muito bom guia a seguir. Há um pequeno erro: mapred-site.xmlnão existe no começo. Deve ser criado porcp mapred-site.xml.template mapred-site.xml
Raptor

1

Para poder instalar sun-javacom o apt-getcomando, você precisa adicionar uma linha a um arquivo chamado sources.list. Este arquivo pode ser encontrado em /etc/apt/sources.list.

Abra o arquivo usando este comando:

sudo nano /etc/apt/sources.list

Então, no final desse arquivo, copie / cole a linha:

deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

Agora pressione Ctrl+ Xpara sair e ypara salvar.


Agora digite o comando:

sudo apt-get update 

E quando isso é feito, você pode executar com êxito o comando:

sudo apt-get install sun-java6-jdk

0

Para um tutorial mais atualizado (não tenho certeza das diferenças), veja os tutoriais em vídeo dos screencasts do hadoop . Eles fornecem vídeo e os comandos reais para instalar embaixo. Além disso, se você enviar um e-mail ao escritor, ele ficará muito feliz em responder e ajudá-lo se você ficar preso em alguma coisa.

Essas instruções são muito parecidas com as que o @Luis respondeu.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.