>  기사  >  백엔드 개발  >  빅데이터 풀스택 개발 언어 – Python

빅데이터 풀스택 개발 언어 – Python

巴扎黑
巴扎黑원래의
2017-03-29 15:51:101367검색

얼마 전 ThoughtWorks가 심천에서 커뮤니티 이벤트를 열었는데, 프론트엔드, 서버사이드, 심지어 데이터베이스(MongoDB) 개발에도 JavaScript를 사용하는 것에 관한 "풀스택 JavaScript"라는 제목의 연설이 있었습니다. 하나의 언어를 배워야만 전체 애플리케이션을 구현할 수 있습니다.

이에 영감을 받아 파이썬이 빅데이터 풀스택 개발 언어라고 부를 수 있다는 사실을 발견했습니다. Python은 클라우드 인프라, DevOps, 빅데이터 처리 및 기타 분야에서 인기 있는 언어이기 때문입니다.

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

JavaScript만 알면 완전한 웹 애플리케이션을 작성할 수 있듯이, Python만 알면 완전한 빅데이터 처리 플랫폼을 구현할 수 있습니다.

클라우드 인프라

요즘은 클라우드 플랫폼이나 대용량 데이터, 동적 확장을 지원하지 않으면 빅데이터를 한다고는 감히 말할 수 없고, 기껏해야 비즈니스 인텔리전스(BI)를 한다고 감히 말할 수 없습니다.

클라우드 플랫폼은 프라이빗 클라우드와 퍼블릭 클라우드로 구분됩니다. 널리 사용되는 프라이빗 클라우드 플랫폼인 OpenStack은 Python으로 작성되었습니다. 전 추적자인 클라우드스택은 자바로 작성됐으며 처음 출시 당시 파이썬보다 장점이 있었다는 점을 강하게 강조했다. 그 결과 2015년 초 CloudStack의 창업자인 Citrix가 OpenStack Foundation에 합류하겠다고 발표하면서 CloudStack은 종말을 맞이하게 되었습니다.

번거롭고 자체 프라이빗 클라우드를 구축하고 싶지 않다면 퍼블릭 클라우드를 사용하세요. AWS, GCE, Azure, Alibaba Cloud, Qingyun 등 모두 Python SDK를 제공하며 Python 및 JavaScript SDK만 제공합니다. Qingyun은 Python SDK만 제공합니다. 다양한 클라우드 플랫폼이 Python에 큰 중요성을 부여하고 있음을 알 수 있습니다.

인프라 구축에 있어서 Hadoop을 빼놓을 수 없습니다. 오늘날 Hadoop은 MapReduce 데이터 처리 속도가 충분히 빠르지 않기 때문에 더 이상 빅 데이터 처리의 첫 번째 선택이 아닙니다. 그러나 Hadoop의 두 구성 요소인 HDFS와 Yarn은 더 이상 적합하지 않습니다. 점점 인기가 많아지고 있습니다. Hadoop의 개발 언어는 Java이며 공식적인 Python 지원은 없습니다. 그러나 Hadoop의 API 인터페이스(pydoop, hadoopy 등)를 캡슐화하는 타사 라이브러리가 많이 있습니다.

Hadoop MapReduce의 대체품은 100배 빠르다고 주장하는 Spark입니다. 개발 언어는 Scala이지만 Scala, Java 및 Python에 대한 개발 인터페이스를 제공합니다. Python을 지원하지 않고 Python에서 . GlusterFS, Ceph 등과 같은 HDFS 대안은 모두 Python 지원을 직접 제공합니다. Yarn을 대체하는 Mesos는 C++로 구현되었으며, Java 및 Python에 대한 지원 패키지도 제공합니다.

데브옵스

DevOps에는 개발과 자체 운영 및 유지 관리라는 중국어 이름이 있습니다. 인터넷 시대에는 새로운 아이디어를 신속하게 테스트하고 비즈니스 가치를 최대한 빨리 안전하고 안정적으로 전달할 수 있어야만 경쟁력을 유지할 수 있습니다. DevOps가 옹호하는 자동화된 빌드/테스트/배포와 시스템 측정 및 기타 기술 관행은 인터넷 시대에 없어서는 안 될 요소입니다.

Python 애플리케이션이라면 setuptools, pip, virtualenv, tox, flake8 등의 도구가 있기 때문에 자동화 구축이 매우 간단합니다. 또한 거의 모든 Linux 시스템에는 Python 인터프리터가 내장되어 있으므로 자동화를 위해 Python을 사용하면 시스템에 소프트웨어를 사전 설치할 필요가 없습니다.

자동화된 테스트 측면에서 Python 기반 로봇 프레임워크는 엔터프라이즈 수준 애플리케이션에 가장 선호되는 자동화된 테스트 프레임워크이며 언어와는 아무런 관련이 없습니다. Cucumber에는 많은 지지자가 있으며, Python에 대응하는 Lettuce도 똑같은 일을 할 수 있습니다. Locust는 자동화된 성능 테스트에서도 점점 더 많은 주목을 받기 시작했습니다.

Chef 및 Puppet과 같은 자동화된 구성 관리 도구는 Ruby로 개발되었으며 여전히 강력한 추진력을 유지하고 있습니다. 그러나 둘 다 Python으로 개발된 차세대 Ansible과 SaltStack은 이전 두 버전보다 더 가벼우며 점점 더 많은 개발자의 환영을 받고 있으며, 이는 이전 제품에 많은 부담을 주기 시작했습니다.

시스템 모니터링 및 측정 측면에서 전통적인 Nagios는 점차 쇠퇴하고 있으며 Sensu와 같은 신생 기업은 호평을 받고 있으며 클라우드 서비스 형태의 New Relic은 Python을 통해 직접 구현되지 않지만 Python이 필요합니다. 이 도구에 연결하는 것은 어렵지 않습니다.

위의 툴 외에도 Cloudify, Deis 등 완전한 DevOps 기능을 제공하는 Python 기반의 PaaS 플랫폼은 아직 대중화되지는 않았지만 이미 많은 주목을 받고 있습니다.

웹 크롤러

빅데이터 데이터는 어디서 오는가? 자체적으로 대량의 데이터를 생성할 수 있는 능력을 갖춘 일부 회사를 제외하면 대부분의 경우 분석을 위해 인터넷 데이터를 캡처하기 위해 크롤러에 의존해야 합니다.

웹 크롤러는 Python의 전통적인 강점 영역입니다. 가장 널리 사용되는 크롤러 프레임워크인 Scrapy, HTTP 도구 키트 urlib2, HTML 구문 분석 도구 beautifulsoup, XML 파서 lxml 등은 모두 독립적으로 사용할 수 있는 클래스 라이브러리입니다.

그러나 웹 크롤러는 웹 페이지를 열고 HTML을 구문 분석하는 것만큼 간단하지 않습니다. 효율적인 크롤러는 다수의 유연한 동시 작업을 지원할 수 있어야 하며 동시에 수천 또는 수만 개의 웹 페이지를 크롤링할 수 있어야 합니다. 기존 스레드 풀 방법은 많은 리소스를 낭비합니다. 스레드 수가 수천에 도달하면 기본적으로 스레드 스케줄링이 낭비됩니다. Python은 코루틴 작업을 잘 지원할 수 있기 때문에 이를 기반으로 Gevent, Eventlet 및 Celery와 같은 분산 작업 프레임워크 등 많은 동시성 라이브러리가 개발되었습니다. AMQP보다 효율적이라고 평가받는 ZeroMQ는 Python 버전을 최초로 제공한 것이기도 합니다. 높은 동시성을 지원함으로써 웹 크롤러는 진정한 빅데이터 규모에 도달할 수 있습니다.

캡처된 데이터에는 단어 분할 처리가 필요하며, 이 점에서는 Python이 뒤떨어지지 않습니다. 유명한 자연어 처리 패키지 NLTK와 중국어 단어 분할을 전문으로 하는 Jieba는 모두 단어 분할을 위한 강력한 도구입니다.

데이터 처리

모든 것이 준비되었습니다. 우리에게 필요한 것은 동풍뿐입니다. 이 동풍이 바로 데이터 처리 알고리즘이다. 통계이론부터 데이터마이닝, 머신러닝, 최근 제안된 딥러닝 이론까지, 데이터사이언스는 백가지 꽃이 피어나는 시대입니다. 데이터 과학자는 어떤 프로그래밍을 사용하나요?

이론 연구 분야라면 데이터 과학자들 사이에서는 R 언어가 가장 인기가 많겠지만, R 언어의 문제점도 분명합니다. 통계학자들이 R 언어를 만들었기 때문에 구문이 약간 이상합니다. 더욱이 R 언어가 대규모 분산 시스템을 구현하려면 엔지니어링의 길을 가는 데 여전히 오랜 시간이 걸릴 것입니다. 따라서 많은 기업에서는 프로토타입 테스트에 R 언어를 사용하고 있으며, 알고리즘이 결정된 후 이를 엔지니어링 언어로 번역합니다.

Python은 데이터 과학자들이 가장 선호하는 언어 중 하나이기도 합니다. R 언어와 달리 Python 자체는 엔지니어링 언어입니다. Python에서 데이터 과학자가 구현한 알고리즘은 제품에 직접 사용될 수 있어 빅데이터 스타트업의 비용 절감에 매우 도움이 됩니다. 공식적으로 Python과 R에 대한 데이터 과학자의 사랑 때문에 Spark는 데이터 과학자를 기쁘게 하기 위해 이 두 언어에 대한 매우 훌륭한 지원을 제공합니다.

Python에는 데이터 처리와 관련된 클래스 라이브러리가 많이 있습니다. 고성능 과학 컴퓨팅 라이브러리 NumPy 및 SciPy는 다른 고급 알고리즘을 위한 매우 훌륭한 기반을 마련하여 Python 그리기를 Matlab만큼 쉽게 만듭니다. Scikit-learn과 Milk는 많은 기계 학습 알고리즘을 구현합니다. 이 두 라이브러리를 기반으로 구현된 Pylearn2는 딥 러닝 분야의 중요한 구성원입니다. Theano는 GPU 가속을 사용하여 고성능 수학적 기호 계산 및 다차원 행렬 계산을 수행합니다. 물론 엔지니어링 분야에서 널리 사용되는 빅 데이터 처리 라이브러리인 Pandas도 있는데, 그 DataFrame 디자인은 R 언어에서 차용되었으며 나중에 Spark 프로젝트에서 유사한 메커니즘을 구현하도록 영감을 주었습니다.

그런데, iPython도 있습니다. 이 도구는 너무 유용해서 거의 표준 라이브러리로 간주하고 소개하는 것을 잊어버렸습니다. iPython은 Python 코드의 각 부분의 결과를 실시간으로 볼 수 있는 대화형 Python 실행 환경입니다. 기본적으로 iPython은 명령줄에서 실행되며 ipython 노트북을 실행하여 웹 페이지에서 실행할 수 있습니다. matplotlib로 그린 그림을 iPython Notebook에 내장하여 직접 표시할 수 있습니다.
iPython Notebook의 노트북 파일은 다른 사람과 공유할 수 있어 다른 사람이 자신의 환경에서 작업 결과를 재현할 수 있으며, 상대방이 실행 환경이 없는 경우 HTML이나 PDF로 직접 변환할 수도 있습니다.

왜 Python

Python이 빅 데이터 시스템을 위한 풀스택 개발 언어가 된 것은 바로 애플리케이션 개발 엔지니어, 운영 및 유지 관리 엔지니어, 데이터 과학자 모두가 Python을 좋아하기 때문입니다.

개발 엔지니어들에게는 Python의 우아함과 단순함이 의심할 여지 없이 가장 큰 매력입니다. Python 대화형 환경에서 import this를 실행하고 Python의 Zen을 읽어 보면 Python이 왜 그렇게 매력적인지 이해하게 될 것입니다. Python 커뮤니티는 항상 매우 역동적이었습니다. NodeJS 커뮤니티의 소프트웨어 패키지의 폭발적인 성장과 달리 Python 소프트웨어 패키지의 성장 속도는 상대적으로 안정적이며 소프트웨어 패키지의 품질도 상대적으로 높습니다. 많은 사람들이 Python이 공간에 대한 요구 사항이 너무 엄격하다고 비판하지만, 대규모 프로젝트를 수행할 때 Python이 다른 언어보다 유리한 것은 바로 이러한 요구 사항 때문입니다. OpenStack 프로젝트는 이를 증명하기 위해 총 200만 라인 이상의 코드를 사용합니다.

운영 및 유지 관리 엔지니어에게 Python의 가장 큰 장점은 거의 모든 Linux 배포판에 Python 인터프리터가 내장되어 있다는 것입니다. Shell은 강력하지만 구문이 충분히 우아하지 않으며 더 복잡한 작업을 작성하는 것이 어려울 것입니다. Python을 사용하여 Shell을 대체하여 일부 복잡한 작업을 수행하면 운영 및 유지 관리 인력이 해방됩니다.

데이터 과학자에게 Python은 단순하면서도 강력합니다. C/C++에 비해 많은 하위 수준 작업을 수행할 필요가 없으며 Java에 비해 모델 검증을 빠르게 수행할 수 있습니다. Python은 간결한 구문과 강력한 표현 능력을 갖추고 있으며 동일한 작업에 1/3만 필요합니다. Matlab 및 Octave와 비교하여 Python의 엔지니어링 성숙도가 더 높습니다. 한 명 이상의 프로그래밍 전문가는 Python이 대학 컴퓨터 과학 프로그래밍 과정으로 사용하기에 가장 적합한 언어라고 표현했습니다. MIT의 컴퓨터 입문 과정에서는 Python을 사용합니다. 왜냐하면 Python을 통해 사람들은 프로그래밍에 관해 가장 중요한 것, 즉 문제 해결 방법을 배울 수 있기 때문입니다.

그런데 Microsoft는 PyCon 2015에 참가하여 Python을 지원하는 Visual Studio, Windows에서 Python C 확장 컴파일 최적화 등을 포함하여 Windows에서 Python 프로그래밍 경험을 개선하기 위해 주목할만한 발표를 했습니다. Python이 Windows의 기본 구성 요소가 되는 미래 시나리오를 상상해 보세요.

위 내용은 빅데이터 풀스택 개발 언어 – Python의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.