¿Por qué digo que Python es un lenguaje de desarrollo completo para big data? ¿Cómo convertirse en analista de datos?
Así como puedes escribir una aplicación web completa siempre que conozcas JavaScript, puedes implementar una plataforma completa de procesamiento de big data siempre que conozcas Python.
Infraestructura en la nube
En estos días, no admite plataformas en la nube, datos masivos o escalado dinámico. No me atrevo a decir que estoy haciendo big data, como mucho. decirle a la gente que estoy haciendo inteligencia de negocios (BI).
Las plataformas en la nube se dividen en nubes privadas y nubes públicas. OpenStack, la popular plataforma de nube privada, está escrita en Python. CloudStack, el antiguo perseguidor, enfatizó fuertemente que estaba escrito en Java y tenía ventajas sobre Python cuando se lanzó por primera vez. Como resultado, para colmo de males, a principios de 2015, Citrix, el fundador de CloudStack, anunció que se uniría a la Fundación OpenStack, y CloudStack estaba a punto de llegar a su fin.
Si no desea crear una nube privada usted mismo, utilice nubes públicas. Ya sea AWS, GCE, Azure, Alibaba Cloud o Qingyun, todos proporcionan SDK de Python, entre los cuales GCE solo proporciona. SDK de Python y JavaScript, mientras que Qingyun solo proporciona SDK de Python. Se puede ver que varias plataformas en la nube conceden gran importancia a Python.
Cuando se trata de construcción de infraestructura, tenemos que mencionar a Hadoop. Hoy en día, Hadoop ya no es la primera opción para el procesamiento de big data porque su velocidad de procesamiento de datos MapReduce no es lo suficientemente rápida, pero
<. p>HDFS y Yarn, dos componentes de Hadoop, se están volviendo cada vez más populares. El lenguaje de desarrollo de Hadoop es Java y no existe soporte oficial para Python. Sin embargo, existen muchas bibliotecas de terceros que encapsulan la interfaz API de Hadoop (pydoop, hadoopy, etc.).El reemplazo de Hadoop MapReduce es Spark, que se dice que es 100 veces más rápido. Su lenguaje de desarrollo es Scala, pero proporciona interfaces de desarrollo para Scala, Java y Python. Quiere complacer a muchos datos. Los científicos que desarrollan en Python no son compatibles con Python, lo cual es realmente injustificable. Las alternativas HDFS, como GlusterFS, Ceph, etc., brindan soporte directo a Python. El reemplazo de Yarn, Mesos, es una implementación de C++ que proporciona paquetes de soporte para Java y Python además de C++.
DevOps
DevOps tiene un nombre chino, llamado desarrollo y autooperación y mantenimiento. En la era de Internet, sólo si somos capaces de probar rápidamente nuevas ideas y ofrecer valor empresarial de forma segura y fiable lo antes posible podremos seguir siendo competitivos. La construcción/prueba/implementación automatizada y la medición del sistema y otras prácticas técnicas defendidas por DevOps son indispensables en la era de Internet.
La construcción automática es fácil gracias a la aplicación. Si se trata de una aplicación Python, la construcción automática es muy sencilla gracias a la existencia de herramientas como setuptools, pip, virtualenv, tox,
En términos de pruebas automatizadas, Robot Framework basado en Python es el marco de pruebas automatizadas favorito para aplicaciones de nivel empresarial y es independiente del lenguaje. Cucumber también tiene muchos partidarios, y su contraparte de Python, Lettuce, puede hacer exactamente lo mismo. Locust también ha comenzado a recibir cada vez más atención en las pruebas de rendimiento automatizadas.
Las herramientas de gestión de configuración automatizada, como Chef y Puppet, están desarrolladas en Ruby y aún mantienen un fuerte impulso. Sin embargo, la nueva generación de Ansible y SaltStack -ambos desarrollados en Python- son más ligeras que las dos anteriores y son bien recibidas por cada vez más desarrolladores, lo que ha comenzado a crear mucha presión sobre sus predecesores.
En términos de monitoreo y medición del sistema, los Nagios tradicionales están disminuyendo gradualmente, las nuevas empresas como Sensu son bien recibidas y New Relic en forma de servicios en la nube se ha convertido en el estándar para las nuevas empresas. Implementado a través de Python, sin embargo, no es difícil para Python acceder a estas herramientas.
Además de las herramientas anteriores, las plataformas PaaS basadas en Python que proporcionan funciones completas de DevOps, como Cloudify y Deis, aún no se han vuelto populares, pero ya han recibido mucha atención.
Rastreador web
¿De dónde provienen los datos del big data? A excepción de algunas empresas que tienen la capacidad de generar grandes cantidades de datos por sí mismas, la mayoría de las veces necesitan confiar en rastreadores para capturar datos de Internet para su análisis.
Los rastreadores web son las áreas fuertes tradicionales de Python: el marco de rastreo más popular, Scrapy, el kit de herramientas HTTP urlib2, la herramienta de análisis HTML beautifulsoup, el analizador XML lxml, etc., son todas bibliotecas de clases que pueden ser independientes.
Sin embargo, los rastreadores web no son tan simples como abrir páginas web y analizar HTML. Un rastreador eficiente debe poder admitir una gran cantidad de operaciones concurrentes flexibles y, a menudo, puede rastrear miles o incluso decenas de miles de páginas web al mismo tiempo. El método tradicional de grupo de subprocesos desperdicia muchos recursos. El número de subprocesos llega a miles, los recursos del sistema básicamente se desperdician en la programación de subprocesos. Debido a que Python puede admitir operaciones de rutina, se han desarrollado muchas bibliotecas de concurrencia basadas en esto, como Gevent, Eventlet y marcos de tareas distribuidas como Celery. ZeroMQ, que se considera más eficiente que AMQP, también fue el primero en proporcionar una versión de Python. Con soporte para alta concurrencia, los rastreadores web realmente pueden alcanzar la escala de big data.
Los datos capturados necesitan procesamiento de segmentación de palabras, y Python no es inferior en este sentido. El famoso paquete de procesamiento de lenguaje natural NLTK y Jieba, que se especializa en segmentación de palabras chinas, son herramientas poderosas para la segmentación de palabras. .
Procesamiento de datos
Todo está listo, sólo necesitamos viento del este. Este viento del este es el algoritmo de procesamiento de datos. Desde la teoría estadística hasta la minería de datos, el aprendizaje automático y la teoría del aprendizaje profundo propuesta en los últimos años, la ciencia de datos se encuentra en una era en la que florecen cien flores. ¿Qué programación utilizan los científicos de datos?
Si es en el campo de la investigación teórica, el lenguaje R puede ser el más popular entre los científicos de datos, pero los problemas con el lenguaje R también son obvios. Debido a que los estadísticos crearon el lenguaje R, su sintaxis es. un poco extraño. Además
Si el lenguaje R quiere implementar un sistema distribuido a gran escala, aún tomará mucho tiempo emprender el camino de la ingeniería. Por lo tanto, muchas empresas utilizan el lenguaje R para probar prototipos. Una vez determinado el algoritmo, lo traducen al lenguaje de ingeniería.
Python es también uno de los lenguajes favoritos de los científicos de datos. A diferencia del lenguaje R, Python en sí es un lenguaje de ingeniería. Los algoritmos implementados por los científicos de datos en Python se pueden usar directamente en productos, lo que es muy útil para que las empresas emergentes de big data ahorren costos. Oficialmente debido al amor de los científicos de datos por Python y R, Spark proporciona un muy buen soporte para estos dos lenguajes para complacer a los científicos de datos
.
Python tiene muchas bibliotecas relacionadas con el procesamiento de datos. Las bibliotecas de computación científica de alto rendimiento NumPy y SciPy han sentado una muy buena base para otros algoritmos avanzados. Matploglib hace que dibujar en Python sea tan fácil como Matlab. Scikit-learn y Milk implementan muchos algoritmos de aprendizaje automático. Pylearn2 implementado en base a estas dos bibliotecas es un miembro importante del campo del aprendizaje profundo. Theano utiliza la aceleración de GPU para lograr cálculos simbólicos matemáticos de alto rendimiento y cálculos matriciales multidimensionales. Por supuesto, también está Pandas, una biblioteca de procesamiento de big data que se ha utilizado ampliamente en el campo de la ingeniería. Su diseño DataFrame se tomó prestado del lenguaje R y luego inspiró el proyecto Spark para implementar un mecanismo similar.
Por cierto, también existe iPython. Esta herramienta es tan útil que casi la considero una biblioteca estándar y me olvido de presentarla.
iPython es un entorno de ejecución interactivo de Python que le permite ver los resultados de cada fragmento de código Python en tiempo real. De forma predeterminada, iPython se ejecuta en la línea de comandos y puede ejecutar ipython notebook para ejecutarlo en una página web. Las figuras dibujadas con matplotlib se pueden mostrar directamente integradas en iPython Notebook.
Los archivos del cuaderno de iPython Notebook se pueden compartir con otros, para que otros puedan reproducir los resultados de su trabajo en su propio entorno, si la otra parte no tiene un entorno en ejecución, también se puede convertir directamente a él; HTML o PDF.
Por qué Python
Precisamente porque a los ingenieros de desarrollo de aplicaciones, ingenieros de operación y mantenimiento y científicos de datos les gusta Python, Python se ha convertido en un lenguaje de desarrollo completo para sistemas de big data.
Para los ingenieros de desarrollo, la elegancia y la simplicidad de Python son sin duda el mayor atractivo en el entorno interactivo de Python. Ejecute import this y lea el Zen de Python. Python es muy atractivo. La comunidad Python siempre ha sido muy dinámica. A diferencia del crecimiento explosivo de los paquetes de software en la comunidad NodeJS, la tasa de crecimiento de los paquetes de software de Python ha sido relativamente estable y la calidad de los paquetes de software también es relativamente alta. Mucha gente critica a Python por tener requisitos demasiado estrictos sobre los espacios, pero es precisamente por este requisito que Python tiene una ventaja sobre otros lenguajes a la hora de realizar proyectos a gran escala. El proyecto OpenStack tiene un total de más de 2 millones de líneas de código, lo que lo demuestra.
Para los ingenieros de operación y mantenimiento, la mayor ventaja de Python es que casi todas las distribuciones de Linux tienen intérpretes de Python integrados. Aunque Shell es poderoso, su sintaxis no es lo suficientemente elegante y será complicado escribir tareas más complejas. Usar Python para reemplazar Shell y realizar algunas tareas complejas es una liberación para el personal de operación y mantenimiento.
Para los científicos de datos, Python es simple pero poderoso. En comparación con C/C++, no es necesario realizar mucho trabajo de bajo nivel y la verificación del modelo se puede realizar rápidamente. En comparación con Java, Python tiene una sintaxis simple y una gran expresividad, y el mismo trabajo solo requiere 1/3 de; el código; En comparación con Matlab y Octave, la madurez de ingeniería de Python es mayor. Más de un gurú de la programación ha expresado que Python es el lenguaje más adecuado para usar como curso universitario de programación en informática (los cursos de introducción a la informática del MIT utilizan Python) porque Python permite a las personas aprender los aspectos más básicos de la programación. p>
Cómo solucionar el problema.