Utilisation de Cloudera Deploy pour installer Cloudera Data Platform (CDP) Private Cloud

Utilisation de Cloudera Deploy pour installer Cloudera Data Platform (CDP) Private Cloud

HOFFMANN Alexander

By HOFFMANN Alexander

23 juil. 2021

Suite à notre récente présentation de CDP, passons désormais au déploiement CDP private Cloud sur votre infrastructure locale. Le deploiement est entièrement automatisé avec les cookbooks Ansible édités par Cloudera et il est reproductible sur votre poste local avec Vagrant.

Cloudera Data Platform (CDP) est une solution cloud de données s’adressant aux entreprises. Il fournit une puissante plateforme Big Data, une sécurité intégrée avec une conformité automatique et une gouvernance de la protection des données, ainsi que des analyses basées sur des politiques et des métadonnées pour les utilisateurs finaux.

Le déploiement d’un cluster CDP Private Cloud n’est pas une tâche simple. Par conséquent, nous présentons un moyen de mettre en place un cluster local fonctionnel en quelques étapes. Nous allons déployer un cluster minimal composé de deux nœuds, un master et un worker. Dans notre cluster, nous exécuterons les services suivants : HDFS, YARN et Zookeeper.

Prérequis

Vous pouvez utiliser l’infrastructure locale de votre choix pour déployer CDP Private Cloud. Dans ce tutoriel, nous utiliserons Vagrant et VirtualBox pour déployer rapidement deux machines virtuelles qui serviront de nœuds du cluster.

VirtualBox

VirtualBox est une application de virtualisation multiplateforme. Téléchargez la dernière version de VirtualBox.

Vagrant

Vagrant est un outil de création et de gestion d’environnements de machines virtuelles. Téléchargez la dernière version de Vagrant.

Une fois Vagrant installé, vous devez installer un plugin qui installe automatiquement les VirtualBox Guest Additions de l’hôte sur le système invité. Ouvrez un terminal et tapez la commande suivante :

vagrant plugin install vagrant-vbguest

Docker

Cloudera Deploy est exécuté à partir d’un conteneur Docker. Suivez les instructions officielles pour installer Docker sur votre machine :

Démarrage

Déployez vos nœuds

Un Vagrantfile est utilisé pour configurer et provisionner des machines virtuelles. Assurez-vous d’avoir une clé ssh sur votre machine hôte avant de continuer. Si aucune n’est fournie, le démarrage rapide (section suivante) générera une paire de clés SSH. Créez un nouveau fichier appelé « Vagrantfile » dans votre répertoire de travail et collez le code suivant :

box = "centos/7"

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.ssh.insert_key = false
  config.vm.box_check_update = false
  ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
  config.vm.provision "Add ssh_pub_key", type: "shell" do |s|
    s.inline = <<-SHELL
      echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
      sudo mkdir -p /root/.ssh/
      sudo echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
      sudo touch /home/vagrant/.ssh/config
      sudo chmod 600 /home/vagrant/.ssh/config
      sudo chown vagrant /home/vagrant/.ssh/config
    SHELL
  end
  config.vm.define :master01 do |node|
    node.vm.box = box
    node.vm.network :private_network, ip: "10.10.10.11"
    node.vm.network :forwarded_port, guest: 22, host: 24011, auto_correct: true
    node.vm.network :forwarded_port, guest: 8080, host: 8080, auto_correct: true
    node.vm.provider "virtualbox" do |d|
      d.memory = 8192
    end
    node.vm.hostname = "master01.nikita.local"
  end
  config.vm.define :worker01 do |node|
    node.vm.box = box
    node.vm.network :private_network, ip: "10.10.10.16"
    node.vm.network :forwarded_port, guest: 22, host: 24015, auto_correct: true
    node.vm.provider "virtualbox" do |d|
      d.customize ["modifyvm", :id, "--memory", 2048]
      d.customize ["modifyvm", :id, "--cpus", 2]
      d.customize ["modifyvm", :id, "--ioapic", "on"]
    end
    node.vm.hostname = "worker01.nikita.local"
  end
end

The master01 node has the master01.nikita.local FQDN and the 10.10.10.11 IP. The worker01 node has the master01.nikita.local FQDN and the 10.10.10.16 IP.

Exécutez la commande suivante :

vagrant up

Vagrant crée deux machines virtuelles connectées qui constituent un cluster.

Modifiez votre fichier local /etc/hosts en ajoutant les lignes suivantes :

10.10.10.11 master01.nikita.local
10.10.10.16 worker01.nikita.local

Connectez-vous maintenant à master01 en utilisant ssh :

vagrant ssh master01

Ajoutez ou modifiez les lignes suivantes dans le fichier /etc/hosts :

10.10.10.11 master01.nikita.local
10.10.10.16 worker01.nikita.local

Répétez l’opération en vous connectant à worker01.

Téléchargez le script de démarrage rapide

Le script quickstart.sh configurera le conteneur Docker avec les dépendances logicielles dont vous avez besoin pour le déploiement. Téléchargez-le sur votre machine hôte à l’aide de la commande suivante :

curl https://raw.githubusercontent.com/cloudera-labs/cloudera-deploy/main/quickstart.sh -o quickstart.sh

Exécutez le script de démarrage rapide

Le script préparera et exécutera Ansible Runner dans un conteneur Docker.

chmod +x quickstart.sh
./quickstart.sh

Vous devriez voir l’invite orange cldr {build}-{version} #>. Vous êtes maintenant à l’intérieur du conteneur.

Créer un fichier d’inventaire

Naviguez jusqu’au dossier cloudera-deploy :

cd /opt/cloudera-deploy/

Créez un nouveau fichier appelé inventory_static.ini qui contient vos hôtes :

[cloudera_manager]
master01.nikita.local

[cluster_master_nodes]
master01.nikita.local host_template=Master1

[cluster_worker_nodes]
worker01.nikita.local

[cluster_worker_nodes:vars]
host_template=Workers

[cluster:children]
cluster_master_nodes
cluster_worker_nodes

[db_server]
master01.nikita.local

[deployment:children]
cluster
db_server

[deployment:vars]
# Ansible s'en remettra à l'agent SSH en cours d'exécution pour les clés pertinentes
# Définissez ce qui suit pour coder en dur la clé privée SSH pour les instances
# ansible_ssh_private_key_file=~/.ssh/mykey.pem  
ansible_user=vagrant

Configurez le cluster

Définissez use_download_mirror sur no dans le fichier de définition situé dans examples/sandbox/definition.yml pour éviter de déclencher un déploiement qui repose sur les services de cloud public (AWS, Google Cloud, etc.).

Exécutez le playbook principal

ansible-playbook /opt/cloudera-deploy/main.yml -e "definition_path=examples/sandbox" -e "profile=/opt/cloudera-deploy/profile.yml" -i /opt/cloudera-deploy/inventory_static.ini -t default_cluster

La commande crée un cluster de base CDP à l’aide de votre infrastructure locale. Plus précisément, il déploie un cluster avec HDFS, YARN et Zookeeper.

Conclusion

Cloudera Data Platform peut être déployé de différentes manières, ce qui en fait une option polyvalente lors de la recherche d’une plate-forme de données. Dans cet article, nous avons décrit comment déployer un cluster CDP Private Cloud avec les scripts de déploiement officiels de Cloudera. Cela permet à l’utilisateur de tester la plate-forme localement et de prendre des décisions commerciales pertinentes. À partir de là, vous pouvez ajouter des services à votre cluster ainsi que configurer les composants intégrés de CDP Private Cloud.

Troubleshoot

Si vous rencontrez des problèmes avec SSH entre l’hôte et les deux machines virtuelles, vous pouvez forcer l’installation de Virtualbox Guest Additions pour master01 et worker01 en ajoutant la ligne suivante à leurs configurations individuelles dans Vagrantfile :

node.vbguest.installer_options = { allow_kernel_upgrade: true }

SSH_AUTH_SOCK

Le script quickstart.sh peut se terminer brusquement s’il détecte que le chemin SSH_AUTH_SOCK n’est pas correctement défini ou vide. Si vous rencontrez cette erreur, exécutez d’abord la commande suivante :

echo $SSH_AUTH_SOCK

Cela renvoie le chemin d’accès au socket unix utilisé par ssh-agent, qui doit être ajouté en tant que variable SSH_AUTH_SOCK au script de démarrage rapide pour que ssh fonctionne correctement ; votre script de démarrage rapide devrait maintenant ressembler à ceci :

SSH_AUTH_SOCK variable in quickstart.sh

Dans cet exemple de cas, le chemin du socket est “/run/user/1000/keyring/ssh”.

Canada - Maroc - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science 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.