Amazon EMR'si Spark, Hive, Hudi ve Presto gibi tamamen yönetilen ve saniye başına faturalandırmalı açık kaynaklı çerçevelerden oluşan bir koleksiyon sağlayan sektör lideri bulut büyük veri çözümüdür. Amazon EKS'de Amazon EMR Amazon EMR'yi aynı platformda dağıtmanıza olanak tanıyan bir dağıtım seçeneğidir. Amazon Elastik Kubernetes Hizmeti Çok kiracılı ve diğer uygulamalar tarafından kullanılan (Amazon EKS) kümeleri, kaynak kullanımını iyileştirir, maliyeti düşürür ve altyapı yönetimini basitleştirir. EKS'de EMR size sağlar %5.37 maliyet tasarrufu ile OSS Spark v3.3.1'den 76.8 kata kadar daha iyi performans. Ayrıca, StartJobRun adlı bir AWS API'si gibi çok çeşitli iş gönderme yöntemleri veya EKS'de Amazon EMR için Kubernetes için AWS Denetleyicileri aracılığıyla Kubernetes denetleyicisi.
Bu konsolidasyon, ekip veya uygulama tarafından geri ödeme veya ters ibraz için ince taneli maliyetlerin ölçülmesinde artan zorlukla birlikte gelir. göre bir CNCF ve FinOps Vakfı araştırması, Kubernetes kullanıcılarının %68'i ya aylık tahminlere güveniyor ya da Kubernetes maliyetlerini hiç izlemiyor. Aktif Kubernetes maliyet izlemesi bildiren yanıtlayanlar için, AWS Maliyet Gezgini ve Kubecost, kullanılan en popüler araçlar olarak sıralandı.
Şu anda, tahsis edilmiş AWS hesaplarında ayrı EKS kümeleriyle sabit çoklu kiracılık veya paylaşılan bir EKS kümesinde ayrı düğüm gruplarını kullanarak esnek çoklu kiracılık kullanarak kiracı başına maliyetleri dağıtabilirsiniz. Maliyetleri azaltmak ve kaynak kullanımını iyileştirmek için, düğümlerin farklı ad alanlarında paylaşıldığı ad alanı tabanlı ayrımı kullanabilirsiniz. Ancak, işlem optimizasyonunu (Tasarruf Planları veya Spot Örnek maliyeti gibi) ve EKS'de EMR gibi AWS hizmetlerinin maliyetini hesaba katarken maliyetleri iş yüküne veya ad alanlarına göre hesaplamak ve ekiplerle ilişkilendirmek zorlu ve önemsiz olmayan bir iştir.
Bu gönderide, AWS'ye özgü yetenekleri birleştiren EKS'de EMR için bir maliyet geri ödeme çözümü sunuyoruz. AWS Maliyet ve Kullanım Raporları (AWS CUR), Amazon EKS'de Kubecost'u kullanarak derinlemesine Kubernetes maliyet görünürlüğü ve öngörüleri.
Çözüme genel bakış
EKS'de EMR'deki bir iş, esas olarak iki boyutta maliyete neden olur: bilgi işlem kaynakları ve EKS kullanımında EMR için marjinal bir artış ücreti. Boyutların her biriyle ilişkili maliyeti izlemek için üç kaynaktan gelen verileri kullanırız:
- AWS KÜRÜ – Bunu, iş başına EKS maliyet artışında EMR'yi almak için ve Kubecost'un işlem maliyetini herhangi bir tasarruf planı veya kullanılan ayrılmış bulut sunucusu ile uzlaştırması için kullanıyoruz. CUR için destekleyici altyapı, şu bölümde tanımlandığı şekilde dağıtılır: AWS CloudFormation şablonlarını kullanarak Athena'yı kurma.
- Kubecost – Bunu, yürütücü ve sürücü bölmeleri tarafından yapılan işlem maliyetini almak için kullanırız.
Maliyet tahsis süreci aşağıdaki bileşenleri içerir:
- Hesaplama maliyeti Kubecost tarafından sağlanmaktadır. Ancak derinlemesine bir analiz yapabilmek için saatlik bir Kubernetes tanımlıyoruz. CronJob üzerinde, Kubecost'tan veri almak için bir bölme başlatır ve onu içinde depolar. Amazon Basit Depolama Hizmeti (Amazon S3).
- CUR dosyaları bir S3 kovasında saklanır.
- Biz kullanmak Amazon Atina EKS işinde bir EMR çalıştırmanın toplam maliyetine ilişkin bir görünüm oluşturmak ve birleştirilmiş bir görünüm sağlamak.
- Son olarak, tercih ettiğiniz iş zekası araçlarını JDBC or ODBC Athena ile bağlantıları. Bu gönderide kullandığımız Amazon QuickSight görselleştirme amacıyla yerel entegrasyon.
Aşağıdaki diyagram, genel mimarinin yanı sıra farklı bileşenlerin birbirleriyle nasıl etkileşime girdiğini gösterir.
İzleme çözümümüzü dağıtmak için bir kabuk betiği sağlıyoruz. Kabuk komut dosyası, altyapıyı bir AWS CloudFormation şablon, AWS Komut Satırı Arayüzü (AWS CLI) ve eksctl
ve kubectl
komutlar. Bu komut dosyası aşağıdaki eylemleri çalıştırır:
- CloudFormation dağıtımını başlatın.
- Bir AWS Maliyet ve Kullanım Raporu oluşturun ve yapılandırın.
- tarafından desteklenen Kubecost'u yapılandırın ve devreye alın Prometheus için Amazon Tarafından Yönetilen Hizmet.
- Bir Kubernetes CronJob dağıtın.
Önkoşullar
Aşağıdaki ön koşullara ihtiyacınız var:
Bu gönderi, zaten bir EKS kümeniz olduğunu ve EKS işlerinde EMR çalıştırdığınızı varsayar. Çözümü test etmeye hazır bir EKS kümeniz yoksa standart bir kümeyle başlamanızı öneririz. EKS planı üzerinde EMR EKS işlerinde EMR göndermek için bir küme yapılandıran.
Çözümü kurun
Kabuk betiğini çalıştırmak için aşağıdaki adımları tamamlayın:
- Aşağıdakileri klonlayın GitHub deposu.
- Klasöre git
cost-tracking
aşağıdaki komutla:
cd cost-tracking
- Komut dosyasını aşağıdaki komutla çalıştırın:
sh deploy-emr-eks-cost-tracking.sh REGION KUBECOST-VERSION EKS-CLUSTER-NAME ACCOUNT-ID
Komut dosyasını çalıştırdıktan sonra, EKS işlerinde EMR'nizle ilişkili maliyeti anlamak için Kubecost ve CUR verilerini kullanmaya hazırsınız.
Takip maliyeti
Bu bölümde, Kubecost'tan alınan işlem maliyetini nasıl analiz edeceğinizi, EKS artış verilerinde EMR'yi nasıl sorgulayacağınızı ve maliyet için tek bir birleştirilmiş görünüme sahip olmak için bunları nasıl birleştireceğinizi gösteriyoruz.
Hesaplama maliyeti
Kubecost, Kubernetes nesnesi başına maliyeti izlemek için çeşitli yollar sunar. Örneğin, maliyeti bölmeye, denetleyiciye, işe, etikete veya dağıtıma göre izleyebilirsiniz. Ayrıca, boşta kalan kaynakların maliyetini anlamanıza olanak tanır. Amazon Elastik Bilgi İşlem Bulutu Kapsüller tarafından tam olarak kullanılmayan (Amazon EC2) bulut sunucuları. Bu gönderide, EKS işinde EMR çalışmıyorsa hiçbir düğümün sağlanmadığını varsayıyoruz ve Karpenter Kümesi Otomatik Ölçekleyici işler gönderildiğinde düğümleri sağlamak için. Karpenter ayrıca, EC2 kaynak kullanımını optimize eden ve dolayısıyla atıl kaynakların maliyetini azaltan kutu paketleme de yapar.
EKS bölmelerinde EMR ile ilişkili işlem maliyetini izlemek için Kubecost ayırma API'sı geçerek pod
ve labels
toplam parametrede. biz kullanıyoruz emr-containers.amazonaws.com/job.id
ve emr-containers.amazonaws.com/virtual-cluster-id
yürütücü ve sürücü bölmelerinde her zaman bulunan etiketler. Etiketler, yalnızca EKS bölmelerindeki EMR ile ilişkili maliyeti elde etmek için Kubecost verilerini filtrelemek için kullanılır. Bir sürücünün yürütücüye karşı maliyetini veya işlerde Spot Bulut Sunucularını kullanmanın maliyetini anlamak için bölme, iş ve sanal küme düzeyinde çeşitli ayrıntı düzeylerini inceleyebilirsiniz. EMR üzerinde EMR dışındaki uygulamalar tarafından kullanılan bir ad alanında kullanıldığında, EMR üzerindeki bir EMR'nin toplam maliyetini anlamak için sanal küme maliyetini de kullanabilirsiniz.
Biz de sağlamak instance_id
, bulut sunucusu boyutu ve bölmeyi çalıştırmak için kullanılan kapasite türü (İsteğe Bağlı veya Spot). Bu sorgu yoluyla alınır Kubecost varlıkları API'sı. Bu veriler, işlerinizi nasıl yürüttüğünüzü ve hangi kapasiteyi daha sık kullandığınızı anlamak için yararlı olabilir.
Varlıkların yanı sıra bölmeleri çalıştırma maliyetiyle ilgili veriler, talebi Kubecost API'ye gönderen bir Kubernetes CronJob ile alınır, iki veri kaynağını (tahsis ve varlık verileri) instance_id
, verileri temizler ve Amazon S3'te CSV biçiminde depolar.
İşlem maliyeti verileri, aşağıdakiler dahil, ilgilenilen birden çok alana sahiptir: cpucost
, ramcost
(bellek maliyeti), pvcost
(Amazon EBS depolama maliyeti), CPU ve RAM kullanım verimliliği ve ayrıca bölme, iş veya sanal küme düzeyinde kullanılan tüm kaynakların toplam maliyetini temsil eden toplam maliyet.
Bu verileri görüntülemek için aşağıdaki adımları tamamlayın:
- Athena konsolunda sorgu düzenleyiciye gidin.
- Klinik
athenacurcfn_c_u_r
veritabanı için vecost_data
masa için. - Aşağıdaki sorguyu çalıştırın:
Aşağıdaki ekran görüntüsü sorgu sonuçlarını gösterir.
Pod düzeyindeki bilgilerle ilgili verileri sorgulamak için aşağıdaki SQL deyimini çalıştırabilirsiniz:
EKS yükseltmesinde EMR
EKS iyileştirmesinde EMR ile ilişkili maliyet, AWS CUT aracılığıyla sağlanır ve bir S3 klasöründe depolanır. Kurulum adımında çalıştırdığınız komut dosyası, S3 klasöründeki verilerle ilişkilendirilmiş bir Athena tablosu oluşturdu. Aşağıdaki adımlar, verileri nasıl sorgulayabileceğiniz konusunda size yol gösterir:
- Athena konsolunda sorgu düzenleyiciye gidin.
- Klinik
athenacurcfn_c_u_r
veritabanı için vecur_data
masa için. - Aşağıdaki sorguyu çalıştırın:
Bu sorgu size iş başına maliyeti sağlar. Aşağıdaki ekran görüntüsü sonuçları göstermektedir.
CUR verilerinin kullanılabilir olması için 24 saate kadar beklemeniz gerekecektir. Bu nedenle, önceki sorguyu yalnızca CUR verileri mevcut olduktan ve EKS işlerinde EMR'yi çalıştırdıktan sonra çalıştırmalısınız.
Genel maliyet
Toplam maliyeti görüntülemek ve üzerinde analiz yapmak için Athena'da aşağıdaki gibi bir görünüm oluşturun:
Görünüm oluşturulduğundan, EMR'nizi EKS işlerinde çalıştırmanın maliyetini sorgulayabilir ve analiz edebilirsiniz:
Aşağıdaki ekran görüntüsü, oluşturulan görünümde sorgunun örnek bir çıktısını gösterir.
Son olarak, QuickSight'ı, EKS harcamanızdaki EMR'nizin grafiksel üst düzey görünümü için kullanabilirsiniz. Aşağıdaki ekran görüntüsü örnek bir kontrol panelini göstermektedir.
Artık bu çözümü özel ihtiyaçlarınıza göre uyarlayabilir ve özel analizinizi oluşturabilirsiniz.
Temizlemek
Bu gönderi boyunca, EKS iş yüklerinde EMR'nizin maliyetini izlemek için gerekli altyapı bileşenlerini dağıttınız ve yapılandırdınız. Bu çözüm için ek ücret ödememek için oluşturduğunuz tüm kaynakları silin:
- S3 kovalarını boşaltın
cost-data-REGION-ACCOUNT_ID
veaws-athena-query-results-cur-REGION-ACCOUNT_ID
. - Athena çalışma grubunu silin
kubecost-cur-workgroup
. - ECR deposunu boşaltın ve silin
emreks-compute-cost-exporter
. - Komut dosyasını çalıştır destroy-emr-eks-cost-tracking.shAWS CloudFormation dağıtımını silecek, Kubecost'u kaldıracak, CronJob'u silecek ve Maliyet ve Kullanım Raporlarını silecektir.
Sonuç
Bu gönderide, EKS'de sanal küme veya iş başına Amazon EMR maliyetlerini yakından izlemek için Maliyet ve Kullanım Raporlarının yanı sıra Kubecost yeteneklerini nasıl kullanabileceğinizi gösterdik. Bu çözüm; Athena, Amazon Managed Service for Prometheus ve QuickSight'ı kullanarak ters ibrazlar için daha ayrıntılı maliyetler elde etmenizi sağlar.
Çözüm, Maliyet ve Kullanım Raporları ile Kubecost'u kurmak ve EKS'de EMR tarafından döndürülen bölmeleri çalıştırma maliyetini elde etmek için saatlik olarak bir CronJob'u yapılandırmak için adımlar sunuyordu. Sunulan çözümü daha uzun aralıklarla çalışacak veya farklı EKS kümelerinde veri toplayacak şekilde değiştirebilirsiniz. Ayrıca verileri daha fazla temizlemek veya ihtiyacınız olmayan alanları eleyerek depolanan veri miktarını azaltmak için CronJob tarafından çalıştırılan Python betiğini değiştirebilirsiniz. Zaman içinde maliyet optimizasyonu çabalarını yönlendirmek, maliyetlerdeki herhangi bir artışı tespit etmek ve yeni dağıtımların veya belirli olayların kaynak kullanımı ve maliyet performansı üzerindeki etkisini ölçmek için sağlanan içgörüleri kullanabilirsiniz. EKS'de EMR'yi mevcut Amazon EKS dağıtımınıza entegre etme hakkında daha fazla bilgi için bkz. Çok kiracılı bir Amazon EKS ortamında EKS üzerinde Amazon EMR için tasarım konuları
Yazarlar Hakkında
Lotfi Muhib Amazon Web Services ile Kamu Sektörü ekibi için çalışan bir Kıdemli Çözüm Mimarıdır. EMEA'daki kamu sektörü müşterilerinin fikirlerini gerçekleştirmelerine, yeni hizmetler oluşturmalarına ve vatandaşlar için inovasyon yapmalarına yardımcı oluyor. Lütfi boş zamanlarında bisiklete binmeyi ve koşmayı sever.
Hamza Mimi Amazon Web Services'ta (AWS) Fransız Kamu sektörü ekibinde Baş Çözüm Mimarı. Telekomünikasyon endüstrisinde uzun bir deneyime sahip. Halen dijital dönüşümden mimari rehberliğe kadar birçok konuda müşteri danışmanı olarak çalışmaktadır.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- EVM Finans. Merkezi Olmayan Finans için Birleşik Arayüz. Buradan Erişin.
- Kuantum Medya Grubu. IR/PR Güçlendirilmiş. Buradan Erişin.
- PlatoAiStream. Web3 Veri Zekası. Bilgi Genişletildi. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/big-data/cost-monitoring-for-amazon-emr-on-amazon-eks/