Örnek sorular
St Flink Runtime Checkpointing StateZorluk 2
Apache Flink 1.19 çalışma zamanı mimarisinde, bir JobManager süreci hangi üç bileşenden oluşur?
- aDispatcher, TaskManager ve JobMaster
- bDispatcher, ResourceManager ve JobMaster✓
- cResourceManager, TaskManager ve global bir Scheduler
- dJobMaster, TaskExecutor ve Dispatcher
Açıklama:Bir JobManager süreci; Dispatcher'ı (iş gönderimi için REST uç noktası), ResourceManager'ı (küme genelinde slot tahsisi) ve çalışan her iş için bir JobMaster'ı (execution graph zamanlaması ve hata yönetimi) barındırır. TaskManager/TaskExecutor işçi sürecidir ve JobManager'ın parçası değildir. Diğer şıklar TaskManager/TaskExecutor'ı yanlışlıkla JobManager içine yerleştiriyor ya da var olmayan bir 'global Scheduler' bileşeni uyduruyor.
St Flink Runtime Checkpointing StateZorluk 1
Bir Flink TaskManager'ındaki tek bir task slot neyi temsil eder?
- aTaskManager'ın kaynaklarının, özellikle managed memory'nin, sabit bir payı✓
- bOperator başına başlatılan ayrı bir JVM süreci
- cAynı kümeye gönderilen işlerin mantıksal bir gruplaması
- dTek bir operatör için tanımlanmış bir checkpoint aralığı sınırı
Açıklama:Task slot, bir TaskManager'ın kaynaklarının bir alt bölümüdür — 3 slotlu bir TaskManager, managed memory'sinin 1/3'ünü her slota ayırır. Ayrı bir JVM değildir (bir TaskManager'ın tüm slotları aynı JVM içinde çalışır), bir iş gruplaması değildir ve checkpoint aralıklarıyla ilgisi yoktur.
St Flink Runtime Checkpointing StateZorluk 2
Flink'te varsayılan olarak, aynı işin farklı task'larına ait subtask'lar aynı task slot'unu paylaşabilir mi?
- aHayır — bir işteki farklı task'lar ayrı slotlara yerleştirilir
- bYalnızca task'lar açıkça
disableChaining() çağırırsa - cBatch execution modunda paylaşabilir, streaming modunda paylaşamaz
- dEvet, Flink'in varsayılan slot sharing group'u sayesinde✓
Açıklama:Varsayılan olarak bir işin tüm task'ları aynı slot sharing group'una aittir, bu yüzden farklı task'ların (ör. source, map, sink) subtask'ları aynı slotu işgal edebilir. Bu, task'ları tek bir thread'de birleştiren chaining'den bağımsızdır ve hem streaming hem batch execution için geçerlidir.
St Flink Runtime Checkpointing StateZorluk 3
Bir streaming işinde source (parallelism 4), map (parallelism 4) ve sink (parallelism 2) var, hepsi varsayılan slot sharing group'unda. Slot sharing açıkken, iş çalışmak için minimum kaç task slot'a ihtiyaç duyar?
- a10 — tüm task'ların parallelism toplamı
- b2 — işin task'ları arasındaki en düşük parallelism
- c4 — işteki en yüksek task parallelism'i✓
- d3 — pipeline'daki farklı task sayısı
Açıklama:Slot sharing ile her slot, paylaşım grubundaki her task'ı kapsayan bir paralel pipeline dilimini barındırabilir. Bu yüzden gereken slot sayısı, işin maksimum parallelism'ine (burada 4) eşittir, tüm task'ların parallelism toplamına değil. 10 sayısı, listelenen her subtask için ayrı slot varsayar ve sharing ile chaining'i yok sayar.
St Flink Runtime Checkpointing StateZorluk 2
Flink'te operator chaining ne yapar?
- aUyumlu bitişik operator subtask'larını tek bir thread'de çalışan tek bir task'ta birleştirir✓
- bAynı operatörün birden çok paralel örneğini tek bir örnekte birleştirir
- cChain'lenen operatörlerin parallelism'ini otomatik olarak source'a eşleyecek şekilde artırır
- dChain'lenen operatörleri ortak bir keyed-state namespace'inde birleştirir
Açıklama:Operator chaining, aynı parallelism'e ve forwarding (bire-bir) bağlantıya sahip bitişik operatörleri tek bir thread tarafından çalıştırılan tek bir task'a yerleştirir — bu da thread devri ile serileştirme/tamponlama ek yükünü azaltır. Paralel örnekleri tek örnekte birleştirmez, parallelism'i değiştirmez ve chain'lenen operatörler kendi ayrı state'lerini korur.
St Flink Runtime Checkpointing StateZorluk 3
Bir DataStream pipeline'ı source -> map -> keyBy -> reduce -> sink şeklinde. Operator chaining hangi noktada zorunlu olarak kırılır?
- a
map'te, çünkü map operatörleri chaining'i bozar - b
keyBy'da, çünkü map ile reduce arasında ağ üzerinden bir shuffle (yeniden bölümleme) gerektirir✓ - c
sink'te, çünkü sink'ler ayrı bir task slot'ta çalıştırılır - dHiçbir yerde — tüm operatörler aynı parallelism'e sahip olduğundan pipeline'ın tamamı tek bir task'ta chain'lenir
Açıklama:Chaining, eşit parallelism'e sahip operatörler arasında forwarding (bire-bir, yeniden bölümleme olmayan) bir bağlantı gerektirir. keyBy, ağ üzerinden hash ile bölümlenen bir shuffle getirir ve parallelism ayarlarından bağımsız olarak chain'i her zaman o noktada kırar.