作者:孫金城(金竹)
本文目錄:
1.最流行的編程語言
2.互聯網最火熱的領域
2.1大數據時代,數據量與日俱增
2.2數據的價值來源于數據分析
2.3數據價值最大化,時效性
3.阿爾法與人工智能
4.總結
眾所周知,Apache Flink(以下簡稱 Flink)的 Runtime 是用 Java 編寫的,而即將發布的 Apache Flink 1.9.0 版本則會開啟新的 ML 接口和新的 flink-python 模塊,Flink 為什么要增加對 Python 的支持,想必大家一定好奇。
也許大家都很清楚,目前很多著名的開源項目都支持 Python,比如 Beam,Spark,Kafka 等,Flink 自然也需要增加對 Python 的支持,這個角度分析也許很好,但我們想想為啥這些非常火熱的項目都紛紛支持 Python 呢?Python 語言有怎樣的“魔力”讓這些著名的項目都青睞于他?我們看一下統計數據。
1.最流行的編程語言
行業分析公司 RedMonk 最新的最受歡迎的語言排名數據如下:
上圖從 Github 和 StackOverflow 兩個維度進行分析的前十名如下:
- JavaScript
- Java
- Python
- PHP
- C++
- C#
- CSS
- Ruby
- C
- TypeScript
Pytnon 名列第三,目前也非常流行的 R 和 Go 語言排在了 15 和 16 名。這個很客觀的排名足以證明 Python 的受眾是多么的龐大,任何項目對 Python 的支持就是在無形的擴大項目的受眾用戶!
2.互聯網最火熱的領域
就目前而言互聯網最熱的領域應該是大數據計算,以前單機的計算時代已經過去了,單機處理能力的提高速度遠遠落后于數據的與日俱增的速度,以下幾方面將分析為何大數據時代最熾熱的互聯網領域是大數據計算。
2.1 大數據時代,數據量與日俱增
隨著云計算、物聯網、人工智能等信息技術的快速發展,數據量呈現幾何級增長,我們先看一份預測數據,全球數據總量在短暫的 10 年時間會由 16.1 ZB增長到 163 ZB,數據量的快速增長已經遠遠超越單個計算機存儲和處理能力,如下:
上圖我們數據量的單位是 ZB,我們簡單介紹一下數據量的統計單位,基本單位是 bit,按順序給出所有單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。他們之間的轉換關系是:
- 1 Byte =8 bit
- 1 KB = 1,024 Bytes
- 1 MB = 1,024 KB
- 1 GB = 1,024 MB
- 1 TB = 1,024 GB
- 1 PB = 1,024 TB
- 1 EB = 1,024 PB
- 1 ZB = 1,024 EB
- 1 YB = 1,024 ZB
- 1 BB = 1,024 YB
- 1 NB = 1,024 BB
- 1 DB = 1,024 NB
看到上面的數據量也許我們會質疑全球數據真的有這么恐怖嗎,數據都從何而來? 其實我看到這個數據也深表質疑,但是仔細查閱了一下資料,發現全球數據的確在快速的增長著,比如 Facebook 社交平臺每天有幾百億,上千億的照片數據,紐約證券交易每天有幾 TB 的交易數據,再說說剛剛發生的阿里巴巴 2018 年雙 11 數據,從交易額上創造了 2135 億的奇跡,從數據量上看僅僅是阿里巴巴內部的監控日志處理看就達到了 162 GB/秒。所以阿里巴巴為代表的互聯網行業,也促使了數據量的急速增長,同樣以阿里巴巴雙 11 近 10 年來的成交額來用數字證明數據的增長,如下:
2.2 數據的價值來源于數據分析
如何讓大數據產生價值呢?毋庸置疑,對大數據進行統計分析,讓統計分析的結果幫助我們進行決策。比如推薦系統,我們可以根據一個用戶長期的購買習慣,購買記錄來分析其興趣愛好,進而可以準確的進行有效推薦。那么面對上面的海量數據,在一臺計算機上無法處理,那么我們如何在有限的時間內對全部數據進行統計分析呢?提及這個問題,我們不得不感謝 Google 發布的三大論文:
- GFS - 2003年,Google 發布 Google File System 論文,這是一個可擴展的分布式文件系統,用于大型的、分布式的、對大量數據進行訪問的應用。
- MapReduce - 2004 年,Google 發布了 MapReduce 論文,論文描述了大數據的分布式計算方式,主要思想是將任務分解然后在多臺處理能力較弱的計算節點中同時處理,然后將結果合并從而完成大數據處理。MapReduce 是針對分布式并行計算的一套編程模型,如下圖所示:
- BigTable - 2006 年,Google 發布了 BigTable 論文,是一款典型是 NoSQL 分布式數據庫。
受益于 Google 的三大論文,Apache 開源社區迅速開發了 Hadoop 生態系統,HDFS,MapReduce 編程模型,NoSQL 數據庫 HBase。并很快得到了全球學術界和工業界的普遍關注,并得到推廣和普及應用。其中阿里巴巴在 2008 年就啟動了基于 Hadoop 的云梯項目,Hadoop 就成為了阿里巴巴分布式計算的核心技術體系,并在 2010 年就達到了千臺機器的集群,Hadoop在阿里巴巴的集群發展如下:
但利用 Hadoop 進行 MapReduce 的開發,需要開發人員精通 Java 語言,并要對 MapReduce 的運行原理有一定的了解,這樣在一定程度上提高了 MapReduce 的開發門檻,所以在開源社區又不斷涌現了一些為了簡化 MapReduce 開發的開源框架,其中 Hive 就是典型的代表。HSQL 可以讓用戶以類 SQL 的方式描述 MapReduce 計算,比如原本需要幾十行,甚至上百行才能完成的 wordCount,用戶一條 SQL語句就能完成了,這樣極大的降低了 MapReduce 的開發門檻。這樣 Hadoop 技術生態不斷發展,基于 Hadoop 的分布式的大數據計算逐漸普及在業界家喻戶曉!
2.3 數據價值最大化,時效性
每一條數據都是一條信息,信息的時效性是指從信息源發送信息后經過接收、加工、傳遞、利用的時間間隔及其效率。時間間隔越短,時效性越強。一般時效性越強,信息所帶來的價值越大,比如一個偏好推薦場景,用戶在購買了一個“蒸箱”,如果能在秒級時間間隔給用戶推薦一個“烤箱”的優惠產品,那么用戶購買“烤箱”的概率會很高,那么在1天之后根據用戶購買“蒸箱”的數據,分析出用戶可能需要購買“烤箱”,那么我想這條推薦信息被用戶采納的可能性將大大降低。基于這樣數據時效性問題,也暴露了 Hadoop 批量計算的弊端,就是實時性不高。基于這樣的時代需求,典型的實時計算平臺也應時而生,2009 年 Spark 誕生于 UCBerkeley 的 AMP 實驗室, 2010 年 Storm 的核心概念 BackType 被 Nathan 提出。Flink 也以一個研究性的項目于 2010 年開始于德國柏林。
3.阿爾法與人工智能
在 2016 谷歌阿爾法圍棋以 4:1 戰勝圍棋世界冠軍、職業九段棋手李世石之后,人們逐漸用新的眼光審視讓深度學習,而且掀起了人工智能的“狂熱”。百度百科對人工智能(Artificial Intelligence),英文縮寫為 AI 的定義是: 人工智能是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新技術科學。
而機器學習是進行人工智能的一種方法或者工具。機器學習在以 Spark,Flink 為首的大數據技術平臺中具有較高的地位,尤其 Spark 近些年在 ML 方面做了巨大的努力,同時 PySpark 集成了很多優秀的機器學習類庫,如典型的 Pandas,在這方面遠遠超過了 Flink,所以 Flink 正面面對自己的不足,在 Flink 1.9 中開啟了新的 ML 接口和新的 flink-python 模塊!
那么機器學習的重要和 Python 又有什么關系?我們看一下統計數據,看什么語言是最流行的機器學習語言。
IBM 的數據科學家 Jean-Francois Puget 曾經做過一個有趣的分析。他爬取了著名的求職網站 indeed 上雇主的崗位要求變動趨勢,來評估當下市場上最受歡迎的崗位語言。其中當他單獨搜索”machine learning”時候,也可以得到一個近似的結果:
其結構發現 Python 是與熱的”machine learning”,雖然這是 2016 年的調查,但是也足以證明 Python 在”machine learning”方面的地位,同時上面我們提到的 RedMonk 的統計數據也足以證明這一點!
不僅僅是各種調查,我們也可以從 Python 的特點和現有的 Python 生態來說說為什么 Python 是機器學習的最好語言。
Python 是一種面向對象的解釋型程序語言,由荷蘭人(Guido van Rossum)于 1989 年發明,并于 1991 年發布了第一個版。Python 作為解釋型語言,雖然跑得比誰都慢,但 Python 設計者的哲學是“用一種方法并且只有一種方法來做一件事”。在開發新的 Python 語法時,如果面臨多種選擇,Python 開發者一般會選擇明確的沒有或者很少有歧義的語法。簡單易學的特點促使了 Python 有龐大的用戶群體,進而很多機器學習的類庫也是由 Python 開發的,比如:NumPy、SciPy 和結構化數據操作可以通過 Pandas 等等。所以 Python 這種豐富的生態系統為機器學習提供了一定程度的便利性,也必然成為了最受歡迎的機器學習語言!
4.總結
本篇重點描述了 Apache Flink 為什么需要支持 Python API。以實際數字說明目前我們處于一個大數據時代,數據的價值要依靠大數據分析,而由于數據的時效性的重要性而催生了著名的 Apache Flink 流式計算平臺。
目前在大數據計算時代,AI 是炙手可熱的發展方向,機器學習是 AI 的重要手段之一,而恰恰由于語言的特點和生態的優勢,Python 成為了機器學習最重要的語言,進而表明了 Apache Flink 著手發力 Flink API 的動機!所謂時勢造英雄,Apache Flink Python API 是時代的產物,是水順自然而得之的必然!
Tips:
本文節選自金竹的博客【Apache Flink 說道系列】,點擊「閱讀原文」可查看作者特色說道系列原版文章~
/ Apache Flink 極客挑戰賽,10 萬獎金等你拿 /
詳情鏈接:https://tianchi.aliyun.com/ma...
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
