Bir iş başlamadan önce kaynaklarını yapılandırabilir veya iş çalışırken bu kaynakları değiştirebilirsiniz. Bu konuda, iş kaynaklarının nasıl yapılandırılacağı ve her mod için geçerli parametreler açıklanmaktadır.
Dikkat Edilecek Hususlar
Kaynakları yapılandırdıktan sonra değişikliklerin etkili olması için işi yeniden başlatmanız gerekir.
Yordam
-
Kaynak yapılandırma sayfasına gidin.
Realtime Compute for Apache Flink konsolu üzerinden oturum açın.
Hedef çalışma alanının Actions sütununda Console seçeneğine tıklayın.
sayfasında hedef işin adına tıklayın.
Configuration sekmesinde, Resources bölümünün sağ tarafındaki Edit seçeneğine tıklayın.
-
İş kaynak bilgilerini değiştirin.
Kaynak modu
Açıklama
Ayrıntılar
Basic
Temel modda, her TaskManager için toplam kaynakları (CPU ve toplam JVM belleği) belirtirsiniz. Sistem daha sonra bu kaynakları
taskmanager.numberOfTaskSlotsayarına göre tüm yuvalara eşit şekilde dağıtır. Bu mod, çoğu basit iş için yeterlidir.Expert
Uzman modda, her Slot Paylaşım Grubu (SSG) için kaynakları yapılandırırsınız. Flink daha sonra her yuva için gereken teknik özellikleri hesaplar ve kaynak havuzundan eşleşen TaskManager'ları ve yuvaları dinamik olarak ister. Kaba taneli tahsisin düşük kaynak kullanımına neden olabileceği karmaşık işlerde, her operatörü ince ayarlamak için ince taneli kaynak kontrolünü kullanabilirsiniz. Bu yaklaşım, kaynak kullanımını iyileştirir ve aktarım hızı gereksinimlerinin karşılanmasına yardımcı olur.
NotUzman mod yalnızca SQL işleri için desteklenir.
TaskManager, JobManager, Task ve yuva gibi kavramlar hakkında daha fazla bilgi için Apache Flink Architecture belgelerine bakın.
Save seçeneğine tıklayın.
İşi yeniden başlatın.
Temel mod (kaba taneli)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TaskManager JVM Ek Yükü
Temel modda, TaskManager Belleği ayarlandığında sistem otomatik olarak bir kısmını JVM Ek Yükü olarak ayırır. Varsayılan olarak JVM Ek Yükü, toplam TaskManager belleğinin %10'unu oluşturur. Bu oran taskmanager.memory.jvm-overhead.fraction parametresi tarafından kontrol edilir (varsayılan: 0.1). Bu tahsisi ayarlamak için Running Parameters Configuration altındaki Other Configurations alanında taskmanager.memory.jvm-overhead.fraction değerini ayarlayın.
Bir TaskManager işlemi için bildirilen Resident Set Size (RSS), Sayfa Önbelleğini (Page Cache) içermez. TaskManager ve işletim sistemi bellek için yarıştığında yetersiz bellek (OOM) hataları oluşabilir. İşletim Sistemi Sayfa Önbelleği kullanımını karşılamak için planlanan TaskManager belleğinin üzerine en az 400 MB ek bellek ayırın.
JobManager belleği önerileri ve OOM sorun giderme adımları:
Önerilen minimum yapılandırma — Kararlı çalışmayı sağlamak için JobManager'a en az 0,5 çekirdek ve 2 GiB bellek yapılandırın. Üretim iş yükleri için 1 çekirdek ve 4 GiB önerilir.
OOM risk eşiği — JobManager bellek kullanımı sürekli olarak yaklaşık %80 seviyesinde kalıyorsa iş, OOM hatası riski altındadır. Bu riski azaltmak için ayrılan belleği artırın.
Paimon senkronizasyon senaryosu (Direct Buffer Memory OOM) — İşiniz büyük miktarda veriyi Paimon'a senkronize ediyor ve
JobManager Direct Buffer Memory OOMhatası alıyorsanız,jobmanager.memory.off-heap.sizedeğerini varsayılan 128 MB'tan 512 MB veya daha fazlasına çıkarın. Bu parametreyi Running Parameters Configuration altındaki Other Configurations alanında ayarlayın.
Kaynak gereksinimlerini hesaplamak için aşağıdaki formülleri kullanabilirsiniz:
CU Sayısı = MAKS(JobManager ve TaskManager'lar için Toplam CPU, JobManager ve TaskManager'lar için Toplam Bellek / 4)
Gerçek TaskManager sayısı = tavan(Paralellik / TaskManager Başına Yuva)
TaskManager başına gerçek yuva sayısı = Paralellik / Gerçek TaskManager sayısı
Bölme sonuçlarını en yakın tam sayıya yukarı yuvarlayın.
Kaynak yapılandırmaları varsayılan maksimum sınırları aşamaz. Bu sınırları artırmak için destek talebi oluşturun.
Ayrıca, işin Configuration sekmesindeki Parameters bölümü içindeki Other Configuration alanında
numberOfTaskSlotsparametresini ayarlayabilirsiniz. Bu ayar, TaskManager Slots alanıyla aynı etkiye sahiptir ancak önceliklidir.
Örneğin, paralelliği 12 ve TaskManager başına yuva sayısını 4 olarak ayarladığınızı varsayalım.
Bu örnekte Job Manager CPU 2 çekirdek, JobManager Belleği 4 GiB, Task Manager CPU 2 çekirdek ve TaskManager Belleği 4 GiB'dir.
Realtime Compute for Apache Flink konsolunda gerçek TaskManager sayısı 3'tür ve her TaskManager'ın 4 yuvası vardır.
Gerçek TaskManager sayısı ve TaskManager başına yuva sayısı aşağıdaki gibi hesaplanır:
Gerçek TaskManager sayısı = tavan(Yapılandırılan paralellik / Yapılandırılan TaskManager başına yuva) = tavan(12 / 4) = 3.
TaskManager başına gerçek yuva sayısı = Paralellik / Gerçek TaskManager sayısı = 12 / 3 = 4.
Uzman mod (ince taneli)
Uzman mod yalnızca SQL işleri için desteklenir.
Bir iş dağıtıldıktan sonra SQL veya kaynak yapılandırmasını değiştirirseniz, işin düzgün başlamasını sağlamak için kaynak planı grafiğini yeniden getirmeniz gerekir.
Temel kaynakları yapılandırma
|
|
|
|
|
|
|
|
|
|
|
|
Yuva kaynaklarını yapılandırma
Expert alanında kaynak planı grafiğini getirmek için Get Plan Now seçeneğine tıklayın.
Bir yuva kutusundaki Düzenle
simgesine tıklayın. Oluşturulan kaynak planı grafiği, her biri VERTEX operatör bilgileri ve bir PARALLELISM değeri içeren birden çok slot kutusu görüntüler.-
Yuva yapılandırmasını değiştirin. İletişim kutusunda CPU, Heap Memory, Off-Heap Memory ve parallelism parametrelerini yapılandırabilirsiniz.
Burada ayarladığınız paralellik, bu Slot Paylaşım Grubu içindeki tüm operatörlere uygulanır. Yapılandırmayı kaydettikten sonra sistem otomatik olarak:
Bu Slot Paylaşım Grubundaki tüm operatörler için aynı paralelliği ayarlar.
İşin hesaplama mantığına göre durum arka ucu, Python ve operatörler için gereken belleği ayırır. Bu tahsis otomatiktir.
Bir Source düğümü için bölme sayısıyla orantılı bir paralellik ayarlamanız önerilir. Diğer bir deyişle, paralellik bölme sayısının bir böleni olmalıdır. Örneğin, bir Kafka konusunun 16 bölmesi varsa veri eğriliğini önlemek için paralelliği 16, 8 veya 4 olarak ayarlayın.
Bir Source düğümünün paralelliğini çok düşük ayarlamak bir darboğaza neden olabilir çünkü tek bir Source çok fazla veri okuyarak iş aktarım hızını düşürebilir.
Diğer düğümler için veri trafiğine göre paralelliği ayarlayın ve daha fazla trafiği olan düğümlere daha yüksek paralellik atayın.
NotNotUzman modda, yuva yapılandırma iletişim kutusu manuel yapılandırma için CPU, Heap Memory ve Off-Heap Memory seçeneklerini sunar. JVM Ek Yükü, ağ arabellekleri ve çerçeve belleği dahil diğer bellek bileşenleri, varsayılan oranlarında sistem tarafından otomatik olarak ayrılır. Bu bileşenler, TaskManager başladığında önceden ayrılır ve iş yürütme sırasında dinamik olarak ayarlanmaz.
Bu otomatik olarak ayrılan bileşenlerden kaynaklanan yetersiz bellek hatalarıyla karşılaşırsanız Running Parameters Configuration altındaki Other Configurations alanında aşağıdaki parametreleri yapılandırın:
taskmanager.memory.jvm-overhead.fraction: Toplam TaskManager belleğinin bir kesri olarak JVM Ek Yükü boyutu. Varsayılan:0.1(%10).taskmanager.memory.jvm-overhead.max: JVM Ek Yükü için maksimum boyut.taskmanager.memory.jvm-overhead.min: JVM Ek Yükü için minimum boyut.
OK seçeneğine tıklayın.
Operatör kaynaklarını yapılandırma
Varsayılan olarak tüm operatörler tek bir Slot Paylaşım Grubunu paylaşır; bu da kaynaklarını ayrı ayrı yapılandırmanızı engeller. Belirli bir operatör için kaynakları yapılandırmak üzere Multiple SSG özelliğini etkinleştirin. Bu özellik, her operatöre bağımsız bir yuva atayarak kaynaklarını o yuvada yapılandırmanıza olanak tanır.
Configuration sekmesinde, Resources bölümündeki Edit seçeneğine tıklayın ve Mode değerini Expert olarak ayarlayın.
-
(İsteğe bağlı) Kaynak planı görüntülenmiyorsa Get Plan Now seçeneğine tıklayın.
Varsayılan olarak, oluşturulan kaynak planı grafiği tüm operatörleri tek bir slot kutusu içinde gösterir.
-
Multiple SSG anahtarını açın ve ardından Re-fetch seçeneğine tıklayın.
Bu işlem, paylaşım grubundaki operatörleri bireysel yuvalara böler.
-
Hedef operatöre karşılık gelen yuva kutusundaki Düzenle
simgesine tıklayın ve ardından operatör kaynaklarını değiştirin.Modify slot iletişim kutusunda CPU, Heap Memory, Off-Heap Memory ve parallelism parametrelerini yapılandırabilirsiniz.
OK seçeneğine tıklayın.
Tipik senaryo: Sink operatöründe yüksek Busy ölçümü upstream geri baskıya neden olur
İş topolojisinde sink operatörünün Busy ölçümü yüksek kalıyorsa ve upstream operatörlerde geri baskı görülüyorsa yazma darboğazı iş gecikme süresini artırır. Önceki adımları izleyerek Mode değerini Expert olarak ayarlayın, Multiple SSG özelliğini açın ve yalnızca sink operatörüne karşılık gelen yuvanın CPU ve belleğini artırın. Örneğin, yazmaları hızlandırmak ve geri baskıyı azaltmak için CPU'yu 0,5 çekirdekten 2 çekirdeğe ve belleği 2 GiB'den 4 GiB'ye çıkarın. İnce ayardan sonra O&M > Deployments sayfasına gidin ve sink operatörünün Busy ölçümünün ve upstream geri baskının iyileşip iyileşmediğini kontrol edin. Bu örnekteki değerler yalnızca referans amaçlıdır ve işiniz için aynı sonucu garanti etmez.
Operatör paralelliği, zincirleme stratejisi ve Durum Son Kullanma Süresi Ayarları
State Expiration Time Settings yapılandırması yalnızca Ververica Runtime (VVR) 8.0.7 ve sonraki sürümlerde desteklenir.
Tek tek operatörler için paralellik, zincirleme stratejisi ve State Expiration Time Settings yapılandırabilirsiniz.
-
Hedef VERTEX kutusundaki Genişlet
simgesine tıklayın.Genişletmeden sonra VERTEX kutusu her operatör düğümünü, PARALLELISM değerini ve her operatörün yanındaki bir Düzenle simgesini görüntüler.
NotBir VERTEX üzerindeki Düzenle
simgesine tıklayarak o VERTEX içindeki tüm operatörlerin paralelliğini toplu olarak ayarlayabilirsiniz. Operatör için Düzenle
simgesine tıklayın.-
Operatör kaynaklarını yapılandırın.
Aşağıdaki tabloda parametreler açıklanmaktadır.
Parametre
Açıklama
Paralellik
Operatör için paralellik.
Zincirleme stratejisi
Zincirleme, birden çok operatörü tek bir görevde birleştirerek veri aktarımını ve serileştirme ek yükünü azaltıp performansı iyileştirir. Ancak, yürütme akışı üzerinde daha hassas kontrol sağlamak için bir zinciri kırabilirsiniz. Aşağıdaki stratejiler kullanılabilir:
-
ALWAYS (Varsayılan): Operatör her zaman upstream ve downstream operatörlerle zincirlenebilir.
-
HEAD: Geçerli operatör bir zincirin başı olarak hareket eder. Upstream operatörlerle zincirlenmez ancak downstream operatörlerle zincirlenmeye devam eder.
-
NEVER: Geçerli operatör herhangi bir upstream veya downstream operatörle zincirlenmez.
State Expiration Time Settings
Son kullanma süresini saniye, dakika, saat veya gün cinsinden ayarlayabilirsiniz. Varsayılan olarak operatör, işin durum son kullanma süresini devralır; bu süre varsayılan olarak 1,5 gündür. İş düzeyindeki son kullanma süresini yapılandırmak için bkz. Çalışma parametrelerini yapılandırma.
Not-
Bu özellik yalnızca Ververica Runtime (VVR) 8.0.7 ve sonraki sürümlerde desteklenir.
-
TTL yapılandırması yalnızca durum bilgisi tutan operatörler için desteklenir.
-
Durum sona erme, yaklaşık bir temizleme mekanizmasıdır. Sistem, TTL süresi dolduktan sonra süresi dolmuş durumun hemen kaldırılacağını garanti etmez. Gerçek temizleme süresi, arka plandaki duruma erişim kalıplarına ve temizleme ilkelerine bağlıdır.
-
OK seçeneğine tıklayın.
SSS
Paralelliği ayarlamak aynı sayıda CU tüketmek anlamına mı gelir?
Hayır. Paralellik, bir işte çalışan eşzamanlı görevlerin sayısını ifade eder. CU (Compute Unit), Realtime Compute for Apache Flink tarafından kullanılan faturalandırma ve kaynak birimidir. Bunlar 1:1 ilişki içinde değildir.
Toplam CU tüketimi aşağıdaki formülle hesaplanır:
Toplam CU tüketimi = Paralellik × Görev başına CU
Her görevin tükettiği CU, iş için yapılandırılan yuva başına kaynak teknik özelliklerine göre belirlenir. Paralelliği artırmak toplam CU tüketimini artırır ancak artış, görev başına CU teknik özelliklerine orantılıdır; basit bir 1:1 oranı değildir.
SQL işlerinde SET 'parallelism.default' neden etkili olmuyor?
SQL iş deyimlerinde doğrudan SET 'parallelism.default' = 'N'; kullanımı Realtime Compute for Apache Flink'te etkili değildir. Paralelliği yapılandırmak için aşağıdaki yöntemlerden birini kullanın:
İlgili SQL deyiminin
WITHyan tümcesinde paralelliği ayarlayın.sayfasındaki kaynak yapılandırma düzenleme arayüzünde paralelliği değiştirin.
Print Sink veya Join operatörü yetersiz kaynağa veya düşük performansa neden olduğunda ne yapmalıyım?
Uygun eylem belirli semptoma bağlıdır:
Print Sink, TaskManager kaynak kıtlığına neden oluyor — Bu sorun yalnızca parametre ayarıyla çözülemez. Gerçek veri hacmine göre kaynak gereksinimlerinizi değerlendirin, kaynak tablo alan türlerinin doğru tanımlandığından emin olun (örneğin, uygun olduğunda
STRINGyerineBIGINTkullanın) ve Print Sink'in hata ayıklama ek yükünü desteklemek için yeterli TaskManager kaynağı ayırın.Düşük bellek kullanımına rağmen Join performansı kötü — CU sayısını artırın. Ancak temel neden veri eğriliğiyse daha fazla kaynak eklemek sorunu çözmeyebilir. Önce veri eğriliği sorununu çözün, ardından ek kaynağa ihtiyaç olup olmadığını değerlendirin.
İş sık sık yeniden başlıyor ve uçtan uca gecikme süresi yüksek — İş, durumsuz bir yeniden başlatmanın ardından tam durum senkronizasyon aşamasındaysa yuva sayısını 1'e ayarlamayı, paralelliği ayrı olarak yapılandırmayı ve 1 çekirdek 4 GiB TaskManager teknik özellikleriyle orta düzeyde eşzamanlılık (örneğin, 10) kullanarak performansı test edip optimize etmeyi deneyin.
İlgili belgeler
Kaynak optimizasyon teknikleri hakkında bilgi için Yüksek performanslı Flink SQL optimizasyon teknikleri konusuna bakın.
Kaynakları manuel olarak ayarlamak yerine otomatik performans ayarlamayı etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Otomatik performans ayarlamayı yapılandırma.
Bir işin temel ayarlarını, çalışma parametrelerini ve günlük kaydını yapılandırmak için bkz. İş dağıtım bilgilerini yapılandırma.
Flink Advisor hizmeti ile işinizin durumunu izleyin. Daha fazla bilgi için bkz. Akıllı İş Tanılama.