Tempo di lettura stimato: 9 minuti

Installare il database NoSQL adatto ai Big Data Apache Accumulo su Ubuntu 14.04

Mar 19, 2015 NoSQL , Apache Ubuntu

Introduzione

Apache Accumulo è un database NoSQL distribuito e opensource basato su Google BigTable. Viene utilizzato per eseguire in modo efficiente le operazioni CRUD (Create Read Update Delete) su insiemi di dati estremamente grandi (spesso definiti come Big Data). Accumulo viene preferito rispetto ad altri database distribuiti simili (come HBase o CouchDB) quando un progetto richiede una sicurezza precisa, sotto forma di controllo degli accessi a livello di cella.

Accumulo è costruito sulla base di altri software Apache. Accumulo rappresenta i dati in forma di coppie chiave-valore e memorizza i dati come file su HDFS (Il file system distribuito Hadoop di Apache). Utilizza anche Apache Zookeeper per sincronizzare le impostazioni fra tutti i suoi processi.

In questo tutorial imparerete come:

  • Installare e configurare Apache HDFS e ZooKeeper: Questi sistemi devono essere attivi prima che Accumulo sia avviato
  • Installare e configurare un’istanza indipendente di Accumulo

Prerequisiti

Avrete bisogno di quanto segue:

  • Ubuntu Server 14.04 (preferibilmente a 32 bit)
  • Un utente sudo
  • Almeno 2 GB di spazio di swap

Fase 1 – Installazione e configurazione di JDK 7

Accumulo, HDFS e ZooKeeper sono tutti scritti in Java e hanno bisogno di una JVM (Java Virtual Machine) per essere eseguiti. Cominciamo quindi con l’installazione della JDK.

Aggiornate l’indice della lista dei pacchetti.

sudo apt-get update

Installate OpenJDK 7 utilizzando apt-get .

sudo apt-get install openjdk-7-jdk

Utilizzate nano per modificare il file di ambiente della shell, .bashrc .

nano ~/.bashrc

Aggiungete JAVA_HOME come variabile di ambiente alla fine del file.

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

Nota: Il valore di JAVA_HOME può essere diverso a seconda dell’architettura del server. Ad esempio, su un server a 64 bit, il valore sarà /usr/lib/jvm/java-7-openjdk-amd64 . Potete vedere il percorso esatto guardando il contenuto della directory /usr/lib/jvm/ . Se il percorso è diverso da ciò che viene qui indicato, assicuratevi di fare le modifiche appropriate dove necessario.

Salvate il file ed uscite da nano . Aggiornate le variabili di ambiente della sessione corrente digitando:

. ~/.bashrc

Modificate il file di configurazione della JVM java.security utilizzando nano .

sudo nano $JAVA_HOME/jre/lib/security/java.security

Cercate il parametro securerandom.source e cambiate la linea in modo che sia:

securerandom.source=file:/dev/./urandom

Salvate il file ed uscite da nano . Questa modifica è necessaria per diminuire il tempo di avvio della JVM. Non fare questo cambiamento può portare a tempi di avvio molto lunghi sulla maggior parte dei server virtuali.

Fase 2 – Installazione di SSH

Per gestire i propri demoni, Hadoop ha bisogno di SSH ed rsync. Installateli utilizzando il seguente comando:

sudo apt-get install ssh rsync

Fase 3 – Attivazione della connettivià SSH senza password

Hadoop dovrebbe essere in grado di connettersi al server tramite SSH senza che venga richiesta una password.

Generate una chiave RSA usando ssh-keygen .

ssh-keygen -P ''

Premete INVIO quando richiesto e scegliete i valori di default.

Aggiungete la chiave così generata al file authorized_keys.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

I valori localhost e 0.0.0.0 devono essere aggiunti alla lista degli host conosciuti. Il modo più semplice per farlo è quello di eseguire il comando ssh.

Prima aggiungiamo localhost.

ssh localhost

Vedrete una richiesta simile a questa:

The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42. 
Are you sure you want to continue connecting (yes/no)?

Digitate yes e premete INVIO.

Quando avete completato il login, uscite dalla sessione SSH digitando:

exit

Aggiungiamo ora 0.0.0.0.

ssh 0.0.0.0

Digitate yes e premete INVIO quando richiesto.

Ancora una volta, uscite dalla sessione SSH digitando:

exit

L’installazione di SSH è ora completa.

Fase 4 – Creare una directory di download

In questo tutorial dovrete scaricare un paio di file. Anche se non è proprio necessario, è una buona idea memorizzare tutti i vostri download in una directory separata.

mkdir -p ~/Downloads

Entrate nella directory.

cd ~/Downloads

Fase 5 – Scaricare Apache Hadoop

Al momento della scrittura dell’articolo, l’ultima versione stabile di Hadoop è la 2.6.0. Scaricatela usando wget .

wget "http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.6.0.tar.gz"

Fase 6 – Scaricare Apache Zookeeper

L’ultima versione stabile di ZooKeeper è la 3.4.6. Scaricatela usando wget .

wget "http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz"

Fase 7 – Scaricare Apache Accumulo

L’ultima versione stabile di Accumulo è la 1.6.1. Scaricatela usando wget .

wget "http://www.eu.apache.org/dist/accumulo/1.6.1/accumulo-1.6.1-bin.tar.gz"

Fase 8 – Creare una directory di installazione

Create una directory per memorizzare tutte le installazioni che hanno a che fare con Accumulo.

mkdir -p ~/Installs

Entrate nella directory.

cd ~/Installs

Fase 9 – Installazione e configurazione di Hadoop

Usate il comando tar per estrarre il contenuto di hadoop-2.6.0-src.tar.gz.

tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz

Nota: Se avete installato una versione diversa di uno qualsiasi di questi software, nel nome del file usate la versione appropriata.

Usate nano per aprire hadoop-env.sh.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

Cercate la riga che inizia con export JAVA_HOME e modificatela in:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

Assicuratevi che questo valore sia identico al valore impostato in .bashrc.

Di default, Hadoop genera un sacco di log di debug. Per impedire che si comporti così, cercate la riga che inizia con export HADOOP_OPTS e modificatela in:

export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"

Salvate ed uscite.

Usate nano per aprire core-site.xml.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml

Aggiungete un blocco <property> denominato fs.defaultFS . Il suo valore dovrebbe puntare all’hostname e alla porta del namenode (nel nostro caso è localhost e la porta di default 9000 ). Ignorate i commenti, modificate il file in modo che assomigli a questo:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> 
    <property> 
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value> 
    </property> 
</configuration>

Salvate ed uscite.

Usate nano per aprire hdfs-site.xml .

nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

A questo file devono essere aggiunte le seguenti proprietà:

  • dfs.replication : Questo numero indica le volte in cui un blocco viene replicato da Hadoop. Di default, Hadoop crea 3 repliche per ogni blocco. In questo tutorial, usate il valore 1 , dato che non si sta creando un cluster.
  • dfs.name.dir : Indica una posizione nel file system dove il namenode  può memorizzare la tabella dei nomi. È necessario cambiarla perché di default Hadoop utilizza /tmp. Per memorizzare il nome della tabella usiamo hdfs_storage/name .
  • dfs.data.dir : Indica una posizione nel file system dove il datanode dovrebbe archiviare i blocchi. È necessario cambiarla perché di default Hadoop utilizza /tmp. Per memorizzare i blocchi di dati usiamo hdfs_storage/data.

Ignorate i commenti e, dopo l’aggiunta di queste proprietà, il file dovrebbe essere simile a questo:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> 
    <property> 
        <name>dfs.replication</name>
        <value>1</value>
    </property> 
    <property> 
        <name>dfs.name.dir</name> 
        <value>hdfs_storage/name</value> 
    </property> 
    <property> 
        <name>dfs.data.dir</name> 
        <value>hdfs_storage/data</value> 
    </property> 
</configuration>

Usate nano per creare un nuovo file chiamato mapred-site.xml.

nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml

A questo file aggiungete una proprietà denominata mapred.job.tracker. Questa proprietà contiene l’hostname e la porta su cui viene eseguito il MapReduce job tracker. Per la nostra configurazione usiamo localhost e la porta predefinita 9001.

Nel file aggiungete il seguente contenuto:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> 
    <property> 
        <name>mapred.job.tracker</name> 
        <value>localhost:9001</value> 
    </property> 
</configuration>

Entrate nella directory base di Hadoop (ciò è importante perché Hadoop crea la directory hdfs_storage nella directory corrente).

cd ~/Installs/hadoop-2.6.0/

  Ora possiamo inizializzare il NameNode digitando:

~/Installs/hadoop-2.6.0/bin/hdfs namenode -format

Dovreste vedere delle linee di output.

Successivamente, avviate il NameNode digitando:

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

Dategli un minuto o due affinché parta. Una volta avviato, è possibile utilizzare un browser per visitare http://<tuo-ip>:50070/ e navigare attraverso l’interfaccia web del NameNode.

Hadoop NameNode Interfaccia Web

Risoluzione dei problemi

Se non si è in grado di accedere all’interfaccia Web, controllate che il NameNode sia attivo utilizzando il seguente comando:

jps

L’output dovrebbe contenere i seguenti tre processi insieme al processo Jps:

  • DataNode
  • NameNode
  • SecondaryNameNode

Se NameNode non è presente nell’output, effettuate le seguenti operazioni. Se non vengono eseguite in un blocco, potrebbe essere necessario eseguirle separatamente. I commenti sono compresi nella riga.

cd ~/Installs/hadoop-2.6.0/ ~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Arresta i nodi di Hadoop 
rm -rf hdfs_storage # Cancella i dati del namenode 
rm -rf /tmp/hadoop-* # Cancella le directory temporanee 
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Riformatta il namenode

Riavviate Hadoop usando start-dfs.sh :

~/Installs/hadoop-2.6.0/sbin/start-dfs.sh

Ora si dovrebbe essere in grado di accedere all’interfaccia web.

Fase 10 – Installazione e configurazione di ZooKeeper

Entrate nella directory Installs.

cd ~/Installs

Usate tar per estrarre zookeeper-3.4.6.tar.gz.

tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz

Copiate il file di esempio zoo_sample.cfg a zoo.cfg.

cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg

Ora la configurazione di ZooKeeper è completa. Fate partire ZooKeeper digitando:

~/Installs/zookeeper-3.4.6/bin/zkServer.sh start

Dovreste vedere un output simile a questo:

JMX enabled by default 
Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg 
Starting zookeeper ... STARTED

Fase 11 – Installazione e configurazione di Accumulo

Ora che tutte le sue dipendenze sono state soddisfatte, è il momento di occuparsi proprio dell’installazione di Accumulo.

Andate alla directory Installs.

cd ~/Installs

Estraete accumulo-1.6.1-bin.tar.gz usando tar :

tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz

Accumulo viene fornito con degli esempi di configurazione per server che hanno vari formati di memoria: 512 MB, 1 GB, 2 GB e 3 GB. In questo tutorial utilizzeremo la configurazione per 512 MB. Se il server ha più memoria, è possibile scegliere un’altra configurazione.

Copiate i file di configurazione per i 512 MB nella directory conf.

cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/

Usate nano per modificare ancora una volta il vostro ambiente di shell, editando il file .bashrc.

nano ~/.bashrc

Aggiungete al file le seguenti variabili d’ambiente:

  • HADOOP_HOME: Il percorso per l’installazione di Hadoop
  • ZOOKEEPER_HOME: Il percorso per l’installazione di ZooKeeper

Aggiungete al file le seguenti righe:

export HADOOP_HOME=~/Installs/hadoop-2.6.0/ export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/

Salvate ed uscite.

Aggiornate l’ambiente in modo che le variabili aggiunte a .bashrc siano disponibili nella sessione corrente.

. ~/.bashrc

Usate nano per modificare accumulo-env.sh.

nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh

Di default, il monitor HTTP di Accumulo viene associato solo all’interfaccia di rete locale. Per essere in grado di accedervi tramite Internet, è necessario impostare il valore di ACCUMULO_MONITOR_BIND_ALL a true.

Trovate la riga che inizia con export ACCUMULO_MONITOR_BIND_ALL e rimuovetene il commento. Dovrebbe apparire come:

export ACCUMULO_MONITOR_BIND_ALL="true"

Salvate ed uscite.

Usate nano per modificare accumulo-site.xml.

nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml

I processi worker di Accumulo comunicano tra loro utilizzando una chiave segreta. Questa dovrebbe essere modificata in una stringa che sia sicura. Cercate la proprietà instance.secret e modificatene il valore. Useremo questa stringa: PASS1234 . L’XML per la proprietà dovrebbe essere simile a questo:

<property> 
    <name>instance.secret</name> 
    <value> PASS1234 </value> 
    <description>A secret unique to a given instance that all servers must know in order to communicate with one another. Change it before initialization. To change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd], and then update this file.
    </description>
</property>

Successivamente, aggiungete una nuova proprietà denominata instance.volumes . Il valore di questa proprietà specifica dove Accumulo dovrebbe archiviare i propri dati nell’HDFS. Andremo a memorizzare i dati nella directory /accumulo .

<property> 
    <name>instance.volumes</name> 
    <value>hdfs://localhost:9000/accumulo</value> 
</property>

Trovate la proprietà trace.token.property.password  e impostatene il valore a qualcosa di sicuro. Ricordate questo valore in quanto sarà necessario nella fase successiva. La imposteremo come miapass.

<property> 
    <name>trace.token.property.password</name> 
    <value> miapass </value> 
</property>

Salvate ed uscite.

Inizializzate Accumulo.

~/Installs/accumulo-1.6.1/bin/accumulo init

Verrà richiesto l’inserimento di un nome per l’istanza. Utilizzate un qualsiasi nome a vostra scelta. In questo tutorial scegliamo DIGITAL_OCEAN .

Successivamente, vi verrà richiesta una password. Digitate la stessa password utilizzata per la proprietà trace.token.property.password.

Quando il comando termina, si può far partire Accumulo.

~/Installs/accumulo-1.6.1/bin/start-all.sh

Potrebbero esserci un paio di avvertimenti che raccomandano valori più alti per alcuni parametri di sistema. Visto che in questo tutorial stiamo creando un piccolo esempio, è possibile ignorare tali avvertimenti.

Una volta completato l’avvio, è possibile utilizzare un browser per visitare l’interfaccia web di Accumulo http://<your-server-ip>:50095 .

Accumulo Interfaccia Web

Conclusioni

In questo tutorial avete imparato come configurare Apache Accumulo e tutti gli altri componenti da cui dipende. Abbiamo creato una semplice installazione con HDFS in modalità pseudo-distribuita che può essere eseguita su un singolo server di piccole dimensioni. Per ottenere prestazioni ottimali in uno scenario di produzione, HDFS deve essere eseguito in modalità completamente distribuita.

In scenari di produzione è altamente raccomandato che questi processi siano distribuiti su server che abbiano almeno 8 GB di RAM e processori con 4 o più core in modo che ogni processo possa utilizzare più di 2 GB di memoria e un core per sé. In alternativa, è possibile distribuire i componenti separatamente su diversi server.

Per ulteriori informazioni, fate riferimento al manuale di Apache Accumulo.

Autore: Hathy A

Redattore: Sharon Campbell

Traduzione dell’articolo https://www.digitalocean.com/community/tutorials/how-to-install-the-big-data-friendly-apache-accumulo-nosql-database-on-ubuntu-14-04 Copyright © 2016 DigitalOcean™ Inc.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

*