Apache Flink基礎教程
資料來源:Apache Flink Tutorial (tutorialspoint.com)
Apache Flink是Apache Hadoop的開源本地分析數據庫。它由Cloudera、MapR、Oracle和Amazon等供應商提供。本教程中提供的示例是使用Cloudera Apache Flink開發的。
本教程是為那些想要學習Apache Flink的人準備的。Apache Flink使用傳統的SQL知識以閃電般(松鼠般doge)的速度處理大量數據。
1. Flink-前置知識
1.1 大數據平臺
學習Flink之前,先來點前置知識
在過去的10年里,數據的進步是巨大的;這就產生了一個術語“大數據”。可以稱之為大數據的沒有固定大小;傳統系統(RDBMS)無法處理的任何數據都是大數據。這些大數據可以是結構化、半結構化或非結構化的格式。最初,數據有三個維度:體量(Volume) 、速度(Velocity)、種類(Variety)。現在,維度已經超過了三個“V”.我們現在添加了其他的V -真實性(Veracity),有效性(Validity),脆弱性(Vulnerability),價值(Value),可變性(Variability)等。
大數據導致了多種工具和框架的出現,這些工具和框架有助于存儲和處理數據。目前流行的大數據框架有Hadoop、Spark、Hive、Pig、Storm和Zookeeper等。它還提供了在醫療保健、金融、零售、電子商務等多個領域創建下一代產品的機會。
無論是跨國公司還是初創企業,每個人都在利用大數據來存儲和處理數據,并做出更明智的決策。
1.2 批處理vs實時處理
在大數據而言,有兩種類型的處理:
- (批處理)Batch Processing
- (實時處理)Real-time Processing
處理基于一段時間內收集的數據稱為批處理。例如,銀行經理希望處理過去一個月的數據(隨時間收集),以了解過去一個月被取消的支票數量。
處理基于即時數據的即時結果稱為實時處理。例如,銀行經理在發生欺詐交易(即時結果)后立即收到欺詐警報。
下表列出了批處理和實時處理的區別:
批處理(Batch Processing) | 實時處理(Real-Time Processing) |
---|---|
靜態文件 | 事件流 |
按分鐘、小時、天等周期處理。 | 納秒級,及時處理 |
存在磁盤上的歷史數據 | 內存存儲 |
例子?票據生成 | 例子?ATM事務警報 |
如今,實時處理在每個組織(泛指各種公司、政府部門等機構)中都得到了廣泛的應用。欺詐檢測、醫療保健中的實時警報和網絡攻擊警報等用例需要實時處理即時數據;即使是幾毫秒的延遲也會產生巨大的影響。
對于這種實時用例,理想的工具應該是能夠以流而不是批處理的方式輸入數據的工具。Apache Flink就是實時處理工具。
1.3 Flink 簡介
Apache Flink是一個實時處理框架,可以處理流數據。它是一個開源流處理框架,用于高性能、可擴展和精確的實時應用程序。它具有真正的流模型。
tips: flink最初是為實時處理設計的,但現在是流批一體(從 Apache Flink 1.12.0 開始),就問你流不流批
Apache Flink是由Data Artisans公司創建的,現在由Apache Flink社區在Apache許可下開發。到目前為止,這個社區有超過479個貢獻者和15500多個提交。
Apache Flink的生態系統
下圖顯示了Apache Flink生態系統的不同層:
下面,將從該圖的從下往上,分別簡要介紹STORAGE、DEPLOY、KERNEL、API’s and LIBRARIES
Storage(存儲)
Apache Flink有多種讀/寫數據的選項。下面是一個基本存儲列表?
- HDFS (Hadoop Distributed File System)
- 本地文件系統(Local File System)
- S3
- 關系型數據庫:RDBMS (MySQL, Oracle, MS SQL etc.)
- MongoDB
- HBase
- Apache Kafka
- Apache Flume
Deploy(部署)
您可以在本地模式、集群模式或云上部署Apache Fink。集群模式包括:standalone、YARN、MESOS。
在云端,Flink可以部署在AWS或GCP上(都是云服務器)。
Kernel(內核)
這是運行時層,它提供分布式處理、容錯、可靠性、本地迭代處理能力等等。
APIs & Libraries(api和庫)
這是Apache Flink的頂層,也是最重要的一層。它有數據集API,負責批處理;和數據流API,負責流處理。還有其他庫,如Flink ML(用于機器學習),Gelly(用于圖形處理),Tables for SQL。這一層為Apache Flink提供了多種功能。
未完待續,點個贊唄