Apache Flink 1.9.0 爲何將支持 Python API ?

做者:孫金城(金竹)python

衆所周知,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 最新的最受歡迎的語言排名數據以下:框架

image

上圖從 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,數據量的快速增加已經遠遠超越單個計算機存儲和處理能力,以下:工具

image

上圖咱們數據量的單位是 ZB,咱們簡單介紹一下數據量的統計單位,基本單位是 bit,按順序給出全部單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。他們之間的轉換關係是:oop

  • 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 年來的成交額來用數字證實數據的增加,以下:學習

image

2.2 數據的價值來源於數據分析

如何讓大數據產生價值呢?毋庸置疑,對大數據進行統計分析,讓統計分析的結果幫助咱們進行決策。好比推薦系統,咱們能夠根據一個用戶長期的購買習慣,購買記錄來分析其興趣愛好,進而能夠準確的進行有效推薦。那麼面對上面的海量數據,在一臺計算機上沒法處理,那麼咱們如何在有限的時間內對所有數據進行統計分析呢?說起這個問題,咱們不得不感謝 Google 發佈的三大論文:

  • GFS - 2003年,Google 發佈 Google File System 論文,這是一個可擴展的分佈式文件系統,用於大型的、分佈式的、對大量數據進行訪問的應用。
  • MapReduce - 2004 年,Google 發佈了 MapReduce 論文,論文描述了大數據的分佈式計算方式,主要思想是將任務分解而後在多臺處理能力較弱的計算節點中同時處理,而後將結果合併從而完成大數據處理。MapReduce 是針對分佈式並行計算的一套編程模型,以下圖所示:

image

  • BigTable - 2006 年,Google 發佈了 BigTable 論文,是一款典型是 NoSQL 分佈式數據庫。

受益於 Google 的三大論文,Apache 開源社區迅速開發了 Hadoop 生態系統,HDFS,MapReduce 編程模型,NoSQL 數據庫 HBase。並很快獲得了全球學術界和工業界的廣泛關注,並獲得推廣和普及應用。其中阿里巴巴在 2008 年就啓動了基於 Hadoop 的雲梯項目,Hadoop 就成爲了阿里巴巴分佈式計算的核心技術體系,並在 2010 年就達到了千臺機器的集羣,Hadoop在阿里巴巴的集羣發展以下:

image

但利用 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 的定義是: 人工智能是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新技術科學。

image

而機器學習是進行人工智能的一種方法或者工具。機器學習在以 Spark,Flink 爲首的大數據技術平臺中具備較高的地位,尤爲 Spark 近些年在 ML 方面作了巨大的努力,同時 PySpark 集成了不少優秀的機器學習類庫,如典型的 Pandas,在這方面遠遠超過了 Flink,因此 Flink 正面面對本身的不足,在 Flink 1.9 中開啓了新的 ML 接口和新的 flink-python 模塊!

那麼機器學習的重要和 Python 又有什麼關係?咱們看一下統計數據,看什麼語言是最流行的機器學習語言。

IBM 的數據科學家 Jean-Francois Puget 曾經作過一個有趣的分析。他爬取了著名的求職網站 indeed 上僱主的崗位要求變更趨勢,來評估當下市場上最受歡迎的崗位語言。其中當他單獨搜索」machine learning」時候,也能夠獲得一個近似的結果:

image

其結構發現 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 萬獎金等你拿 /

詳情連接:tianchi.aliyun.com/markets/tia…

image
相關文章
相關標籤/搜索