CDH ( pour Cloudera Distributed Hadoop ) est une distribution complète, testée et populaire d'Apache Hadoop et des projets associés. CDH livre les éléments de base de Hadoop - stockage évolutif et calcul distribué - ainsi qu'une interface utilisateur Web et capacités d'entreprise vitales. CDH est une solution Open Source sous licence Apache et est la seule solution Hadoop à offrir un lot unifié de traitement, recherche interactive SQL et interactive, et contrôle d'accès basé sur les rôles.

CDH fournit:

  • Flexibilité: stockez tous les types de données et manipulez-les avec différents cadres de calcul, y compris traitement par lots, SQL interactif, recherche de texte libre, apprentissage automatique et calcul statistique.
  • Intégration: mise en service rapide sur une plate-forme Hadoop complète fonctionnant avec une large gamme de matériels et des solutions logicielles.
  • Sécurité: traite et contrôle les données sensibles.
  • Évolutivité: activez une large gamme d'applications et étendez-les pour les adapter à vos besoins.
  • Haute disponibilité: effectuez des tâches professionnelles critiques en toute confiance.
  • Compatibilité: utilisez votre infrastructure informatique et votre investissement existants.

Notre plateforme CDH 6 sera composée de la plateforme suivante :

- Serveur Edge : serveur « d’interface » entre les utilisateurs et le cluster afin de lancer des jobs (traitements).

- Serveur Utility : serveur où les services Cloudera Manager ainsi que Navigator seront déployés.

- Serveur SQL : serveur de base de donnée.

- Serveur Master : il gère les processus maîtres d’Hadoop comme le systeme de gestion de fichiers HDFS ou YARN.

- Serveur Worker : Contient les blocs de données correspondant aux fichiers à transmettre.

La version mineure Cloudera Manager doit toujours être égale ou supérieure à la version mineure CDH.

Les anciennes versions de Cloudera Manager peuvent ne pas prendre en charge les fonctionnalités des versions plus récentes de CDH.

Tous les serveurs devront avoir accès aux repositories de cloudera suivants:

https://archive.cloudera.com/cm6/redhat/7/x86_64/cm/

https://archive.cloudera.com/cdh6/redhat/7/x86_64/cdh/

Operating System Version (bold=new)
Red Hat Enterprise Linux-compatible
RHEL / CentOS / Oracle Linux RHCK 7.6, 7.5, 7.4, 7.3
6.10, 6.9 , 6.8

Le JDK oracle est disponible à l'adresse suivantes :

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

JDK 8 Supported in C5.3 and Higher
1.8u181 Recommended / Latest version tested
1.8u162 Recommended
1.8u144 Recommended
1.8u131 Recommended
1.8u31 Minimum required

Le JDK oracle est disponible à l'adresse suivantes :

JDK 8 Supported in C5.3 and Higher
1.8u181 Recommended / Latest version tested

La console d'administration de Cloudera Manager que nous utiliserons pour installer, configurer, gérer et surveiller les services, prend en charge la dernière version des navigateurs suivants :

  • Mozilla Firefox
  • Google Chrome
  • Internet Explorer
  • Safari

MySQL Support across Cloudera Enterprise 6 Releases

MySQL Version Cloudera Enterprise 6.x
5.7

MariaDB Support across Cloudera Enterprise 6 Releases

MariaDB Version Cloudera Enterprise 6.x
5.5
10.0

Les actions suivantes devront êtres réalisées sur tous les serveurs du cluster.

Les horloges de tous les nœuds de votre cluster ainsi que la machine qui exécute le Cloudera Manager doivent pouvoir se synchroniser à une référence de temps ( serveur NTP par exemple ).

Cette référence de temps doit être commune à tous les nœuds.

[root@srv-*** ~]# vi /etc/chrony.conf

Sur les distributions type Red Hat / CentOS, SELinux (Security-Enhanced Linux) est activé par défaut. Malheureusement, ceci empêche parfois l'installation et le fonctionnement correct de certains programmes.

Si on veut désactiver de manière définitive, y compris entre les boots, il faut modifier le fichier “/etc/selinux/config”, et modifier la ligne : SELINUX=enforcing en SELINUX=disabled

[root@srv-*** ~]# vi /etc/selinux/config 

Le paramètre admet 3 valeurs, que l'on peut trouver dans le fichier :

# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced : politique de sécurité activée
#     permissive - SELinux prints warnings instead of enforcing : affichage d'un message d'avertissement.
#     disabled - No SELinux policy is loaded : politique de sécurité non chargée.

Les opérations cryptographiques nécessitent une entropie pour assurer l'aléatoire.

Nous pouvons vérifier l'entropie disponible sur un système Linux en exécutant la commande suivante:

[root@srv-*** ~]# cat /proc/sys/kernel/random/entropy_avail

La sortie affiche l'entropie actuellement disponible.

Vérifiez l'entropie plusieurs fois pour déterminer l'état du pool d'entropie sur le système. Si l'entropie est toujours faible (500 ou moins), vous devez l'augmenter en installant rng-tools et en démarrant le service rngd.

[root@srv-*** ~]# yum installer rng-tools
[root@srv-*** ~]# cp /usr/lib/systemd/system/rngd.service /etc/systemd/system/
[root@srv-*** ~]# sed -i -e /ExecStart=\/sbin\/rngd -f/ExecStart=\/sbin\/rngd -f -r \/dev\/urandom/' /etc/systemd/system/rngd.service
[root@srv-*** ~]# systemctl démon-recharger
[root@srv-*** ~]# systemctl start rngd
[root@srv-*** ~]# systemctl active rngd
[root@srv-*** ~]# nano /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no
[root@srv-*** ~]# nano /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

[root@srv-*** ~]# chmod +x /etc/rc.d/rc.local
[root@srv-*** ~]# /etc/rc.d/rc.local
[root@srv-*** ~]# nano /etc/sysctl.conf

# Kernel sysctl configuration file for ACCOR
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Restricting access to kernel logs
kernel.dmesg_restrict = 1

# Restricting access to kernel pointers in the proc filesystem
kernel.kptr_restrict = 1

# Randomize the positions of the stack, virtual dynamic shared object 
# (VDSO) page, and shared memory regions. 
# The base address of the data segment is located immediately after 
# the end of the executable code segment.
# Enable Randomized Virtual Memory Region Placement (Scored)
kernel.randomize_va_space = 2

# Controls IP packet forwarding
# Disable IP Forwarding (Scored)
net.ipv4.ip_forward = 0
net.ipv4.route.flush = 1

# Respond to a ping
net.ipv4.icmp_echo_ignore_all = 0
# Enable Ignore Broadcast Requests (Scored)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable Bad Error Message Protection (Scored)
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Enable TCP SYN Cookies (Scored)
net.ipv4.tcp_syncookies = 1

# protect against tcp time-wait assassination hazards
# drop RST packets for sockets in the time-wait state
net.ipv4.tcp_rfc1337 = 1

# Enable source validation by reversed path, as specified in RFC1812
# Enable RFC-recommended Source Route Validation (Scored)
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1

# Send redirects, if router, but this is just server
# Disable Send Packet Redirects (Scored)
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
   
# Accept packets with SRR option? No
# Disable Source Routed Packet Acceptance (Scored)
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Disable ICMP Redirect Acceptance (Scored)  
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.default.accept_redirects = 0

# Disable Secure ICMP Redirect Acceptance (Scored)
net.ipv4.conf.all.secure_redirects = 0 
net.ipv4.conf.default.secure_redirects = 0

# Disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# Restrict Core Dumps (Scored)
fs.suid_dumpable = 0

# Swappiness
vm.swappiness = 1

Depuis la polémique du licensing coté Oracle, Cloudera supports depuis la java-1.8.0-openjdk

[root@srv-*** ~]# yum install java-1.8.0-openjdk.x86_64

MySQL Connector/ODBC permet de se connecter à un serveur de base de données MySQL grâce à l'utilisation des API (interface de programmation) ODBC.

[root@srv-*** ~]# yum install mysql-connector-java

On force le hostname :

[root@srv-*** ~]# hostnamectl set-hostname cl-xxxx

Sur tout les noeuds on force le hostname dans le cloud templates (Machines EC2 hébergées chez AWS)

[root@srv-*** ~]# sudo vi /etc/cloud/cloud.cfg

Ajoutez la ligne suivante au bas du fichier pour vous assurer que le nouveau nom d'hôte est préservé entre les redémarrages/redémarrages :

preserve_hostname: true

On ajoute le proxy dans “yum.conf” si nécessaire.

[root@srv-*** ~]# vi /etc/yum.conf

On update le system

[root@srv-*** ~]# yum update

On installe les packages suivants :

[root@srv-*** ~]# yum install wget curl nano unzip zip

On désactive firewallD et selinux

[root@srv-*** ~]# systemctl disable firewalld

On reboot

[root@srv-*** ~]# reboot

Post install - all cluster

Ajout du groupe hadoop:

[root@cl-dlmgr01 ~]# groupadd hadoop

Ajout de l'utilisateur hduser:

[root@cl-dlmgr01 ~]# adduser --groups hadoop hduser
[root@cl-dlmgr01 ~]# passwd hduser (keepass)

Définition des droits pour le nouvel utilisateur:

[root@cl-dlmgr01 ~]# visudo -f /etc/sudoers.d/hduser
# Add hduser user
hduser ALL=(ALL) NOPASSWD:ALL

Autoriser dans /etc/ssh/sshd_config : PubkeyAuthentication et PasswordAuthentication :

PubkeyAuthentication yes
PasswordAuthentication yes

Redémarrage du service sshd:

[root@cl-dlmgr01 ~]# systemctl restart sshd

Génère une clé pour le user : hduser

[root@srv-utility01 ~]# su - hduser
[root@srv-utility01 ~]# ssh-keygen -t rsa

Depuis le serveur cloudera manager:

[root@srv-utility01 ~]# su - hduser
[root@srv-utility01 ~]# ssh-copy-id -i .ssh/id_rsa.pub hduser@srv-***

Master NODE

Préparation des partitions:

[root@srv-master0X ~]# fdisk /dev/xvdb
[root@srv-master0X ~]# fdisk /dev/xvdc
[root@srv-master0X ~]# fdisk /dev/xvdd

Modifier le fichier /etc/fstab:

[root@srv-master0X ~]# vi /etc/fstab
/dev/xvdb1 /data01 xfs defaults,noatime 1 2
/dev/xvdc1 /data02 xfs defaults,noatime 1 2
/dev/xvdd1 /data03 xfs defaults,noatime 1 2

[root@srv-master0X ~]# mkdir -p /data01
[root@srv-master0X ~]# mkdir -p /data02
[root@srv-master0X ~]# mkdir -p /data03

XFS Commands

[root@srv-master0X ~]# mkfs.xfs /dev/xvdb1
[root@srv-master0X ~]# mount /dev/xvdb1 /data01
[root@srv-master0X ~]# xfs_io –xc "resblks 0" /data01
[root@srv-master0X ~]# xfs_io –xc "resblks" /data01

Worker NODE

Préparation des partitions:

[root@srv-worker0X ~]# fdisk /dev/xvdb
[root@srv-worker0X ~]# fdisk /dev/xvdc
[root@srv-worker0X ~]# fdisk /dev/xvdd
[root@srv-worker0X ~]# fdisk /dev/xvde
[root@srv-worker0X ~]# fdisk /dev/xvdf

Modifier le fichier /etc/fstab:

[root@srv-worker0X ~]# vi /etc/fstab
/dev/xvdb1 /hdfs-data01 xfs defaults,noatime 1 2
/dev/xvdc1 /hdfs-data02 xfs defaults,noatime 1 2
/dev/xvdd1 /hdfs-data03 xfs defaults,noatime 1 2
/dev/xvde1 /kudu-data01 xfs defaults,noatime 1 2
/dev/xvdf1 /kudu-data02 xfs defaults,noatime 1 2

[root@srv-worker0X ~]# mkdir -p /hdfs-data01
[root@srv-worker0X ~]# mkdir -p /hdfs-data02
[root@srv-worker0X ~]# mkdir -p /hdfs-data03
[root@srv-worker0X ~]# mkdir -p /kudu-data01
[root@srv-worker0X ~]# mkdir -p /kudu-data02

XFS Commands

[root@srv-worker0X ~]# mkfs.xfs /dev/xvdb1
[root@srv-worker0X ~]# mount /dev/xvdb1 /hdfs-data01
etc ... for all disk


[root@srv-worker0X ~]# xfs_io –xc "resblks 0" /hdfs-data01
[root@srv-worker0X ~]# xfs_io –xc "resblks" /hdfs-data01

Cloudera Manager constitue la tour de contrôle de CDH. L’outil apporte une console d’administration Web pour déployer, gérer, monitorer et contrôler l’état de santé de déploiements de CDH. Il comprend également une API pour configurer le système et récupérer des métriques et des informations sur le fonctionnement d’un cluster CDH.

Cloudera Manager permet d’ajouter des fonctions clé à Cloudera Express : le reporting opérationnel, gestion de quota, journal de configurations, mises à jour en continu, re-démarrage de services, intégration de Kerberos, intégration à LDAP, gestions du TLS, support de SNMP et récupération après sinistre automatique.

Nous partirons du principe que les pré-requis sont bien appliqué sur l'ensemble des serveurs composants le cluster. (cf. Pré-requis)

Récuperer le fichier “cloudera-manager.repo” mis à disposition sur le repository officiel à l'adresse suivante : Archive Cloudera

[root@cl-dlmgr01 ~]# nano /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager]
name=Cloudera Manager 6.1.0
baseurl=https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/
gpgkey=https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-md

[root@cl-dlmgr01 ~]# yum repolist

Pour l'installation du cloudera Manager, il suffira de passer par la commande “yum” sur le serveur “dlmgr01”.

Installation du cloudera manager:

[root@srv-utility01 ~]# yum install cloudera-manager-daemons cloudera-manager-server

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.heanet.ie
 * extras: ftp.heanet.ie
 * updates: ftp.heanet.ie
Resolving Dependencies
--> Running transaction check
---> Package cloudera-manager-daemons.x86_64 0:6.1.0-769885.el7 will be installed
--> Processing Dependency: perl for package: cloudera-manager-daemons-6.1.0-769885.el7.x86_64
---> Package cloudera-manager-server.x86_64 0:6.1.0-769885.el7 will be installed
--> Running transaction check
---> Package perl.x86_64 4:5.16.3-294.el7_6 will be installed
--> Processing Dependency: perl-libs = 4:5.16.3-294.el7_6 for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl-macros for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl-libs for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(threads) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Getopt::Long) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(File::Temp) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: 4:perl-5.16.3-294.el7_6.x86_64
--> Running transaction check
---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed
---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed
---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed
---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed
---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed
---> Package perl-Getopt-Long.noarch 0:2.40-3.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-3.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-3.el7.noarch
---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed
---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed
---> Package perl-Socket.x86_64 0:2.010-4.el7 will be installed
---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed
---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed
---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed
---> Package perl-constant.noarch 0:1.27-2.el7 will be installed
---> Package perl-libs.x86_64 4:5.16.3-294.el7_6 will be installed
---> Package perl-macros.x86_64 4:5.16.3-294.el7_6 will be installed
---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed
---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed
--> Running transaction check
---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed
---> Package perl-Pod-Escapes.noarch 1:1.04-294.el7_6 will be installed
---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch
---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed
--> Running transaction check
---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed
--> Running transaction check
---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed
---> Package perl-parent.noarch 1:0.225-244.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================
 Package                                                  Arch                                   Version                                               Repository                                        Size
==============================================================================================================================================================================================================
Installing:
 cloudera-manager-daemons           x86_64        6.1.0-769885.el7            cloudera-manager                        1.1 G
 cloudera-manager-server            x86_64        6.1.0-769885.el7            cloudera-manager                        8.7 k
Installing for dependencies:
 perl                               x86_64      4:5.16.3-294.el7_6            updates                                 8.0 M
 perl-Carp                          noarch            1.26-244.el7            base                                     19 k
 perl-Encode                        x86_64              2.51-7.el7            base                                    1.5 M
 perl-Exporter                      noarch              5.68-3.el7            base                                     28 k
 perl-File-Path                     noarch              2.09-2.el7            base                                     26 k
 perl-File-Temp                     noarch           0.23.01-3.el7            base                                     56 k
 perl-Filter                        x86_64              1.49-3.el7            base                                     76 k
 perl-Getopt-Long                   noarch              2.40-3.el7            base                                     56 k
 perl-HTTP-Tiny                     noarch             0.033-3.el7            base                                     38 k
 perl-PathTools                                           x86_64                                 3.40-5.el7                                            base                                              82 k

...

Complete!

Déclaration de la version de JAVA dans le fichier de Cloudera Manager.

[root@slv-cl-dev-dlmgr01 ~]# nano /etc/default/cloudera-scm-server
export JAVA_HOME="/usr/java/jdk1.8.0_162"

Préparation base de donnée pour le Cloudera Manager:

[root@cl-dlmgr01 ~]# cd /usr/share/cmf/schema/
[root@cl-dlmgr01 ~]# ./scm_prepare_database.sh mysql -h localhost -u<USER_BDD_MySQL> -p<PASS_BDD_MySQL> --scm-host slv-fr-cis-tst01 scm scm scmAdmin

Démarrage du service:

[root@cl-dlmgr01 ~]# systemctl start cloudera-scm-server

Connexion à l'interface:

Une fois l'installation terminée, il suffira de se rendre sur l'interface du Cloudera manager :

http://<ip_du_server>:7180/

Le login par défaut : (admin/admin)

Activation Post install

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus