Hadoop - configuração do ambiente
O Hadoop é compatível com a plataforma GNU / Linux e seus sabores. Portanto, temos que instalar um sistema operacional Linux para configurar o ambiente Hadoop. Caso você tenha um SO diferente do Linux, você pode instalar um software Virtualbox nele e ter o Linux dentro do Virtualbox.
Configuração de pré-instalação
Antes de instalar o Hadoop no ambiente Linux, precisamos configurar o Linux usando ssh(Capsula segura). Siga as etapas fornecidas abaixo para configurar o ambiente Linux.
Criação de um usuário
No início, é recomendado criar um usuário separado para o Hadoop para isolar o sistema de arquivos Hadoop do sistema de arquivos Unix. Siga as etapas abaixo para criar um usuário -
Abra a raiz usando o comando “su”.
Crie um usuário a partir da conta root usando o comando “useradd username”.
Agora você pode abrir uma conta de usuário existente usando o comando “su username”.
Abra o terminal Linux e digite os seguintes comandos para criar um usuário.
$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd
Configuração e geração de chave SSH
A configuração do SSH é necessária para fazer diferentes operações em um cluster, como iniciar, parar e operações de shell daemon distribuído. Para autenticar diferentes usuários do Hadoop, é necessário fornecer um par de chaves pública / privada para um usuário do Hadoop e compartilhá-lo com diferentes usuários.
Os comandos a seguir são usados para gerar um par de valores-chave usando SSH. Copie o formulário de chaves públicas id_rsa.pub para authorized_keys e forneça ao proprietário as permissões de leitura e gravação para o arquivo authorized_keys respectivamente.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
Instalando Java
Java é o principal pré-requisito para o Hadoop. Em primeiro lugar, você deve verificar a existência de java em seu sistema usando o comando “java -version”. A sintaxe do comando da versão java é fornecida abaixo.
$ java -version
Se tudo estiver em ordem, você receberá a seguinte saída.
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
Se o java não estiver instalado em seu sistema, siga as etapas abaixo para instalar o java.
Passo 1
Faça download de java (JDK <versão mais recente> - X64.tar.gz) visitando o seguinte link www.oracle.com
Então jdk-7u71-linux-x64.tar.gz será baixado em seu sistema.
Passo 2
Geralmente, você encontrará o arquivo java baixado na pasta Downloads. Verifique e extraia ojdk-7u71-linux-x64.gz arquivo usando os seguintes comandos.
$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz
etapa 3
Para disponibilizar o java a todos os usuários, você deve movê-lo para o local “/ usr / local /”. Abra o root e digite os seguintes comandos.
$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit
Passo 4
Para configurar PATH e JAVA_HOME variáveis, adicione os seguintes comandos para ~/.bashrc Arquivo.
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
Agora aplique todas as alterações no sistema em execução atual.
$ source ~/.bashrc
Etapa 5
Use os seguintes comandos para configurar alternativas java -
# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2
# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar
Agora verifique o comando java -version do terminal conforme explicado acima.
Baixando Hadoop
Baixe e extraia o Hadoop 2.4.1 da base do software Apache usando os comandos a seguir.
$ su
password:
# cd /usr/local
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit
Modos de operação Hadoop
Depois de fazer download do Hadoop, você pode operar o cluster do Hadoop em um dos três modos suportados -
Local/Standalone Mode - Depois de baixar o Hadoop em seu sistema, por padrão, ele é configurado em um modo autônomo e pode ser executado como um único processo java.
Pseudo Distributed Mode- É uma simulação distribuída em uma única máquina. Cada daemon Hadoop, como hdfs, yarn, MapReduce etc., será executado como um processo java separado. Este modo é útil para desenvolvimento.
Fully Distributed Mode- Este modo é totalmente distribuído com no mínimo duas ou mais máquinas como um cluster. Veremos esse modo em detalhes nos próximos capítulos.
Instalando o Hadoop no modo autônomo
Aqui vamos discutir a instalação de Hadoop 2.4.1 no modo autônomo.
Não há daemons em execução e tudo é executado em uma única JVM. O modo autônomo é adequado para executar programas MapReduce durante o desenvolvimento, pois é fácil testá-los e depurá-los.
Configurando o Hadoop
Você pode definir variáveis de ambiente Hadoop, anexando os seguintes comandos a ~/.bashrc Arquivo.
export HADOOP_HOME=/usr/local/hadoop
Antes de prosseguir, você precisa se certificar de que o Hadoop está funcionando bem. Basta emitir o seguinte comando -
$ hadoop version
Se tudo estiver bem com sua configuração, você deverá ver o seguinte resultado -
Hadoop 2.4.1
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4
Isso significa que a configuração do modo autônomo do Hadoop está funcionando bem. Por padrão, o Hadoop é configurado para ser executado em um modo não distribuído em uma única máquina.
Exemplo
Vamos verificar um exemplo simples de Hadoop. A instalação do Hadoop oferece o seguinte exemplo de arquivo jar MapReduce, que fornece funcionalidade básica de MapReduce e pode ser usado para calcular, como valor de Pi, contagens de palavras em uma determinada lista de arquivos, etc.
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar
Vamos ter um diretório de entrada onde enviaremos alguns arquivos e nosso requisito é contar o número total de palavras nesses arquivos. Para calcular o número total de palavras, não precisamos escrever nosso MapReduce, desde que o arquivo .jar contenha a implementação para contagem de palavras. Você pode tentar outros exemplos usando o mesmo arquivo .jar; apenas emita os seguintes comandos para verificar os programas funcionais MapReduce suportados pelo arquivo hadoop-mapreduce-examples-2.2.0.jar.
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar
Passo 1
Crie arquivos de conteúdo temporários no diretório de entrada. Você pode criar este diretório de entrada em qualquer lugar onde gostaria de trabalhar.
$ mkdir input
$ cp $HADOOP_HOME/*.txt input
$ ls -l input
Ele fornecerá os seguintes arquivos em seu diretório de entrada -
total 24
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt
-rw-r--r-- 1 root root 101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root 1366 Feb 21 10:14 README.txt
Esses arquivos foram copiados do diretório inicial de instalação do Hadoop. Para sua experiência, você pode ter conjuntos de arquivos diferentes e grandes.
Passo 2
Vamos iniciar o processo Hadoop para contar o número total de palavras em todos os arquivos disponíveis no diretório de entrada, da seguinte maneira -
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar wordcount input output
etapa 3
A etapa 2 fará o processamento necessário e salvará a saída no arquivo output / part-r00000, que você pode verificar usando -
$cat output/*
Ele listará todas as palavras junto com suas contagens totais disponíveis em todos os arquivos disponíveis no diretório de entrada.
"AS 4
"Contribution" 1
"Contributor" 1
"Derivative 1
"Legal 1
"License" 1
"License"); 1
"Licensor" 1
"NOTICE” 1
"Not 1
"Object" 1
"Source” 1
"Work” 1
"You" 1
"Your") 1
"[]" 1
"control" 1
"printed 1
"submitted" 1
(50%) 1
(BIS), 1
(C) 1
(Don't) 1
(ECCN) 1
(INCLUDING 2
(INCLUDING, 2
.............
Instalando o Hadoop no modo pseudo-distribuído
Siga as etapas fornecidas abaixo para instalar o Hadoop 2.4.1 no modo pseudo distribuído.
Etapa 1 - Configurando o Hadoop
Você pode definir variáveis de ambiente Hadoop, anexando os seguintes comandos a ~/.bashrc Arquivo.
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
Agora aplique todas as alterações no sistema em execução atual.
$ source ~/.bashrc
Etapa 2 - Configuração do Hadoop
Você pode encontrar todos os arquivos de configuração do Hadoop no local “$ HADOOP_HOME / etc / hadoop”. É necessário fazer alterações nesses arquivos de configuração de acordo com sua infraestrutura Hadoop.
$ cd $HADOOP_HOME/etc/hadoop
Para desenvolver programas Hadoop em java, você deve redefinir as variáveis de ambiente java em hadoop-env.sh arquivo substituindo JAVA_HOME valor com a localização de java em seu sistema.
export JAVA_HOME=/usr/local/jdk1.7.0_71
A seguir está a lista de arquivos que você deve editar para configurar o Hadoop.
core-site.xml
o core-site.xml arquivo contém informações como o número da porta usado para a instância do Hadoop, memória alocada para o sistema de arquivos, limite de memória para armazenar os dados e tamanho dos buffers de leitura / gravação.
Abra o core-site.xml e adicione as seguintes propriedades entre as tags <configuration>, </configuration>.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
o hdfs-site.xmlarquivo contém informações como o valor dos dados de replicação, caminho do namenode e caminhos do datanode de seus sistemas de arquivos locais. Significa o local onde você deseja armazenar a infraestrutura do Hadoop.
Vamos supor os seguintes dados.
dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
Abra este arquivo e adicione as seguintes propriedades entre as marcas <configuration> </configuration> neste arquivo.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>
</property>
</configuration>
Note - No arquivo acima, todos os valores de propriedade são definidos pelo usuário e você pode fazer alterações de acordo com sua infraestrutura Hadoop.
yarn-site.xml
Este arquivo é usado para configurar o yarn no Hadoop. Abra o arquivo yarn-site.xml e adicione as seguintes propriedades entre as marcas <configuration>, </configuration> neste arquivo.
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
Este arquivo é usado para especificar qual estrutura MapReduce estamos usando. Por padrão, o Hadoop contém um modelo de yarn-site.xml. Em primeiro lugar, é necessário copiar o arquivo demapred-site.xml.template para mapred-site.xml arquivo usando o seguinte comando.
$ cp mapred-site.xml.template mapred-site.xml
Abrir mapred-site.xml arquivo e adicione as seguintes propriedades entre as marcas <configuration>, </configuration> neste arquivo.
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Verificando a instalação do Hadoop
As etapas a seguir são usadas para verificar a instalação do Hadoop.
Etapa 1 - Configuração do Nó de Nome
Configure o namenode usando o comando “hdfs namenode -format” como segue.
$ cd ~
$ hdfs namenode -format
O resultado esperado é o seguinte.
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
Etapa 2 - Verificar Hadoop dfs
O seguinte comando é usado para iniciar o dfs. A execução desse comando iniciará seu sistema de arquivos Hadoop.
$ start-dfs.sh
A saída esperada é a seguinte -
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
Etapa 3 - Verificação do script do Yarn
O seguinte comando é usado para iniciar o script yarn. Executar este comando iniciará seus daemons de yarn.
$ start-yarn.sh
A saída esperada da seguinte forma -
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out
Etapa 4 - Acessando o Hadoop no navegador
O número da porta padrão para acessar o Hadoop é 50070. Use o seguinte url para obter os serviços do Hadoop no navegador.
http://localhost:50070/
Etapa 5 - Verificar todos os aplicativos do cluster
O número da porta padrão para acessar todos os aplicativos do cluster é 8088. Use o seguinte url para visitar este serviço.
http://localhost:8088/