Installare il database NoSQL adatto ai Big Data Apache Accumulo su Ubuntu 14.04
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 crea3
repliche per ogni blocco. In questo tutorial, usate il valore1
, 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 usiamohdfs_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 usiamohdfs_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.
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
.
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.
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.