Ce tutoriel vous explique pas à pas comment configurer ** PySpark ** sur une instance ** Alibaba Cloud ** ECS exécutant le système d'exploitation CentOS 7.x.
Avant de commencer, voici les ressources dont vous avez besoin pour configurer un nœud PySpark sur Alibaba Cloud:
1, 1 instance Alibaba Cloud ECS 2, un ElP. Vous pouvez également en avoir besoin en fonction de vos besoins. Par exemple, vous pouvez avoir besoin de stockage supplémentaire, d'instances SLB ou d'autres composants. En particulier, ce didacticiel utilise les ressources minimales requises, mais avec une instance ECS et EIP en tant que nœuds maître et esclave. Comprenez que les techniques décrites dans le didacticiel peuvent être facilement étendues à plusieurs configurations de nœuds maîtres et esclaves sur différentes instances ECS.
En dehors de ces ressources, vous devez installer les éléments suivants: 1、Python 2、Java 3, étincelle Si Python est déjà installé et que vous disposez de ressources cloud, vous pouvez passer à la section 3.
Alibaba Cloud Elastic Computing Service (ECS) est un environnement informatique virtuel avec des fonctionnalités élastiques fournies par Alibaba Cloud. .. ECS contient des composants informatiques de base tels que le processeur et la mémoire. Les utilisateurs peuvent sélectionner une instance d'ECS avec le cœur de processeur approprié, la mémoire, le disque système, le disque de données supplémentaire (en option) et la capacité réseau selon les besoins (optimisation des calculs, optimisation des E / S). ).
L'adresse IP Elastic Cloud Alibaba (EIP) est une adresse IP publique indépendante de l'instance fournie par Alibaba Cloud. Il peut être acheté indépendamment et associé à l'ECS approprié ou à une autre ressource cloud (SLB, passerelle NAT).
Si l'ECS n'a pas d'adresse IP publique, vous pouvez la sélectionner et la lier à l'ECS, mais dans ce didacticiel, l'adresse IP publique peut également être utilisée pour télécharger des packages associés à partir d'Internet.
Avant de pouvoir configurer Python sur le cloud Alibaba, vous devez acheter une instance ECS cloud. En fonction de vos besoins, vous pouvez choisir PAYG (mode Pay as you go) sans engagement à long terme, ou vous pouvez choisir le mode abonnement et engager d'abord votre utilisation pour économiser de l'argent. ..
Sélectionnez une instance ECS avec la mémoire, la CPU et une capacité de stockage système suffisantes. Nous vous recommandons d'utiliser au moins 2vCPU, 4 Go de mémoire et 30 Go de disque système Ultracloud pour évoluer selon les besoins.
Par défaut, vous obtenez une adresse IP privée, mais pour connecter votre instance ECS à Internet, vous avez besoin d'une adresse IP publique Elastic qui facture le trafic. Cela est nécessaire pour télécharger les packages associés sur votre instance ECS. Si vous n'avez pas obtenu de bande passante réseau avec ECS, vous devrez acheter un EIP et le lier à votre instance. Par défaut, le groupe de sécurité ECS autorise le trafic Internet. Pour protéger votre instance ECS, vous pouvez soit dissocier l'EIP après avoir téléchargé les packages requis, soit utiliser un groupe de sécurité pour autoriser uniquement le trafic pertinent à protéger l'ECS.
** Qu'est-ce que Python? ** ** Python est un langage de programmation puissant, polyvalent et de haut niveau, facile à interpréter (lisibilité du code) et à comprendre. Est connu pour. En outre, son énorme communauté de soutien et sa vaste bibliothèque en font un choix populaire parmi les scientifiques des données, les développeurs de Big Data et les praticiens de l'apprentissage automatique. Des statistiques à l'apprentissage en profondeur, vous pouvez trouver des bibliothèques Python.
Si vous vous connectez avec succès, l'écran suivant s'affiche.
yum install gcc openssl-devel bzip2-devel libffi-devel
** Remarque **: Pour éviter d'écrire des déclarations aussi longues à l'invite, vous pouvez copier la commande ci-dessus et la coller dans votre instance ECS à l'aide des fonctionnalités de la console d'Alibaba Cloud. En haut à droite se trouve un bouton appelé "Entrer les commandes de copie", qui colle les instructions que vous copiez sur votre machine dans votre instance ECS.
wget
. Dans ce guide, le répertoire pour télécharger le package python est changé en / usr / src
.Plus précisément, exécutez la commande suivante.
cd /usr/src
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
Ensuite, utilisez tar pour décompresser le fichier et exécutez la commande tar xzf Python-3.7.2.tgz
.
cd Python-3.7.2
./configure --enable-optimizations
Lorsque vous avez terminé, exécutez la commande make alt install
. Cette commande installe Python et ses dépendances sur votre système. Si la commande est exécutée normalement, un message comme l'écran ci-dessous sera affiché. La sortie du message final sera "Installation réussie".
(Facultatif) Exécutez la commande rm / usr / src / Python-3.7.2.tgz
pour supprimer le package python téléchargé.
Demandez une version de python et assurez-vous que python est correctement installé. Exécutez la commande "python3.7 -V".
Dans l'exemple ci-dessus, les versions Python 2.x et Python 3.x sont installées et peuvent être lancées avec différentes commandes. Exécuter simplement python "exécute Python2.x, et exécuter" python3.7 "exécute Python3.x.
Spark est un framework de calcul de cluster open source. En d'autres termes, il s'agit d'un moteur de traitement de données distribué résilient. Présenté comme une version améliorée de Hadoop avec des fonctionnalités supplémentaires telles que le traitement en mémoire, le traitement de flux et une faible latence. Spark est écrit en Scala, mais il prend également en charge d'autres langages tels que Java, Python et R. Les principales utilisations de Spark sont l'exécution ETL et SQL pour les grands ensembles de données, l'analyse en continu et l'apprentissage automatique pour le Big Data. Les principales offres et composants de Spark sont les suivants. 1, ** Spark SQL. SQL **: composant Spark pour le traitement des données à l'aide de la syntaxe SQL. 2, ** Spark Streaming **: bibliothèque principale pour le traitement et la gestion des données en streaming. 3, ** MLlib (Machine Learning Library) **: Une bibliothèque spécifique pour le clustering et l'analyse prédictive des données et l'application d'algorithmes d'apprentissage automatique de base et d'exploration de données. 4, ** GraphX **: une bibliothèque pour travailler avec des réseaux et des graphiques.
PySpark est une combinaison d'Apache Spark et de Python. L'intégration des deux plates-formes vous permet de profiter de la simplicité du langage Python pour travailler avec du Big Data tout en interagissant avec de puissants composants Spark (abordés dans la section 2).
Exécutons la commande Java -version
pour voir si Java est installé.
Si Java n'est pas installé, installez Java pour configurer Spark comme à l'étape 2, sinon passez à l'étape 4.
sudo yum update
sudo yum install java-1.8.0-openjdk-headless
Tapez «y» et appuyez sur ** Entrée ** pour installer.
Exécutez la commande java -version
pour confirmer que l'installation a réussi.
Exécutez la commande cd / opt
pour changer de répertoire et exécutez la commande suivante pour télécharger le binaire Spark.
wget https://www-eu.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
Si le lien est rompu, le [site Apache] suivant (https://www.apache.org/dyn/closer.lua/spark/spark-2.4.0/?spm=a2c65.11461447.0.0.1e323c93lqpS9v) Vérifiez si le nouveau lien a été mis à jour.
Exécutez la commande tar -xzf spark-2.4.0-bin-hadoop2.7.tgz
pour entrer le binaire.
Entrez la commande cd spark-2.4.0-bin-hadoop2.7
.
Considérez un guide de configuration de base pour Spark.
Vous êtes maintenant prêt à configurer votre cluster Spark basé sur les scripts de déploiement shell et Hadoop situés dans le répertoire sparks / sbin
.
-- sbin / start-master.sh
: Démarre l'instance maître sur la machine sur laquelle le script sera exécuté.
sbin / start-slaves.sh:
conf / slaves`.--sbin / start-slave.sh
: Démarre une instance esclave sur la machine sur laquelle le script sera exécuté.
--sbin / start-all.sh.
: Démarre à la fois le maître et de nombreux esclaves comme décrit ci-dessus.
--sbin / stop-master.sh
: Arrête le master démarré par le script sbin / start-master.sh.
--sbin / stop-slaves.sh
: conf / slaves
Arrête toutes les instances d'esclave sur la machine spécifiée dans le fichier.
--sbin / stop-all.sh
: Arrête le maître et l'esclave comme ci-dessus.
Pour définir le nœud ECS comme maître, exécutez la commande sbin / start-master.sh
ou l'un des scripts ci-dessous.
cat /opt/spark-2.4.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-centos.out
L'URL principale est «spark: // centos: 7077».
9, configurez maintenant le nœud esclave (vous pouvez exécuter n'importe quel nombre de nœuds esclaves et vous connecter au nœud maître)
C'est pour démarrer un processus esclave sur le deuxième nœud tout en restant dans le répertoire spark.
./sbin/start-slave.sh <master-spark-URL>
Dans mon cas:
./sbin/start-slave.sh spark://centos:7077
Vous pouvez maintenant rouvrir le journal principal pour voir s'il est connecté.
10, le travailleur a été enregistré.
Il est maintenant temps de mettre à jour le répertoire du chemin.
export SPARK_HOME=/opt/spark-2.4.0-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
11, maintenant exécutons Spark et assurez-vous qu'il est parfaitement installé.
bin/pyspark
Vous pouvez quitter Spark en entrant la commande ʻexit () `.
12, Ceci complète les paramètres Python et Spark. Tout ce dont vous avez besoin pour utiliser l'API Python sur Spark est pyspark
. PySpark peut être téléchargé et installé à partir du référentiel PyPi.
Exécutez la commande pip install pyspark
.
Ici, nous utilisons la bibliothèque pyspark pour créer un fichier example.py de base qui exploite Spark avec l'API Python.
Entrez la commande python
.
Pour voir comment l'API Python exploite Spark, exécutez la ligne de commande suivante par ligne:
from pyspark import SparkContext
outFile = "file:///opt/spark-2.4.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-centos.out"
sc = SparkContext("local", "example app")
outData = sc.textFile(outFile).cache()
numAs = logData.filter(lambda s: 'a' in s).count()
print("Lines with a: %i " % (numAs))
Recommended Posts