Utilisation de Cloudera Deploy pour installer Cloudera Data Platform (CDP) Private Cloud
23 juil. 2021
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
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 :
Dans cet exemple de cas, le chemin du socket est “/run/user/1000/keyring/ssh”.