Maison >développement back-end >Tutoriel Python >Langage de développement full-stack Big Data – Python

Langage de développement full-stack Big Data – Python

巴扎黑
巴扎黑original
2017-03-29 15:51:101402parcourir

Il y a quelque temps, ThoughtWorks a organisé un événement communautaire à Shenzhen, et il y a eu un discours intitulé « Fullstack JavaScript », qui portait sur l'utilisation de JavaScript pour le développement front-end, côté serveur et même de base de données (MongoDB) uniquement pour les développeurs d'applications Web. doit apprendre une langue, vous pouvez implémenter l’intégralité de l’application.

Inspiré par cela, j'ai découvert que Python peut être qualifié de langage de développement big data full-stack. Parce que Python est un langage très prisé dans les infrastructures cloud, le DevOps, le traitement du Big Data et d'autres domaines.

领域 流行语言
云基础设施 Python, Java, Go
DevOps Python, Shell, Ruby, Go
网络爬虫 Python, PHP, C++
数据处理 Python, R, Scala

Tout comme vous pouvez écrire une application Web complète tant que vous connaissez JavaScript, vous pouvez implémenter une plate-forme complète de traitement de Big Data tant que vous connaissez Python.

Infrastructure cloud

De nos jours, si nous ne prenons pas en charge les plateformes cloud, les données massives ou la mise à l’échelle dynamique, nous n’osons pas dire que nous faisons du big data. Tout au plus, nous osons dire aux autres que nous faisons de la business intelligence (BI).

Les plateformes cloud sont divisées en cloud privé et cloud public. OpenStack, la plate-forme de cloud privé populaire, est écrite en Python. CloudStack, l'ancien poursuivant, a fortement souligné qu'il était écrit en Java et présentait des avantages par rapport à Python lors de son premier lancement. En conséquence, début 2015, Citrix, le fondateur de CloudStack, a annoncé son intention de rejoindre la Fondation OpenStack, et CloudStack était sur le point de prendre fin.

Si vous trouvez cela gênant et ne souhaitez pas créer votre propre cloud privé, utilisez des cloud publics. Qu'il s'agisse d'AWS, GCE, Azure, Alibaba Cloud ou Qingyun, ils fournissent tous des SDK Python. GCE ne fournit que des SDK Python et JavaScript. Qingyun ne fournit que des SDK Python. On peut constater que diverses plateformes cloud attachent une grande importance à Python.

Lorsqu'il s'agit de construction d'infrastructures, il faut mentionner Hadoop. Aujourd'hui, Hadoop n'est plus le premier choix pour le traitement du Big Data car sa vitesse de traitement des données MapReduce n'est pas assez rapide. Cependant, HDFS et Yarn, les deux composants de Hadoop, le sont. de plus en plus populaire. Le langage de développement de Hadoop est Java et il n'existe pas de support officiel pour Python. Cependant, il existe de nombreuses bibliothèques tierces qui encapsulent l'interface API de Hadoop (pydoop, hadoopy, etc.).

Le remplaçant de Hadoop MapReduce est Spark, qui est censé être 100 fois plus rapide. Son langage de développement est Scala, mais il fournit des interfaces de développement pour Scala, Java et Python. Il est vraiment déraisonnable de vouloir plaire à autant de data scientists qui développent. en Python sans prendre en charge Python . Les alternatives HDFS, telles que GlusterFS, Ceph, etc., fournissent toutes directement la prise en charge de Python. En remplacement de Yarn, Mesos est implémenté en C++. En plus de C++, il fournit également des packages de support pour Java et Python.

DevOps

DevOps a un nom chinois, qui s'appelle développement, auto-exploitation et maintenance. À l'ère d'Internet, ce n'est qu'en étant capables de tester rapidement de nouvelles idées et de fournir une valeur commerciale de manière sûre et fiable dans les plus brefs délais que nous pourrons rester compétitifs. La construction/test/déploiement automatisé, la mesure du système et d’autres pratiques techniques préconisées par DevOps sont indispensables à l’ère d’Internet.

La construction automatisée est facile grâce à l'application. S'il s'agit d'une application Python, en raison de l'existence d'outils tels que setuptools, pip, virtualenv, tox, flake8, la construction automatisée est très simple. De plus, comme presque tous les systèmes Linux disposent d’interpréteurs Python intégrés, l’utilisation de Python pour l’automatisation ne nécessite la préinstallation d’aucun logiciel sur le système.

En termes de tests automatisés, le Robot Framework basé sur Python est le framework de tests automatisés préféré pour les applications d'entreprise, et il n'a rien à voir avec le langage. Cucumber a également de nombreux partisans, et son homologue Python, Lettuce, peut faire exactement la même chose. Locust a également commencé à recevoir de plus en plus d'attention dans le domaine des tests de performances automatisés.

Les outils de gestion de configuration automatisée, tels que Chef et Puppet, sont développés en Ruby et maintiennent toujours une forte dynamique. Cependant, la nouvelle génération d'Ansible et de SaltStack - tous deux développés en Python - sont plus légères que les deux précédentes et sont accueillies par de plus en plus de développeurs, ce qui a commencé à créer beaucoup de pression sur leurs prédécesseurs.

En termes de surveillance et de mesure du système, Nagios traditionnel est progressivement en déclin, les nouveaux arrivants comme Sensu sont bien accueillis et New Relic sous forme de services cloud est devenu la norme pour les startups. Aucun d'entre eux n'est directement implémenté via Python, mais Python en a besoin. pour être connecté à ces outils, pas difficile.

En plus des outils ci-dessus, les plates-formes PaaS basées sur Python qui fournissent des fonctions DevOps complètes, telles que Cloudify et Deis, ne sont pas encore devenues populaires, mais elles ont déjà reçu beaucoup d'attention.

Robot d'exploration Web

D’où viennent les données du big data ? À l’exception de certaines entreprises qui ont la capacité de générer elles-mêmes de grandes quantités de données, elles doivent la plupart du temps s’appuyer sur des robots d’exploration pour capturer les données Internet à des fins d’analyse.

Les robots d'exploration Web sont les points forts traditionnels de Python. Le framework de robots d'exploration le plus populaire Scrapy, le kit d'outils HTTP urlib2, l'outil d'analyse HTML beautifulsoup, l'analyseur XML lxml, etc. sont toutes des bibliothèques de classes qui peuvent être autonomes.

Cependant, les robots d’exploration Web ne se limitent pas à ouvrir des pages Web et à analyser du HTML. Un robot d'exploration efficace doit être capable de prendre en charge un grand nombre d'opérations simultanées flexibles et souvent d'explorer des milliers, voire des dizaines de milliers de pages Web en même temps. La méthode traditionnelle du pool de threads gaspille beaucoup de ressources. de threads atteint des milliers, les ressources système sont essentiellement gaspillées. Étant donné que Python peut bien prendre en charge les opérations de coroutine, de nombreuses bibliothèques de concurrence ont été développées sur cette base, telles que Gevent, Eventlet et des frameworks de tâches distribuées tels que Celery. ZeroMQ, considéré comme plus efficace que AMQP, a également été le premier à proposer une version Python. Grâce à la prise en charge d’une simultanéité élevée, les robots d’exploration Web peuvent véritablement atteindre l’échelle du Big Data.

Les données capturées nécessitent un traitement de segmentation de mots, et Python n'est pas inférieur à cet égard. Le célèbre package de traitement du langage naturel NLTK et Jieba, spécialisé dans la segmentation de mots chinois, sont tous des outils puissants pour la segmentation de mots.

Traitement des données

Tout est prêt, il ne nous manque plus que le vent d'est. Ce vent d'est est l'algorithme de traitement des données. De la théorie statistique à l’exploration de données, en passant par l’apprentissage automatique et la théorie de l’apprentissage profond proposée ces dernières années, la science des données est à une époque où cent fleurs s’épanouissent. Quelle programmation les data scientists utilisent-ils ?

S'il s'agit du domaine de la recherche théorique, le langage R est peut-être le plus populaire parmi les data scientists, mais les problèmes du langage R sont également évidents. Parce que les statisticiens ont créé le langage R, sa syntaxe est légèrement étrange. De plus, si le langage R veut réaliser un système distribué à grande échelle, il faudra encore beaucoup de temps pour s'engager sur la voie de l'ingénierie. Par conséquent, de nombreuses entreprises utilisent le langage R pour tester des prototypes. Une fois l’algorithme déterminé, il est traduit en langage d’ingénierie.

Python est également l’un des langages préférés des data scientists. Contrairement au langage R, Python lui-même est un langage d'ingénierie. Les algorithmes implémentés par les data scientists en Python peuvent être directement utilisés dans les produits, ce qui est très utile pour les startups Big Data afin de réduire les coûts. Officiellement en raison de l'amour des data scientists pour Python et R, Spark propose un très bon support pour ces deux langages afin de plaire aux data scientists.

Python possède de nombreuses bibliothèques de classes liées au traitement des données. Les bibliothèques de calcul scientifique haute performance NumPy et SciPy ont jeté de très bonnes bases pour d'autres algorithmes avancés, matploglib rend le dessin Python aussi simple que Matlab. Scikit-learn et Milk implémentent de nombreux algorithmes d'apprentissage automatique, Pylearn2 mis en œuvre sur la base de ces deux bibliothèques est un membre important du domaine de l'apprentissage profond. Theano utilise l'accélération GPU pour réaliser des calculs symboliques mathématiques et des calculs matriciels multidimensionnels hautes performances. Bien sûr, il existe également Pandas, une bibliothèque de traitement de Big Data largement utilisée dans le domaine de l'ingénierie. Sa conception DataFrame a été empruntée au langage R et a ensuite inspiré le projet Spark pour implémenter un mécanisme similaire.

À propos, il existe également iPython. Cet outil est si utile que je l'ai presque considéré comme une bibliothèque standard et j'ai oublié de le présenter. iPython est un environnement d'exécution Python interactif qui vous permet de voir les résultats de chaque morceau de code Python en temps réel. Par défaut, iPython s'exécute sur la ligne de commande et vous pouvez exécuter ipython notebook pour l'exécuter sur la page Web. Les figures dessinées avec matplotlib peuvent être directement affichées intégrées dans iPython Notebook.
Les fichiers notebook d'iPython Notebook peuvent être partagés avec d'autres personnes, afin que d'autres puissent reproduire les résultats de votre travail dans leur propre environnement ; si l'autre partie ne dispose pas d'un environnement en cours d'exécution, ils peuvent également être directement convertis en HTML ou PDF.

Pourquoi Python

C’est précisément parce que les ingénieurs en développement d’applications, les ingénieurs d’exploitation et de maintenance et les data scientists aiment tous Python que Python est devenu un langage de développement full-stack pour les systèmes Big Data.

Pour les ingénieurs de développement, l'élégance et la simplicité de Python sont sans aucun doute la plus grande attraction. Dans l'environnement interactif Python, exécutez import this et lisez le Zen de Python, et vous comprendrez pourquoi Python est si attrayant. La communauté Python a toujours été très dynamique. Contrairement à la croissance explosive des progiciels dans la communauté NodeJS, le taux de croissance des progiciels Python a été relativement stable et la qualité des progiciels est également relativement élevée. De nombreuses personnes reprochent à Python d'avoir des exigences trop strictes en matière d'espace, mais c'est précisément à cause de cette exigence que Python a un avantage sur les autres langages lors de la réalisation de projets à grande échelle. Les projets OpenStack totalisent plus de 2 millions de lignes de code pour le prouver.

Pour les ingénieurs d’exploitation et de maintenance, le plus grand avantage de Python est que presque toutes les distributions Linux disposent d’interpréteurs Python intégrés. Bien que Shell soit puissant, sa syntaxe n'est pas assez élégante et l'écriture de tâches plus complexes sera pénible. Utiliser Python pour remplacer Shell pour effectuer certaines tâches complexes est une libération pour le personnel d'exploitation et de maintenance.

Pour les data scientists, Python est simple mais puissant. Par rapport à C/C++, il n'est pas nécessaire de faire beaucoup de travail de bas niveau et la vérification du modèle peut être effectuée rapidement ; par rapport à Java, Python a une syntaxe concise et une forte capacité d'expression, et le même travail ne nécessite que 1/3 ; du code ; par rapport à Matlab et Octave, la maturité technique de Python est plus élevée. Plus d'un expert en programmation a déclaré que Python est le langage le plus approprié à utiliser comme cours de programmation informatique universitaire - le cours d'introduction à l'informatique du MIT utilise Python - parce que Python peut permettre aux gens d'apprendre la chose la plus importante en matière de programmation - comment résoudre les problèmes.

À propos, Microsoft a participé à PyCon 2015 et a fait une annonce très médiatisée pour améliorer l'expérience de programmation Python sous Windows, notamment Visual Studio prenant en charge Python, optimisant la compilation des extensions Python C sous Windows, etc. Imaginez un scénario futur dans lequel Python deviendrait le composant par défaut de Windows.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn