Hadoop pour les DBAs (2/13) : Compiler Hadoop pour Oracle Linux 7

De manière générale, vous préfèrerez installer Hadoop à partir de distributions comme celles de Cloudera ou Hortonworks… Mieux, vous utiliserez Hadoop dans le Cloud ou avec une appliance comme celles de Netapp ou d’Oracle. Ces solutions assistent la mise en oeuvre, la gestion opérationnelle et sont pasckagées pour la plupart des systèmes d’exploitation. Ce n’est pas forcément le cas de la version Apache.
Les efforts et l’expérience valent tous les longs discours, cette série d’articles vise à vous faire apprécier les bénéfices mais aussi les difficultés d’Hadoop. Nous allons donc utiliser la version Apache 2.4.1, cela vous permettra en outre de tester de nouvelles fonctionnalités si vous voulez. Comme la distribution vient avec les librairies C compilées en 32 bits, nous allons recompiler cette distribution. Cette série se base sur Oracle Linux 7 ; vous n’aurez aucune peine à l’adapter à RHEL7, CentOS7 ou même Fedora…

Installer les packages utiles

Pour compiler Hadoop, il vous plusieurs packages, bibliothèques et outils. Les 3 scripts ci-dessous listent plus de RPMs que nécessaires cette opération :

# Tools and libraries useful for Oracle
yum install procps module-init-tools ethtool \
initscripts bc bind-utils nfs-utils \
util-linux-ng pam xorg-x11-utils \
xorg-x11-xauth smartmontools binutils \
compat-libstdc++-33 gcc gcc-c++ glibc \
glibc-devel ksh libaio libaio-devel \
libgcc libstdc++ libstdc++-devel make \
sysstat openssh-clients compat-libcap1
# Additional tools and libraries for Hadoop
yum install  lzo  zlib-devel  autoconf automake \
libtool  openssl-devel cmake
# Additional tools for me (and probably you)
yum install curl zip unzip gzip bzip2 rsync git mlocate \
strace gdb perf openssh-server elinks

Installer Google Protocol Buffers

Un pré-requis important pour la recompilation d’Hadoop est l’installation de Google Protocol Buffers 2.5. Vous pouvez l’installer depuis les référentiel EPEL 7 (pour l’instant en beta). Vous pouvez également installer la distribution depuis le code source :

curl -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2
tar -jxvf protobuf-2.5.0.tar.bz2
cd protobuf-*
./configure
make
sudo make install

Note:
Lorsqu’elle est réalisée depuis le source, installation de protobuf est réalisée dans /usr/local/bin. Assurez-vous que la variable PATH est mise à jour pour recompiler Hadoop.

Installer le JDK Java SE 8

Hadoop étant pour la plus grande partie développé en Java, vous devrez également installer le JDK Java SE. Vous pouvez, par exemple, installer Java SE 8 Hotspot à partir du site Oracle ou utiliser OpenJDK [2] :

yum install jdk-8u11-linux-x64.rpm

Ajoutez les 2 lignes ci-dessous dans ~/.bashrc ou dans un fichier profile pour accéder à Java pendant la compilation :

export JAVA_HOME=/usr/java/jdk1.8.0_11
export PATH=$JAVA_HOME/bin:$PATH

Installer Maven

Enfin la procédure de build de Hadoop s’appuie sur Maven. Vous pouvez donc télécharger la distribution binaire à partir d’un des mirroirs du site Apache Maven :

cd /usr/local/
sudo tar -zxvf /home/hadoop/apache-maven-3.2.2-bin.tar.gz \
   --transform s/apache-maven-3.2.2/apache-maven/

Ajoutez les lignes ci-dessous dans ~/.bashrc ou dans un fichier profile pour accéder à Maven pendant la compilation :

export M2_HOME=/usr/local/apache-maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

Télécharger le source Hadoop

Le gestionnaire de configuration de Hadoop est subversion. Il est toutefois possible, celui-ci étant synchronisé avec un référentiel git de télécharger les sources à l’aide de git et de faire un checkout de la version qui vous intéresse ensuite :

git clone git://git.apache.org/hadoop-common.git
cd hadoop-common
git tag -l
git checkout tags/release-2.4.1

Lancer le Build Hadoop

Tous les pré-requis sont normalement en place, vous pouvez lancer le « build ». La commande ci-dessous lance cette opération. Elle génère une distribution contenant les libraries C sous la forme d’un fichier .tar.gz dans le répertoire hadoop-dist/target :

mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar

Note:
Le javadoc de Hadoop n’est pas formé correctement ; en particulier, certains caractères spéciaux, n’incluent pas les caractères d’échappement attendus. C’est la raison . pour laquelle vous devez ignorer les javadoc du « build ».

Nous voilà, prêt à installer un cluster Hadoop sur Oracle Linux 7…

Bibliographie:
Pour en savoir plus l’exécution des build Hadoop à partir du source, lisez :
[1] How to Contribute to Hadoop Common.
[2] Hadoop Wiki Java Versions Page