即時任務資源自訂,即指Realtime ComputeFlink配置細粒度資源的專家模式 (BETA),Flink全託管引入的全新的資源配置模式,支援對作業所使用的資源進行細粒度的資源控制,以滿足作業吞吐的要求。系統會自動根據您配置的資源需求,以Native K8s的模式運行作業,TM的規格和個數將會根據Slot的規格和作業並發度,由系統自動決定。本文將介紹如何在Dataphin自訂Alibaba Blink即時任務的資源。
Alibaba Blink資源自訂配置入口
在Dataphin首頁,單擊頂部功能表列研發,進入資料開發頁面。
在資料開發頁面,按照下圖操作指引,進入BLINK_SQL任務的自訂資源配置頁面。

配置說明
在資源配置頁面,為您展示一張拓撲圖,圖中每個方框代表了一個計算任務,都可以進行獨立配置。每個Group代表著Group內部的節點可以存放在一台機器進行計算,可以有效避免資料的網路傳播,提升效能。

系統預設為您展示系統推薦的資源配置。
配置Group執行參數
單擊需要配置資源的Group右上方的
後,在自訂配置Group執行參數對話方塊配置參數。
參數
描述
core
通常,core配置成0.25。即一個CPU可以支援4個線程同時運算,因此core的取值不能超過1。
heap_memory
單位為MB,heap_memory是堆記憶體,供Java應用程式使用的記憶體。
heap_memory及其內部各組成的大小可以通過JVM的一系列命令列參數來控制,在一般的blink程式中,都會需要一定的heap_memory開銷,例如申請一定的heap_memory作為程式的緩衝等,因此您可以按程式的規模來設定其大小。
parallel
表示同時並發的線程數量,您可以選擇合適的數量來運行自己的任務。並不是越大越好,越大代表你資源申請的越多,反而對效能有抑制。通常,一個簡單計算節點每秒可以處理2000~4000條之間的資料。
重要如果源頭是tt,tt的queue大小決定了parallel的上限,不能超過這個數字,否則程式將報錯。
direct_memory
單位為MB,direct_memory並不是虛擬機器運行時資料區的一部分,也不是Java虛擬機器規範中定義的記憶體地區。但是這部分記憶體也被頻繁的使用,而且也可能導致OutOfMemoryError異常出現。如果您的程式有使用igraph或者swift,可以適當配置其大小,如16-32MB。
在java NIO(New Input/Output)類,引入了一種基於通道(Channel)與緩衝區(Buffer)的I/O方式,direct_memory可以使用Native函數庫直接分配堆外記憶體,然後同一個儲存在Java堆中的DirectByteBuffer對象作為這塊記憶體的引用進行操作。這樣能在一場情境中顯著提高效能,因為避免了在Java堆和Native堆中來回複製資料。
native_memory
單位為MB,native_memory沒有相應的參數來控制大小,其大小依賴於作業系統進程的最大值(對於32位系統就是3~4G,各種系統的實現並不一樣),以及產生的Java位元組碼大小、建立的線程數量、維持Java對象的狀態資訊大小(用於GC)以及一些第三方的包。
native memory存放下面4種資訊:
管理Java heap的狀態資料(用於GC)。
JNI調用,也就是Native Stack。
JIT(即使編譯器)編譯時間使用native memory,並且JIT的輸入(Java位元組碼)和輸出(可執行代碼)也都是儲存在native memory。
NIO direct buffer。
完成參數配置後,單擊確定。
配置Operator執行參數
按照下圖操作指引,進入自訂配置Operator執行參數對話方塊並配置參數。

自訂配置Operator執行參數對話方塊中core、heap_memory、parallel、direct_memory和native_memory參數說明,請參見配置Group執行參數,下表僅對state_size、chain_strategy參數進行說明。
參數
描述
state_size
作業執行過程中所使用的狀態資料的大小,通常預設為0。
chain_strategy
chain_strategy用於定義多個節點的連結策略,Dataphin支援的連結策略包括:
Always:預設參數,即和其他節點均部署在一台機器上,沒有特殊要求。
Never:節點不會和其他節點放在一台機器上,即需要獨立部署。
Head:可以接受和其他節點放在一台機器上,但是只能作為Group的前端節點。
重要因Head和Never極少出現,通常預設為Alway。
完成參數配置後,單擊確定。