Hadoop - Configurazione dell'ambiente

Hadoop è supportato dalla piattaforma GNU / Linux e dai suoi gusti. Pertanto, dobbiamo installare un sistema operativo Linux per configurare l'ambiente Hadoop. Nel caso in cui tu abbia un sistema operativo diverso da Linux, puoi installare un software Virtualbox al suo interno e avere Linux all'interno di Virtualbox.

Configurazione preinstallazione

Prima di installare Hadoop nell'ambiente Linux, è necessario configurare Linux utilizzando ssh(Secure Shell). Seguire i passaggi indicati di seguito per configurare l'ambiente Linux.

Creazione di un utente

All'inizio, si consiglia di creare un utente separato per Hadoop per isolare il file system Hadoop dal file system Unix. Seguire i passaggi indicati di seguito per creare un utente:

  • Aprire la radice utilizzando il comando "su".

  • Creare un utente dall'account root utilizzando il comando "useradd username".

  • Ora puoi aprire un account utente esistente utilizzando il comando "su username".

Apri il terminale Linux e digita i seguenti comandi per creare un utente.

$ su 
   password: 
# useradd hadoop 
# passwd hadoop 
   New passwd: 
   Retype new passwd

Configurazione SSH e generazione di chiavi

L'installazione di SSH è necessaria per eseguire diverse operazioni su un cluster come l'avvio, l'arresto, le operazioni della shell del demone distribuito. Per autenticare diversi utenti di Hadoop, è necessario fornire una coppia di chiavi pubblica / privata per un utente Hadoop e condividerla con utenti diversi.

I seguenti comandi vengono utilizzati per generare una coppia di valori chiave utilizzando SSH. Copia le chiavi pubbliche da id_rsa.pub in authorized_keys e fornisci al proprietario i permessi di lettura e scrittura rispettivamente per il file authorized_keys.

$ ssh-keygen -t rsa 
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
$ chmod 0600 ~/.ssh/authorized_keys

Installazione di Java

Java è il prerequisito principale per Hadoop. Prima di tutto, dovresti verificare l'esistenza di java nel tuo sistema usando il comando "java -version". La sintassi del comando della versione Java è fornita di seguito.

$ java -version

Se tutto è in ordine, ti darà il seguente output.

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 java non è installato nel tuo sistema, segui i passaggi indicati di seguito per l'installazione di java.

Passo 1

Scarica java (JDK <ultima versione> - X64.tar.gz) visitando il seguente link www.oracle.com

Poi jdk-7u71-linux-x64.tar.gz verrà scaricato nel tuo sistema.

Passo 2

Generalmente troverai il file java scaricato nella cartella Download. Verificalo ed estrai il filejdk-7u71-linux-x64.gz file utilizzando i seguenti comandi.

$ 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

Passaggio 3

Per rendere java disponibile a tutti gli utenti, è necessario spostarlo nella posizione "/ usr / local /". Apri root e digita i seguenti comandi.

$ su 
password: 
# mv jdk1.7.0_71 /usr/local/ 
# exit

Passaggio 4

Per l'allestimento PATH e JAVA_HOME variabili, aggiungi i seguenti comandi a ~/.bashrc file.

export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin

Ora applica tutte le modifiche al sistema in esecuzione corrente.

$ source ~/.bashrc

Passaggio 5

Utilizzare i seguenti comandi per configurare le alternative 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

Ora verifica il comando java -version dal terminale come spiegato sopra.

Download di Hadoop

Scarica ed estrai Hadoop 2.4.1 dalla fondazione software Apache utilizzando i seguenti comandi.

$ 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

Modalità operative di Hadoop

Dopo aver scaricato Hadoop, puoi utilizzare il tuo cluster Hadoop in una delle tre modalità supportate:

  • Local/Standalone Mode - Dopo aver scaricato Hadoop nel tuo sistema, per impostazione predefinita, è configurato in modalità standalone e può essere eseguito come un singolo processo java.

  • Pseudo Distributed Mode- È una simulazione distribuita su singola macchina. Ogni demone Hadoop come hdfs, filato, MapReduce ecc. Verrà eseguito come un processo Java separato. Questa modalità è utile per lo sviluppo.

  • Fully Distributed Mode- Questa modalità è completamente distribuita con un minimo di due o più macchine come cluster. Ci imbatteremo in questa modalità in dettaglio nei prossimi capitoli.

Installazione di Hadoop in modalità standalone

Qui discuteremo l'installazione di Hadoop 2.4.1 in modalità standalone.

Non ci sono daemon in esecuzione e tutto viene eseguito in un'unica JVM. La modalità standalone è adatta per eseguire programmi MapReduce durante lo sviluppo, poiché è facile testarli ed eseguirne il debug.

Configurazione di Hadoop

Puoi impostare le variabili d'ambiente Hadoop aggiungendo i seguenti comandi a ~/.bashrc file.

export HADOOP_HOME=/usr/local/hadoop

Prima di procedere oltre, devi assicurarti che Hadoop funzioni correttamente. Basta emettere il seguente comando:

$ hadoop version

Se tutto va bene con la tua configurazione, dovresti vedere il seguente risultato:

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

Significa che la configurazione della modalità standalone di Hadoop funziona correttamente. Per impostazione predefinita, Hadoop è configurato per essere eseguito in modalità non distribuita su una singola macchina.

Esempio

Controlliamo un semplice esempio di Hadoop. L'installazione di Hadoop fornisce il seguente file jar MapReduce di esempio, che fornisce le funzionalità di base di MapReduce e può essere utilizzato per il calcolo, come il valore Pi, il conteggio delle parole in un determinato elenco di file, ecc.

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar

Abbiamo una directory di input in cui inseriremo alcuni file e il nostro requisito è di contare il numero totale di parole in quei file. Per calcolare il numero totale di parole, non è necessario scrivere il nostro MapReduce, a condizione che il file .jar contenga l'implementazione per il conteggio delle parole. Puoi provare altri esempi usando lo stesso file .jar; è sufficiente emettere i seguenti comandi per controllare i programmi funzionali MapReduce supportati dal file hadoop-mapreduce-examples-2.2.0.jar.

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar

Passo 1

Crea file di contenuto temporanei nella directory di input. Puoi creare questa directory di input ovunque desideri lavorare.

$ mkdir input 
$ cp $HADOOP_HOME/*.txt input 
$ ls -l input

Fornirà i seguenti file nella directory di input:

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

Questi file sono stati copiati dalla home directory di installazione di Hadoop. Per il tuo esperimento, puoi avere set di file diversi e di grandi dimensioni.

Passo 2

Iniziamo il processo Hadoop per contare il numero totale di parole in tutti i file disponibili nella directory di input, come segue:

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar  wordcount input output

Passaggio 3

Step-2 eseguirà l'elaborazione richiesta e salverà l'output nel file output / part-r00000, che puoi controllare usando -

$cat output/*

Elencherà tutte le parole insieme ai loro conteggi totali disponibili in tutti i file disponibili nella directory di input.

"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 
.............

Installazione di Hadoop in modalità pseudo distribuita

Seguire i passaggi indicati di seguito per installare Hadoop 2.4.1 in modalità pseudo distribuita.

Passaggio 1: configurazione di Hadoop

Puoi impostare le variabili d'ambiente Hadoop aggiungendo i seguenti comandi a ~/.bashrc file.

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

Ora applica tutte le modifiche al sistema in esecuzione corrente.

$ source ~/.bashrc

Passaggio 2: configurazione di Hadoop

Puoi trovare tutti i file di configurazione di Hadoop nella posizione "$ HADOOP_HOME / etc / hadoop". È necessario apportare modifiche a tali file di configurazione in base alla propria infrastruttura Hadoop.

$ cd $HADOOP_HOME/etc/hadoop

Per sviluppare programmi Hadoop in java, devi reimpostare le variabili d'ambiente java in hadoop-env.sh file sostituendo JAVA_HOME value con la posizione di java nel tuo sistema.

export JAVA_HOME=/usr/local/jdk1.7.0_71

Di seguito è riportato l'elenco dei file che devi modificare per configurare Hadoop.

core-site.xml

Il core-site.xml file contiene informazioni come il numero di porta utilizzato per l'istanza Hadoop, la memoria allocata per il file system, il limite di memoria per l'archiviazione dei dati e la dimensione dei buffer di lettura / scrittura.

Apri core-site.xml e aggiungi le seguenti proprietà tra i tag <configuration>, </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value> 
   </property>
</configuration>

hdfs-site.xml

Il hdfs-site.xmlfile contiene informazioni come il valore dei dati di replica, il percorso namenode e i percorsi datanode dei file system locali. Significa il luogo in cui si desidera archiviare l'infrastruttura Hadoop.

Assumiamo i seguenti dati.

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

Apri questo file e aggiungi le seguenti proprietà tra i tag <configuration> </configuration> in questo file.

<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 - Nel file sopra, tutti i valori delle proprietà sono definiti dall'utente ed è possibile apportare modifiche in base alla propria infrastruttura Hadoop.

yarn-site.xml

Questo file viene utilizzato per configurare il filato in Hadoop. Apri il file filato-site.xml e aggiungi le seguenti proprietà tra i tag <configuration>, </configuration> in questo file.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value> 
   </property>
</configuration>

mapred-site.xml

Questo file viene utilizzato per specificare quale framework MapReduce stiamo utilizzando. Per impostazione predefinita, Hadoop contiene un modello di filato-site.xml. Prima di tutto, è necessario copiare il file damapred-site.xml.template per mapred-site.xml file utilizzando il seguente comando.

$ cp mapred-site.xml.template mapred-site.xml

Aperto mapred-site.xml file e aggiungi le seguenti proprietà tra i tag <configuration>, </configuration> in questo file.

<configuration>
   <property> 
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Verifica dell'installazione di Hadoop

I seguenti passaggi vengono utilizzati per verificare l'installazione di Hadoop.

Passaggio 1: configurazione del nodo del nome

Impostare il namenode utilizzando il comando "hdfs namenode -format" come segue.

$ cd ~ 
$ hdfs namenode -format

Il risultato atteso è il seguente.

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 
************************************************************/

Passaggio 2: verifica di Hadoop dfs

Il seguente comando viene utilizzato per avviare dfs. L'esecuzione di questo comando avvierà il tuo file system Hadoop.

$ start-dfs.sh

L'output previsto è il seguente:

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]

Passaggio 3: verifica dello script del filato

Il seguente comando viene utilizzato per avviare lo script del filato. L'esecuzione di questo comando avvierà i tuoi demoni filati.

$ start-yarn.sh

L'output previsto come segue:

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

Passaggio 4: accesso a Hadoop sul browser

Il numero di porta predefinito per accedere a Hadoop è 50070. Utilizza il seguente URL per ottenere i servizi Hadoop sul browser.

http://localhost:50070/

Passaggio 5: verifica tutte le applicazioni per il cluster

Il numero di porta predefinito per accedere a tutte le applicazioni del cluster è 8088. Utilizzare il seguente URL per visitare questo servizio.

http://localhost:8088/