Airflow ile K8s otomasyonu 3: Cok sira beklemek

Resource davasi
Efendim paylasimli bir k8s clusterini kullanmaktayiz. Data cok buyuk aman aman bir data degil, her bir islenecek dosya bir pod'un hafizasina sigacak kadar aslinda. 

Ama her he hikmetse acayip bir memory kullanimi var. Bas supheli ise pandas. Pandas ile baya bir interpolasyon ve forward/backward fill islemleri yapiyoruz. Tabi memory profiling yapmadan buradan atip tutuyoruz. 

Esas sikinti su ki, ilk bastan itibaren 32Gb Ram ve 6 cpu ile ayaga kalkan podlarin genelde basarili oldugu gorulmus olacak ki boyle bir gelenek olusmus. Ama bu resource'lara sahip pod kaldirmak, hele ki airflow icerisinden 20 tanesini ayni anda kaldirmak cok zor gozukuyor. Cunku cluster'da bu kadar resource hemencecik bulunmuyor. 

Ama bence zaten 6 tane cpu cok gereksiz, uygulama python uygulamasi zaten, tek core kullanabiliyor. Ama bunun yaninda pandas multi-core islem yapiyor mu bilmiyorum. Bakmak lazim. Aslinda adam gibi memory profiling yapmak lazim ama, who has time?

Pandas tek dabanca
Eveeet, evet, gorduk ki pandas sadece tek bir core kullanabiliyor. Buradan 6 core request eden dangoza selam. Bu uygulama sadece tek core kullanabiliyor. [In pandas, you are only able to use one core at a time when you are doing computation of any kind.] Bunu iyice kesinlestirmek icin OpenShift uzerinde calisan bir pod'un resource utilization'una bir bakmak lazim.

Bu oc cli ile cok mumkun:

$ oc adm top pods -n openshift-console
NAME                         CPU(cores)   MEMORY(bytes)
console-7f58c69899-q8c8k     0m           22Mi
console-7f58c69899-xhbgg     0m           25Mi
downloads-594fcccf94-bcxk8   3m           18Mi
downloads-594fcccf94-kv4p6   2m           15Mi


Ama lakin ki oyle degildir, cunku babamizin OpenShift cluster'i olmadigi icin bize bu izni vermemisler. Ben suanda goremiyorum. `No RBAC policy matched` hatasi aliyorum. Neyse, tahminlerimizle yola devam edecegiz ya da usenmeyip, lokale minikube kurup, pod'u orada test edecegiz!

Malesef cok fazla `pending` pod olusturdum ve onlari batch olarak silmem gerek:

oc get pods -n oc-project-name | grep Pending | awk '{print $1}' | xargs oc delete pod 

128Gb ram ve tek core istedim ama hala daha hicbir pod ayaga kalkmis degil. Beklentimizi dusuru 64Gb ve tek core talep ediyoruz. 

2.Gun

Tam bir gun bekledi 64 Gb ve 1 Cpu isteyen pod'lar ve resource allocate edilmedi. Simdi ariflow dag'ini, isteyecehi ram ve cpu argumanlarini parametrize ederek (sanirim Variables'e koyacagim), bu isi burada sonlandiracagim. 

Gorusmek uzere.


 

Yorumlar

Bu blogdaki popüler yayınlar

Python'da Multithreading ve Multiprocessing

Threat Modeling 1

Encoding / Decoding