Comment installer la base de données Apache Accumulo NoSQL Friendly sur Big Data sur Ubuntu 14.04

introduction

Apache Accumulo est une base de données NoSQL distribuée à source ouverte basée sur BigTable. Il est utilisé pour effectuer efficacement des opérations CRUD (Create Read Update Delete) sur des ensembles de données extrêmement volumineux (souvent appelés Big Data). Accumulo est préférable à d’autres bases de données distribuées similaires (telles que HBase ou CouchDB) si un projet nécessite une sécurité fine sous la forme d’un contrôle d’accès au niveau de la cellule.

Accumulo est construit sur d’autres logiciels Apache. Accumulo représente ses données sous forme de paires clé-valeur et les stocke sous forme de fichiers sur HDFS (système de fichiers distribués Hadoop d’Apache). Il utilise également Apache ZooKeeper pour synchroniser les paramètres entre tous ses processus.

Dans ce tutoriel, vous apprendrez à:

  • Installer et configurer Apache HDFS et ZooKeeper: Ces systèmes doivent être actifs avant de démarrer Accumulo.

  • Installer et configurer une instance autonome d’Accumulo

Conditions préalables

Vous aurez besoin des éléments suivants:

Étape 1 - Installer et configurer JDK 7

Accumulo, HDFS et ZooKeeper sont tous écrits en Java et nécessitent une machine virtuelle Java (JVM) pour fonctionner. Commençons donc par installer le JDK.

Mettez à jour l’index de la liste de paquets.

sudo apt-get update

Installez OpenJDK 7 en utilisant + apt-get.

sudo apt-get install openjdk-7-jdk

Utilisez + nano pour éditer votre fichier d’environnement shell,` + .bashrc`.

nano ~/.bashrc

Ajoutez + JAVA_HOME + en tant que variable d’environnement à la fin du fichier.

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

_ * Remarque *: La valeur de + JAVA_HOME + peut être différente selon l’architecture de votre serveur. Par exemple, sur un serveur 64 bits, la valeur serait + / usr / lib / jvm / java-7-openjdk-amd64 +. Vous pouvez voir le chemin exact en listant le contenu du répertoire + / usr / lib / jvm / +. Si votre chemin est différent de ce qui est montré ici, assurez-vous d’apporter les modifications appropriées ici et ailleurs. _

Enregistrez le fichier et quittez + nano +. Mettez à jour les variables d’environnement de la session en cours en tapant:

. ~/.bashrc

Editez le fichier de configuration + java.security + de la machine virtuelle Java à l’aide de + nano +.

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

Recherchez le paramètre + securerandom.source + et modifiez la ligne afin qu’elle ressemble à ceci:

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

Enregistrez le fichier et quittez + nano +. Ce changement est nécessaire pour réduire le temps de démarrage de la machine virtuelle. Ne pas effectuer ce changement peut entraîner des temps de démarrage très longs sur la plupart des serveurs virtuels.

Étape 2 - Installez SSH

Hadoop a besoin de SSH et de Rsync pour gérer ses démons. Installez-les en utilisant la commande suivante:

sudo apt-get install ssh rsync

Étape 3 - Activer la connectivité SSH sans mot de passe

Hadoop devrait pouvoir se connecter à votre serveur via SSH sans être invité à entrer un mot de passe.

Générez une clé RSA en utilisant + ssh-keygen.

ssh-keygen -P ''

Appuyez sur * ENTER * lorsque vous y êtes invité pour choisir les valeurs par défaut.

Ajoutez la clé générée dans le fichier + allowed_keys +.

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

Les valeurs + localhost + et + 0.0.0.0 + doivent être ajoutées à la liste des hôtes connus. Le moyen le plus simple de le faire est d’exécuter la commande + ssh +.

Ajoutons d’abord + localhost +.

ssh localhost

Vous recevrez un message ressemblant à ceci:

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)?

Tapez + yes + et appuyez sur + ENTER.

Une fois la connexion établie, quittez la session SSH enfant en tapant:

exit

Ajoutons + 0.0.0.0 + maintenant.

ssh 0.0.0.0

Tapez + yes + et appuyez sur + ENTER lorsque vous y êtes invité.

Encore une fois, quittez la session enfant SSH en tapant:

exit

La configuration de SSH est maintenant terminée.

Étape 4 - Créer un répertoire de téléchargements

Vous allez télécharger quelques fichiers pour ce tutoriel. Bien que cela ne soit pas vraiment nécessaire, il est judicieux de stocker tous vos téléchargements dans un répertoire séparé.

mkdir -p ~/Downloads

Entrez le répertoire.

cd ~/Downloads

Étape 5 - Téléchargez Apache Hadoop

Au moment de la rédaction de ce document, la dernière version stable de Hadoop est * 2.6.0 *. Téléchargez-le en utilisant + wget +.

wget "http://www.eu.apache.org/dist/hadoop/common/stable/"

Étape 6 - Téléchargez Apache ZooKeeper

La dernière version stable de ZooKeeper est * 3.4.6 *. Téléchargez-le en utilisant + wget +.

wget "http://www.eu.apache.org/dist/zookeeper/stable/"

Étape 7 - Téléchargez Apache Accumulo

La dernière version stable d’Accumulo est * 1.6.1 *. Téléchargez-le en utilisant + wget +.

wget "http://www.eu.apache.org/dist/accumulo/1.6.1/"

Étape 8 - Créer un répertoire d’installation

Créez un répertoire pour stocker toutes nos installations liées à Accumulo.

mkdir -p ~/Installs

Entrez le répertoire.

cd ~/Installs

Étape 9 - Installer et configurer Hadoop

Utilisez la commande + tar + pour extraire le contenu de + hadoop-2.6.0-src.tar.gz +.

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

_ * Remarque: * Si vous avez installé une version différente de l’un de ces logiciels, veuillez utiliser la version appropriée dans votre nom de fichier. _

Utilisez + nano + pour ouvrir + hadoop-env.sh +.

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

Recherchez la ligne commençant par + export JAVA_HOME + et remplacez-la par:

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

Assurez-vous que cette valeur est identique à celle que vous avez définie dans + .bashrc.

Par défaut, Hadoop génère beaucoup de journaux de débogage. Pour arrêter ce comportement, recherchez la ligne commençant par + export HADOOP_OPTS + et remplacez-la par:

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

Sauvegarder et quitter.

Utilisez + nano pour ouvrir` + core-site.xml`.

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

Ajoutez un bloc + <property> + nommé + fs.defaultFS +. Sa valeur doit pointer vers le nom d’hôte et le port du namenode (dans notre cas, il s’agit de + localhost + et du port par défaut + 9000 +). En ignorant les commentaires, éditez votre fichier pour qu’il ressemble à ceci:

<?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>

Sauvegarder et quitter.

Utilisez + nano pour ouvrir` + hdfs-site.xml`.

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

Les propriétés suivantes doivent être ajoutées à ce fichier:

  • + dfs.replication +: Ce nombre indique le nombre de fois qu’un bloc est répliqué par Hadoop. Par défaut, Hadoop crée des répliques + 3 + pour chaque bloc. Dans ce tutoriel, utilisez la valeur + 1 +, car nous ne créons pas de cluster.

  • + dfs.name.dir +: Ceci pointe vers un emplacement du système de fichiers où le namenode peut stocker la table de noms. Vous devez changer cela car Hadoop utilise + / tmp + par défaut. Utilisons + hdfs_storage / name + pour stocker la table de noms.

  • + dfs.data.dir +: Ceci pointe vers un emplacement du système de fichiers où le code de données doit stocker ses blocs. Vous devez changer cela car Hadoop utilise + / tmp + par défaut. Utilisons + hdfs storage / data pour stocker les blocs de données.

En ignorant les commentaires, après avoir ajouté ces propriétés, votre fichier devrait ressembler à ceci:

<?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>

Utilisez + nano pour créer un nouveau fichier nommé` + mapred-site.xml`.

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

Ajoutez une propriété nommée + mapred.job.tracker + à ce fichier. Cette propriété contient le nom d’hôte et le numéro de port sur lesquels le suivi de travaux MapReduce est exécuté. Pour notre configuration, utilisez + localhost + et le port par défaut + 9001 +.

Ajoutez le contenu suivant au fichier:

<?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>

Entrez le répertoire de base de Hadoop (cela est important car Hadoop crée le répertoire + hdfs_storage + dans le répertoire actuel).

cd ~/Installs/hadoop-2.6.0/

Le NameNode peut maintenant être initialisé en tapant:

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

Vous devriez voir un peu de sortie.

Ensuite, démarrez le NameNode en tapant:

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

Attendez une minute ou deux pour que ça commence. Une fois démarré, vous pouvez utiliser un navigateur pour visiter + http: // <votre-ip>: 50070 / + et naviguer à travers l’interface Web du NameNode.

image: https: //assets.digitalocean.com/articles/accumulo_nosqldatabase/1.png [Interface Web Hadoop NameNode]

Dépannage

Si vous ne pouvez pas accéder à l’interface Web, vérifiez si le NameNode est actif à l’aide de la commande suivante:

jps

Votre sortie doit contenir les trois processus suivants, ainsi que le processus + Jps +:

  • + DataNode +

  • + NameNode +

  • + SecondaryNameNode +

Si vous voyez que + NameNode + n’est pas présent dans la sortie, procédez comme suit. S’ils ne s’exécutent pas dans un bloc, vous devrez peut-être les exécuter séparément. Les commentaires sont inclus en ligne.

cd ~/Installs/hadoop-2.6.0/
~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes
rm -rf hdfs_storage # Delete the namenode data
rm -rf /tmp/hadoop-* # Delete the temporary directories
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode

Redémarrez Hadoop en utilisant + start-dfs.sh +:

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

Vous devriez pouvoir accéder à l’interface Web maintenant.

Étape 10 - Installer et configurer ZooKeeper

Entrez le répertoire + Installations +.

cd ~/Installs

Utilisez + tar + pour extraire + zookeeper-3.4.6.tar.gz +.

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

Copiez le fichier exemple + zoo_sample.cfg + dans + zoo.cfg +.

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

La configuration de ZooKeeper est maintenant terminée. Lancez ZooKeeper en tapant:

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

Vous devriez voir une sortie qui ressemble à ceci:

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

Étape 11 - Installer et configurer Accumulo

Maintenant que toutes ses dépendances sont satisfaites, il est temps de travailler à l’installation d’Accumulo.

Entrez le répertoire + Installations +.

cd ~/Installs

Extrayez + accumulo-1.6.1-bin.tar.gz en utilisant` + tar`:

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

Accumulo est livré avec des exemples de configuration pour des serveurs avec différentes tailles de mémoire: 512 Mo, 1 Go, 2 Go et 3 Go. Je vais utiliser la configuration de 512 Mo dans ce tutoriel. Vous pouvez choisir d’autres configurations si votre serveur dispose de plus de mémoire.

Copiez les fichiers de configuration de 512 Mo dans le répertoire + conf +.

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

Utilisez + nano pour éditer votre environnement shell à nouveau, en utilisant le fichier` + .bashrc`.

nano ~/.bashrc

Ajoutez les variables d’environnement suivantes à ce fichier:

  • HADOOP_HOME: le chemin de l’installation Hadoop

  • ZOOKEEPER_HOME: chemin d’accès à l’installation de ZooKeeper

Ajoutez les lignes suivantes à votre fichier:

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

Sauvegarder et quitter.

Mettez à jour l’environnement afin que les variables que vous avez ajoutées à + ​​.bashrc + soient disponibles dans la session en cours.

. ~/.bashrc

Utilisez + nano + pour éditer + accumulo-env.sh +.

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

Par défaut, le moniteur HTTP d’Accumulo ne se lie qu’à l’interface réseau locale. Pour pouvoir y accéder via Internet, vous devez définir la valeur de + ACCUMULO_MONITOR_BIND_ALL + sur `` + true + `.

Recherchez la ligne commençant par + export ACCUMULO_MONITOR_BIND_ALL + et décommentez-la. Ça devrait ressembler à ça:

export ACCUMULO_MONITOR_BIND_ALL="true"

Sauvegarder et quitter.

Utilisez + nano pour éditer` + accumulo-site.xml`.

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

Les processus de travail d’Accumulo communiquent entre eux à l’aide d’une clé secrète. Cela devrait être changé pour une chaîne qui est sécurisée. Recherchez la propriété + instance.secret + et changez sa valeur. Je vais utiliser cette chaîne: ++. Le code XML de la propriété devrait ressembler à ceci:

<property>
   <name>instance.secret</name>
   <value></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>

Ensuite, ajoutez une nouvelle propriété nommée + instance.volumes +. La valeur de cette propriété spécifie où Accumulo doit stocker ses données dans le système HDFS. Laissez-nous stocker les données dans le répertoire + / accumulo +.

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

Recherchez la propriété + trace.token.property.password + et définissez sa valeur sur quelque chose de sécurisé. N’oubliez pas cette valeur, car vous en aurez besoin à l’étape suivante. Je vais mettre ceci à ++.

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

Sauvegarder et quitter.

Initialiser Accumulo.

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

Vous serez invité à entrer un * nom d’instance *. Utilisez n’importe quel nom de votre choix. Je choisis + DIGITAL_OCEAN +.

Ensuite, vous serez invité à entrer un mot de passe. Tapez le même mot de passe que vous avez utilisé pour la propriété + trace.token.property.password +.

Une fois la commande terminée, vous pouvez démarrer Accumulo.

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

Il se peut que quelques avertissements recommandent des valeurs plus élevées pour certains paramètres système. Comme nous créons une très petite instance dans ce tutoriel, vous pouvez ignorer ces avertissements.

Une fois le démarrage terminé, vous pouvez utiliser un navigateur pour visiter l’interface Web d’Accumulo à l’adresse + http: // <votre-serveur-ip>: 50095 +.

image: https: //assets.digitalocean.com/articles/accumulo_nosqldatabase/2.png [Interface Web Accumulo]

Conclusion

Dans ce didacticiel, vous avez appris à configurer Apache Accumulo et tous les autres composants dont il dépend. Nous avons créé aujourd’hui une configuration très simple utilisant HDFS en mode pseudo-distribué pouvant fonctionner sur un seul petit serveur. Pour des performances optimales dans un scénario de production, HDFS doit s’exécuter en mode entièrement distribué.

Dans les scénarios de production, il est également fortement recommandé de déployer ces processus sur des serveurs disposant d’au moins 8 Go de RAM et d’au moins 4 cœurs de processeur, de sorte que chaque processus puisse utiliser plus de 2 Go de mémoire et un cœur séparé. Alternativement, vous pouvez déployer les composants séparément sur différents serveurs.

Pour plus d’informations, reportez-vous au useruserutilisateur d’Apache Accumulo.