Zephyrnet Logosu

Amazon EKS'de Amazon EMR için maliyet izleme | Amazon Web Hizmetleri

Tarih:

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.

emr-eks-maliyet-takip-mimarisi

İ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:

  1. CloudFormation dağıtımını başlatın.
  2. Bir AWS Maliyet ve Kullanım Raporu oluşturun ve yapılandırın.
  3. tarafından desteklenen Kubecost'u yapılandırın ve devreye alın Prometheus için Amazon Tarafından Yönetilen Hizmet.
  4. 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:

  1. Aşağıdakileri klonlayın GitHub deposu.
  2. Klasöre git cost-tracking aşağıdaki komutla:

cd cost-tracking

  1. 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:

  1. Athena konsolunda sorgu düzenleyiciye gidin.
  2. Klinik athenacurcfn_c_u_r veritabanı için ve cost_data masa için.
  3. Aşağıdaki sorguyu çalıştırın:
SELECT job_id,
vc_id,
sum(totalcost) as cost
FROM "athenacurcfn_c_u_r"."compute_cost"
GROUP BY job_id, vc_id

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:

SELECT
split_part(name, '/', 1) as pod_name,
job_id,
vc_id,
totalcost,
instance_id, "properties.labels.node_kubernetes_io_instance_type",
capacity_type
FROM "athenacurcfn_c_u_r"."compute_cost";

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:

  1. Athena konsolunda sorgu düzenleyiciye gidin.
  2. Klinik athenacurcfn_c_u_r veritabanı için ve cur_data masa için.
  3. Aşağıdaki sorguyu çalıştırın:
SELECT
split_part(line_item_resource_id, '/', 5) as job_id,
split_part(line_item_resource_id, '/', 3) as vc_id,
sum(line_item_blended_cost) as cost
FROM athenacurcfn_c_u_r.automated
WHERE product_product_family='EMR Containers'
GROUP BY line_item_resource_id

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:

CREATE VIEW emr_eks_cost AS
SELECT
split_part(line_item_resource_id, '/', 5) as job_id,
split_part(line_item_resource_id, '/', 3) as vc_id,
sum(line_item_blended_cost) as cost, 'emr-uplift' as category
FROM athenacurcfn_c_u_r.cur_data
WHERE product_product_family='EMR Containers'
GROUP BY line_item_resource_id
UNION
SELECT
job_id,
vc_id,
sum(totalCost) as cost, 'compute' as category
FROM "athenacurcfn_c_u_r"."compute_cost"
group by job_id, vc_id

Görünüm oluşturulduğundan, EMR'nizi EKS işlerinde çalıştırmanın maliyetini sorgulayabilir ve analiz edebilirsiniz:

SELECT sum(cost) as total_cost, job_id, vc_id
FROM "athenacurcfn_c_u_r"."emr_eks_cost"
GROUP BY job_id, vc_id;

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.

emr-eks-hesaplama-maliyet-hızlı görüş-kontrol paneli

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:

  1. S3 kovalarını boşaltın cost-data-REGION-ACCOUNT_ID ve aws-athena-query-results-cur-REGION-ACCOUNT_ID.
  2. Athena çalışma grubunu silin kubecost-cur-workgroup.
  3. ECR deposunu boşaltın ve silin emreks-compute-cost-exporter.
  4. 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.

spot_img

En Son İstihbarat

spot_img