首頁 後端開發 Python教學 大數據全端開發語言 – Python

大數據全端開發語言 – Python

Mar 29, 2017 pm 03:51 PM
python 開發 數據 語言

前段時間,ThoughtWorks在深圳舉辦一次社區活動上,有一個演講主題叫做“Fullstack JavaScript”,是關於用JavaScript進行前端、伺服器端,甚至資料庫(MongoDB)開發,一個Web應用開發人員,只需要學會一門語言,就可以實現整個應用。

  受此啟發,我發現Python可以稱為大數據全端式開發語言。因為Python在雲端基礎設施,DevOps,大數據處理等領域都是炙手可熱的語言。

# 領域 流行語言
# 雲端基礎設施 Python, Java, Go
# DevOps Python, Shell, Ruby, Go
# 網路爬蟲 Python, PHP, C++
# 資料處理 Python, R, Scala
#

  就像只要會JavaScript就可以寫出完整的Web應用,只要會Python,就可以實現一個完整的大數據處理平台。

#  雲端基礎設施

  這年頭,不支援雲端平台,不支援大量數據,不支援動態伸縮,根本不敢說自己是做大數據的,頂多也就敢跟人說是做商業智慧(BI)。

  雲平台分為私有雲和公有雲。私有雲平台如日中天的OpenStack,就是Python寫的。曾經的追趕者CloudStack,剛推出時大肆強調自己是Java寫的,比Python有優勢。結果,搬石砸腳,2015年初,CloudStack的發起人Citrix宣布加入OpenStack基金會,CloudStack眼看著就要壽終正寢。

如果嫌麻煩不想自己搭建私有雲,用公有雲,不論是AWS,GCE,Azure,還是阿里雲,青雲,在都提供了Python SDK,其中GCE只提供Python和JavaScript的SDK,而青雲只提供Python SDK 。可見各家雲端平台對Python的重視。

提到基礎設施搭建,不得不提Hadoop,在今天,Hadoop因為其MapReduce數據處理速度不夠快,已經不再作為大數據處理的首選,但是HDFS和Yarn——Hadoop的兩個組件——倒是越來越受歡迎。 Hadoop的開發語言是Java,沒有官方提供Python支持,不過有很多第三方函式庫封裝了Hadoop的API介面(pydoop,hadoopy等等)。

Hadoop MapReduce的替代者,是號稱快上100倍的Spark,其開發語言是Scala,但是提供了Scala,Java,Python的開發接口,想要討好那麼多用Python開發的數據科學家,不支持Python,真是說不過去。 HDFS的替代品,如GlusterFS,Ceph等,都是直接提供Python支援。 Yarn的替代者,Mesos是C++實現,除C++外,提供了Java和Python的支援包。

 DevOps

  DevOps有個中文名字,叫做開發自運維。網路時代,只有能夠快速試驗新想法,並在第一時間,安全、可靠的交付業務價值,才能保持競爭力。 DevOps推崇的自動化建置/測試/部署,以及系統度量等技術實踐,是網路時代必不可少的。

  自動化建置是因為應用而易的,如果是Python應用,因為有setuptools, pip, virtualenv, tox, flake8等工具的存在,自動化建置非常簡單。而且,因為幾乎所有Linux系統都內建Python解釋器,所以用Python做自動化,不需要係統預先安裝什麼軟體。

  自動化測試方面,基於Python的Robot Framework企業級應用最喜歡的自動化測試框架,而且和語言無關。 Cucumber也有很多支持者,Python對應的Lettuce可以做到完全一樣的事。 Locust在自動化效能測試方面也開始受到越來越多的關注。

  自動化配置管理工具,老牌的如Chef和Puppet,是Ruby開發,目前仍保持著強勁的勢頭。不過,新生代Ansible和SaltStack——都是Python開發——因為較前兩者設計更為輕量化,受到越來越多開發這的歡迎,已經開始給前輩們製造了不少的壓力。

在系統監控與度量方面,傳統的Nagios逐漸沒落,新貴如Sensu大受好評,雲端服務形式的New Relic已成為新創公司的標配,這些都不是直接透過Python實現的,不過Python要接入這些工具,並不困難。

  除了上述這些工具,基於Python,提供完整DevOps功能的PaaS平台,如Cloudify和Deis,雖未成氣候,但已經得到大量關注。

 網路爬蟲

  大數據的資料從哪裡來?除了部分企業有能力自己產生大量的數據,大部分時候,是需要靠爬蟲來抓取網路數據來做分析。

  網路爬蟲是Python的傳統強勢領域,最受歡迎的爬蟲框架Scrapy,HTTP工具包urlib2,HTML解析工具beautifulsoup,XML解析器lxml,等等,都是能夠獨當一面的類別庫。

  不過,網路爬蟲並不是打開網頁,解析HTML這麼簡單。高效率的爬蟲要能支援大量靈活的並發操作,常常要能夠同時幾千甚至上萬個網頁同時抓取,傳統的線程池方式資源浪費比較大,線程數上千之後系統資源基本上就全浪費在線程調度上了。 Python由於能夠很好的支援協程(Coroutine)操作,基於此發展起來很多並發函式庫,如Gevent,Eventlet,還有Celery之類的分散式任務框架。被認為是比AMQP更有效率的ZeroMQ也是最早就提供了Python版本。有了對高併發的支持,網路爬蟲才真正可以達到大數據規模。

  抓取下來的數據,需要做分詞處理,Python在這方面也不遜色,著名的自然語言處理程序包NLTK,還有專門做中文分詞的Jieba,都是做分詞的利器。

 資料處理

  萬事俱備,只欠東風。這東風,就是資料處理演算法。從統計理論,到資料挖掘,機器學習,再到最近幾年提出的深度學習理論,資料科學正處於百花齊放的時代。資料科學家都用什麼程式?

  如果是在理論研究領域,R語言也許是最受資料科學家歡迎的,但是R語言的問題也很明顯,因為是統計學家們創建了R語言,所以其語法略顯怪異。而且R語言要實現大規模分散式系統,還需要很長一段時間的工程路要走。所以很多公司使用R語言做原型試驗,演算法確定之後,再翻譯成工程語言。

  Python也是資料科學家最喜歡的語言之一。和R語言不同,Python本身就是一門工程性語言,資料科學家用Python實現的演算法,可以直接用在產品中,這對大數據新創公司節省成本是非常有幫助的。正式因為資料科學家對Python和R的熱愛,Spark為了討好資料科學家,對這兩種語言提供了非常好的支持。

  Python的資料處理相關類別庫非常多。高效能的科學計算類別庫NumPy和SciPy,給其他高階演算法打了非常好的基礎,matploglib讓Python畫圖變得像Matlab一樣簡單。 Scikit-learn和Milk實作了許多機器學習演算法,基於這兩個函式庫實現的Pylearn2,是深度學習領域的重要成員。 Theano利用GPU加速,實現了高效能數學符號運算和多維矩陣運算。當然,還有Pandas,一個在工程領域已經廣泛使用的大數據處理類別庫,其DataFrame的設計借鑒自R語言,後來又啟發了Spark專案實現了類似機制。

  對了,還有iPython,這個工具如此有用,以至於我差點把他當成標準庫而忘了介紹。 iPython是一個互動式Python運行環境,能夠即時看到每一段Python程式碼的結果。預設情況下,iPython運行在命令列,可以執行ipython notebook在網頁中運行。用matplotlib繪製的圖可以直接嵌入式的顯示在iPython Notebook。
iPython Notebook的筆記本檔案可以分享給其他人,讓其他人可以在自己的環境中重現你的工作成果;如果對方沒有運作環境,還可以直接轉換成HTML或PDF。

#  為什麼是Python

#   正是因為應用開發工程師、維運工程師、資料科學家都喜歡Python,才使得Python成為大數據系統的全端開發語言。

  對於開發工程師而言,Python的優雅和簡潔無疑是最大的吸引力,在Python互動式環境中,執行import this,讀一讀Python之禪,你就明白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能夠讓人們學到程式設計最重要的東西——如何解決問題。

  順便提一句,微軟參加2015年PyCon,高調宣布提高Python在Windows上的程式設計體驗,包括Visual Studio支援Python,優化Python的C擴充在Windows上的編譯等等。腦補下未來Python作為Windows預設元件的場景。

以上是大數據全端開發語言 – Python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

CentOS上PyTorch的GPU支持情況如何 CentOS上PyTorch的GPU支持情況如何 Apr 14, 2025 pm 06:48 PM

在CentOS系統上啟用PyTorchGPU加速,需要安裝CUDA、cuDNN以及PyTorch的GPU版本。以下步驟將引導您完成這一過程:CUDA和cuDNN安裝確定CUDA版本兼容性:使用nvidia-smi命令查看您的NVIDIA顯卡支持的CUDA版本。例如,您的MX450顯卡可能支持CUDA11.1或更高版本。下載並安裝CUDAToolkit:訪問NVIDIACUDAToolkit官網,根據您顯卡支持的最高CUDA版本下載並安裝相應的版本。安裝cuDNN庫:前

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

minio安裝centos兼容性 minio安裝centos兼容性 Apr 14, 2025 pm 05:45 PM

MinIO對象存儲:CentOS系統下的高性能部署MinIO是一款基於Go語言開發的高性能、分佈式對象存儲系統,與AmazonS3兼容。它支持多種客戶端語言,包括Java、Python、JavaScript和Go。本文將簡要介紹MinIO在CentOS系統上的安裝和兼容性。 CentOS版本兼容性MinIO已在多個CentOS版本上得到驗證,包括但不限於:CentOS7.9:提供完整的安裝指南,涵蓋集群配置、環境準備、配置文件設置、磁盤分區以及MinI

CentOS上PyTorch的分佈式訓練如何操作 CentOS上PyTorch的分佈式訓練如何操作 Apr 14, 2025 pm 06:36 PM

在CentOS系統上進行PyTorch分佈式訓練,需要按照以下步驟操作:PyTorch安裝:前提是CentOS系統已安裝Python和pip。根據您的CUDA版本,從PyTorch官網獲取合適的安裝命令。對於僅需CPU的訓練,可以使用以下命令:pipinstalltorchtorchvisiontorchaudio如需GPU支持,請確保已安裝對應版本的CUDA和cuDNN,並使用相應的PyTorch版本進行安裝。分佈式環境配置:分佈式訓練通常需要多台機器或單機多GPU。所

CentOS上如何更新PyTorch到最新版本 CentOS上如何更新PyTorch到最新版本 Apr 14, 2025 pm 06:15 PM

在CentOS上更新PyTorch到最新版本,可以按照以下步驟進行:方法一:使用pip升級pip:首先確保你的pip是最新版本,因為舊版本的pip可能無法正確安裝最新版本的PyTorch。 pipinstall--upgradepip卸載舊版本的PyTorch(如果已安裝):pipuninstalltorchtorchvisiontorchaudio安裝最新

CentOS上PyTorch版本怎麼選 CentOS上PyTorch版本怎麼選 Apr 14, 2025 pm 06:51 PM

在CentOS系統上安裝PyTorch,需要仔細選擇合適的版本,並考慮以下幾個關鍵因素:一、系統環境兼容性:操作系統:建議使用CentOS7或更高版本。 CUDA與cuDNN:PyTorch版本與CUDA版本密切相關。例如,PyTorch1.9.0需要CUDA11.1,而PyTorch2.0.1則需要CUDA11.3。 cuDNN版本也必須與CUDA版本匹配。選擇PyTorch版本前,務必確認已安裝兼容的CUDA和cuDNN版本。 Python版本:PyTorch官方支

See all articles