Flink入門

Flink簡介

  • Apache Flink 是一個面向分佈式數據流處理和批量數據處理的開源計算平臺,提供支持流處理和批處理兩種類型應用的功能。
  • Apache Flink的前身是柏林理工大學一個研究性項目,在2014被Apache孵化器所接受,然後迅速地成爲了Apache Software Foundation的頂級項目之一。
Flink 特點
  • 現有的開源計算方案,會把流處理和批處理作爲兩種不同的應用類型:流處理一般需要支持低延遲、Exactly-once保證,而批處理需要支持高吞吐、高效處理
  • Flink是完全支持流處理,也就是說作爲流處理看待時輸入數據流時無界的;批處理被作爲一種特殊的流處理,只是它的輸入數據流被定義爲有界的。

Flink 組件棧

圖片描述

Deployment層

主要涉及了Flink的部署模式、Flink支持多種部署模式:本地、集羣(Standalone/YARN)、雲(GCE/EC2).

Runtime層

Runtime層提供了支持Flink計算的全部核心實現,比如:支持分佈式Stream處理、JobGraph到ExecutionGraph的映射、調度等等,爲上層API層提供基礎服務

API層

API層主要實現了面向無界Stream的流處理和麪向Batch的批處理API,其中面向流處理對應DataStream API,面向批處理對應DataSet API

Libaries層

在API層之上構建的滿足特定應用的實現計算框架,也分別對應於面向流處理和麪向批處理兩類。

Flink優勢

  • 支持高吞吐、低延遲、高性能的流處理
  • 支持高度靈活的窗口(Window)操作
  • 支持有狀態計算的Exactly-once語義
  • 提供DataStream API和DataSet API

Flink數據流和時間窗口

基本概念
  • Flink程序的基礎構建模塊是流(streams)與轉換(transformations)。
  • 每一個數據流起始於一個或多個source,並終止於一個或多個sink。
時間窗口
  • 流上的聚合需要由窗口來劃定範圍,比如 “計算過去的5分鐘” 或者 “最後100個元素的和”
  • 窗口通常被區分爲不同的類型,比如滾動窗口(沒有重疊),滑動窗口(有重疊),以及會話窗口(由布活動的間隙所打斷)

Flink分佈式運行環境

  • Flink是基於Master-Slave風格的架構
  • Flink集羣啓動時,會啓動一個JobManager進程、至少一個TaskManager進程
JobManager
  • Flink系統的協調者,他負責接受Flink Job ,調度組成Job的多個Task的執行
  • 收集Job的狀態信息,並管理Flink集羣中從節點TaskManager
TaskManager
  • 實際負責執行計算的Worder,在其上執行Flink Job的一組Task
  • TaskManager負責管理其所在節點上的資源信息,如內存、磁盤、網絡,在啓動的時候將資源的狀態向JobManager彙報
Client
  • 用戶提交一個Flink程序時,會首先創建一個Client,該Client首先會對用戶提交的Flink程序進行預處理,並提交到Flink集羣
  • Client會將用戶提交的Flink程序組裝一個JobGraph,並且時以JobGraph的形式提交的

Flink安裝

方式一
方式二

到官網下載編譯版:https://flink.apache.org/down...
不同環境下到bin目錄,運行start-local.bat
運行正常,訪問頁面:http://localhost:8081

圖片描述

圖片描述

Flink WordCount入門程序

官方推薦快速搭建一個項目:

curl https://flink.apache.org/q/qu... | bash
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章