1. 程式人生 > 其它 >大資料學習之Flink(一)

大資料學習之Flink(一)

Flink的核心特性:

1、高吞吐,低延遲

2、結果的準確性,提供了事件時間和處理時間,對於亂序事件流仍然提供一致且準確地結果

3、精確一次(exactly-once)的狀態一致性保證

4、可以連線到最常用的儲存系統和分散式檔案系統

5、高可用,本身高可用的設定,再加上從故障中快速恢復和動態擴充套件任務的能力,能夠做到7*24小時全天候執行

6、能夠更新應用程式程式碼並將作業遷移到不同的Flink叢集,而不會丟失應用程式的狀態

 

Spark和Flink的區別:

1、資料處理架構不同

spark是以批處理為根本的,並支援在批處理之上進行流計算 在本質上還是批處理(微批處理)

Flink是以流處理為根本(有界流,無界流)

2、資料模型和執行架構不同

資料模型:

Spark底層模型是彈性分散式資料集(RDD)Spark Streaming進行微批處理的底層模型是DStream,實際上還是一組組小批資料的RDD的集合

Flink計底層資料模型時資料流(DataFlow)以及實踐Event序列

執行架構:

Spark做批處理計算,需要將任務對應的DAG劃分階段,一個完成經過shuffle階段在進行下一階段的計算

Flink是標準的流式執行模式,一個事件在一個節點上處理完成後傳送給下一個節點進行處理

 

Flink部署模式:

會話模式(Session Mode)

單作業模式(Per-Job Mode)

應用模式(Application Mode)

它們的主要區別在於:叢集的生命週期以及資源分配方式,以及應用的main方法到底執行在客戶端還是JobManager

 

會話模式:先啟動一個叢集,保持一個會話,在這個會話中通過客戶端提交作業(注意:叢集啟動時所有的資源都已經確定了,所以所有提交的作業會競爭叢集中的資源)

會話模式比較適合單個規模小。執行時間短的大量作業

 

單作業模式:為了更好的隔離資源 考慮為每個提交的作業啟動一個叢集

注意:Flink本身無法直接這樣執行,所以單作業模式一般需要藉助資源管理平臺來啟動叢集

 

應用模式:無需使用客戶端,直接把應用提交到JobManager上執行,為每一個提交的任務單獨啟動一個JobManager(也就是建立一個叢集)這個JobManger只為了執行這一個應用而存在,執行結束之後JobManger也就關閉了

區別:應用模式和單作業模式 都是提交作業後再建立叢集,單作業模式是通過客戶端來提交的 客戶端解析的每一個作業對應一個叢集 二應用模式下直接由Jobmanger執行應用程式 並且即使包含多個作業也只建立一個叢集

 

standlone模式

yarn模式

  yarn模式就是把Flink應用提交給yarn上的Resourcemanager,yarn的Resourcemanager會向yarn的NodeManager申請容器,在這些容器上Flink會部署JobManager和TaskManager的例項,從而啟動叢集。Flink會根據執行在Jobmanager上的作業所需要的slots的數量動態分配TaskManager資源

  yarn模式下的部署模式:

    yarn-session:會話模式 需要首先申請一個yarn會話

yarn-session.sh -d

-d:後臺執行
-jm:配置JobManger所需要的記憶體

作業提交:
1)通過web UI提交作業
2)通過命令列提交作業
  flink run -c 主類名 xxxxx.jar

 

    per-job:單作業模式

    提交作業的命令:flink run -d -t yarn-per-job -c 主類名 xxxx.jar 或者 flink run -m yarn-cluster -c 主類名 xxx.jar

    檢視或者取消作業的命令:

    flink list -t yarn-per-job -Dyarn.application.id=application_xxxx

    flink cancel -t yarn-per-job -Dyarn.application.id=application_xxxx

    application:應用模式

    提交作業的命令:flink run-application -t yarn-application -c 主類名 xxxxxx.jar