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.
$ 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
Yorum Gönder