Installation d'Hadoop et d'HBase sous OSX en mode pseudo-distribué

Installation d'Hadoop et d'HBase sous OSX en mode pseudo-distribué

By WORMS David

1 déc. 2010

Le système d’exploitation choisi est OSX mais la procédure n’est pas si différente pour tout environnement Unix car l’essentiel des logiciels est téléchargé depuis Internet, décompressé et paramétré manuellement. Seuls quelques paquets sont installés par Macport mais ceux-ci sont aisément trouvables sur des outils équivalents comme Apt et Yum. Etant donné que les logiciels téléchargés sont en Java, il ne devrait pas y avoir de soucis quant à leur fonctionnement dans d’autres environnements.

Cet environnement est configuré en mode pseudo-distribué afin de simuler au mieux le comportement d’un cluster si un poste unique. Dans ce mode, chaque processus Java tourne dans sa propre JVM.

La procédure couvre l’installation des logiciels suivants :

Choix des versions

L’installation des logiciels depuis les dépôts SVN s’est confrontée à un problème d’incompatibilité entre Hive qui requiert la dernière version stable de Hadoop (2.20.2) et celle de Sqoop qui requiert la version SVN de Hadoop. Pour cette raison, nous avons opté pour les versions distribuées par Cloudera. Basées sur des versions stables, elles incluent un grand nombre des patches présents dans les dépôts SVN et sont testés par certains des meilleurs experts de la communauté.

Toutefois, certaines fonctionnalités ne sont pas encore présentes dès la distribution, c’est pourquoi certains d’entre nous utilisent aussi des versions compilées depuis les dépôts SVN. Les logiciels en question sont HBase et Hive et leur installation manuelle n’est pas couverte ci-dessous.

Installation

La procédure décrite part du postulat que XCode et MacPort sont déjà présents sur le système.

La distribution de Cloudera est CDH3beta2 qui n’est pas la plus récente mais le mécanisme est le même à condition de se rendre sur le site de Cloudera et de télécharger les versions les plus récentes. Dépendances MacPort

sudo port install wget p26-virtualenv libxml2 libxslt mysql5 mysql5-server sqlite mysql
easyinstall simplejson

Mise en place de SSH

# You need to able to ssh yourself with requiring a password
# (using your public key)
# Next line only if "~/.ssh/id_rsa.pub" does not exists
ssh-keygen -C "my@email.com" -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# you should now be able to issue "ssh localhost"
# without entering your password

Préparation du répertoire d’installation

# Replace {username}
sudo mkdir /opt/cloudera
sudo chown {username}:staff /opt/cloudera
cd /opt/cloudera

Téléchargement des paquets

wget http://archive.cloudera.com/cdh/3/hadoop-0.20.2+320.tar.gz
wget http://archive.cloudera.com/cdh/3/hive-0.5.0+20.tar.gz
wget http://archive.cloudera.com/cdh/3/pig-0.7.0+9.tar.gz
wget http://archive.cloudera.com/cdh/3/hbase-0.89.20100621+17.tar.gz
wget http://archive.cloudera.com/cdh/3/sqoop-1.0.0+3.tar.gz
wget http://archive.cloudera.com/cdh/3/flume-0.9.0+1.tar.gz
wget http://archive.cloudera.com/cdh/3/hue-common_0.9-2.tar.gz
wget http://archive.cloudera.com/cdh/3/zookeeper-3.3.1+10.tar.gz

Extraction des paquets

tar -xzf hadoop-0.20.2+320.tar.gz
tar -xzf hive-0.5.0+20.tar.gz
tar -xzf pig-0.7.0+9.tar.gz
tar -xzf hbase-0.89.20100621+17.tar.gz
tar -xzf sqoop-1.0.0+3.tar.gz
tar -xzf flume-0.9.0+1.tar.gz
tar -xzf hue-common_0.9-2.tar.gz
tar -xzf zookeeper-3.3.1+10.tar.gz
# Make symbolic links
ln -sf hadoop-0.20.2+320 hadoop
ln -sf hive-0.7.0-dev hive
ln -sf pig-0.7.0+9 pig
ln -sf hbase-0.89.20100621+17 hbase
ln -sf sqoop-1.0.0+3 sqoop
ln -sf flume-0.9.0+1 flume
ln -sf hue-common-0.9 hue
ln -sf zookeeper-3.3.1+10 zookeeper
# Clean up
rm -rf *.tar.gz

Configuration de l’environnement

echo "export JAVA_HOME=/Library/Java/Home" >> ~/.profile
echo "export HADOOP_HOME=/opt/cloudera/hadoop" >> ~/.profile
echo "export HIVE_HOME=/opt/cloudera/hive" >> ~/.profile
echo "export HIVE_CONF_DIR=/opt/cloudera/hive/conf" >> ~/.profile
echo "export PIG_HOME=/opt/cloudera/pig" >> ~/.profile
echo "export HBASE_HOME=/opt/cloudera/hbase" >> ~/.profile
echo "export FLUME_HOME=/opt/cloudera/flume" >> ~/.profile
echo "export SQOOP_HOME=/opt/cloudera/sqoop" >> ~/.profile
echo "export ZOOKEEPER_HOME=/opt/cloudera/zookeeper" >> ~/.profile
echo "export HUE_HOME=/opt/cloudera/hue" >> ~/.profile
echo "export PATH=\$HADOOP_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$HBASE_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$PIG_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$HIVE_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$FLUME_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$SQOOP_HOME/bin:\$PATH" >> ~/.profile
echo "export PATH=\$ZOOKEEPER_HOME/bin:\$PATH" >> ~/.profile
source ~/.profile

Configuration des logiciels

# Configure Hive
# Edit ./conf/hive-default.xml
# and modify the property 'javax.jdo.option.ConnectionURL'
# to 'jdbc:derby:;databaseName=/opt/cloudera/data/hive/metastore_db;create=true'
# Edit ./conf/hive-log4j.properties
# and modify the property 'hive.log.file'
# to '/opt/cloudera/data/hive/hive.log'
# (SVN only) modify property 'hive.stats.dbconnectionstring'
# to 'jdbc:derby:;databaseName=/opt/cloudera/data/hive_temp_stats;create=true'
# For mysql,
# modify 'javax.jdo.option.ConnectionURL'
# to 'jdbc:mysql://127.0.0.1/hive?createDatabaseIfNotExist=true'
# and 'javax.jdo.option.ConnectionDriverName'
# to 'com.mysql.jdbc.Driver'
# and 'javax.jdo.option.ConnectionUserName'
# to 'your_username'
# and 'javax.jdo.option.ConnectionPassword'
# to 'your_password'

# Configure Hue
# Note : from memory, you might also need mysql
sudo port install py26-setuptools
ln -sf /opt/local/bin/mysql_config5 /opt/local/bin/mysql_config
cd hue-common-0.9
make apps
# EDIT $HUE_HOME/desktop/conf/hue.ini and
# update the property "hadoop_home" from "/usr/lib/hadoop-0.20"
# to "/opt/cloudera/hadoop-0.20.2+320"

# Configure Hadoop
cd $HADOOP_HOME/lib
ln -s $HUE_HOME/desktop/libs/hadoop/java-lib/hue-plugins-0.9.jar
mv hadoop-0.20.2+320/conf hadoop-0.20.2+320/conf.bck
cp -rp hue/example-hadoop-confs/conf.pseudo-hue hadoop-0.20.2+320/conf
# Edit the file $HADOOP_HOME/conf/core-site.xml and replace
# the value "/var/lib/hadoop-0.20/cache/${user.name}" by
# "/opt/cloudera/data/cache/${user.name}"
# Edit the file $HADOOP_HOME/conf/hdfs-site.xml and replace
# the value "/var/lib/hadoop-0.20/cache/hadoop/dfs/name" by
# "/opt/cloudera/data/cache/${user.name}/dfs/name"
hadoop namenode -format

Utilisation

Démarrage des services

# Start Hadoop
start-all.sh
# Start HBase
start-hbase.sh
hbase-daemon.sh start rest
# Start Hue
cd $HUE_HOME
./build/env/bin/supervisor

Arrêt des services

# Start Hadoop
stop-all.sh
# Start HBase
hbase-daemon.sh stop rest
stop-hbase.sh

Administration

Si l’installation s’est déroulée sans encombre, les URLs suivantes devrait être disponibles :

  • Hadoop Map/Reduce Administration : http://localhost:50030
  • Hadoop File System Browser : http://localhost:50070
  • Hadoop Task Tracker Status : http://localhost:50060
  • Hue : http://localhost:8088

Canada - Morocco - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnées par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Sciencem le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.