Flink概述
Apache Flink是一個框架和分布式處理引擎,用於對無界和有界數據流進行有狀態計算。Flink設計為在所有常見的集群環境中運行,以內存速度和任何規模執行計算。
Flink特點
1)隨處部署應用
與其它組件集成!
flink是分布式系統,需要計算資源才可執行程序。flink可以與常見的集群資源管理器進行集成(Hadoop Yarn,Apache Mesos..)。
可以單獨作為獨立集群運行。
通過不同部署模式實現。
這些模式允許flink以其慣有的方式進行交互。
當我們部署flink應用程序時,Flink會根據應用程序配置的並行性自動識別所需資源。從資源管理器中請求它們。
如果發生故障,flink會請求新的資源來替換發生故障的容器。
提交或控制程序都通過REST調用進行,簡化Flink在許多環境的集成。
2)以任何比例應用程序(小集群、無限集群)
Flink旨在以任何規模運行有狀態流應用程序。應用程序可以並行化在集群中分布和同時執行程序。
因此,我們的應用集群可以利用無限的cpu和磁盤與網絡IO。
Flink可以輕松的維護非常大的應用程序狀態。
用戶可拓展性報告:
1)應用程序每天可以處理萬億個事件
2)應用程序每天可以維護多個TB的狀態
3)應用程序可以在數千個內核運行
3)利用內存中的性能
有狀態Flink應用程序針對於對本地狀態訪問進行了優化。任務狀態始終的保留在內存中,或者如果
大小超過了可用內存,則保存在訪問高效的磁盤數據結構中(SSD 機械/固態)。
任務可以通過訪問本地來執行所有計算。從來產生極小的延遲。
Flink定期和異步檢查本地狀態持久存儲來保持出現故障時一次狀態的一致性。
有界無界
1)無界
有開始,沒有結束...
處理實時數據。
2)有界
有開始,有結束...
處理批量數據。
無界數據集應用場景(實時計算)
1)源源不斷的日志數據
2)web應用,指標分析
3)移動設備終端(分析app狀況)
4)應用在任何數據源不斷產生的項目中
Flink運行模型
1)流計算
數據源源不斷產生,我們的需求是源源不斷的處理。程序需要一直保持在計算的狀態。
2)批處理
計算一段完整的數據集,計算成功后釋放資源,那么此時工作結束。
Flink的使用
1)處理結果准確:無論是有序數據還是延遲到達的數據。
2)容錯機制:
有狀態:保持每次的結果往下傳遞,實現累加。DAG(有向無環圖)。
3)有很強大的吞吐量和低延遲。
計算速度快,吞吐量處理的量級大。
4)精准的維護一次的應用狀態。
storm:會發生要么多計算一次,要么漏計算。
5)支持大規模的計算
可以運行在數千台節點上。
6)支持流處理和窗口化操作
7)版本化處理
8)檢查點機制實現精准的一次性計算保證
checkpoint
9)支持yarn與mesos資源管理器
flink單節點安裝部署
1)下載安裝包
2)上傳
3)解壓
tar -zxvf .tar
4)啟動
bin/start-cluster.sh
5)訪問ui界面
http://192.168.37.129:8081
flink集群安裝部署
1)下載
2)解壓
3)修改配置文件
vi flink-conf.yaml
把 jobmanager.rpc.address: localhost 改為 jobmanager.rpc.address: hadoop01
注意:localhost前有個空格
4)scp傳輸到從節點
5)啟動
bin/start-cluster.sh