AnalyticDB for MySQL Spark yapılandırma parametreleri, Apache Spark parametrelerine benzer. Bu konu, AnalyticDB for MySQL ile Apache Spark arasındaki farklılıkları içeren yapılandırma parametrelerini açıklar.
Kullanım notları
Spark uygulaması yapılandırma parametreleri, Spark uygulamalarının davranışını ve performansını ayarlamak için kullanılır. Bu parametrelerin biçimi, kullandığınız Spark geliştirme araçlarına göre değişir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sürücü ve Executor kaynaklarını belirtin
Parametre | Gerekli | Varsayılan değer | Açıklama | Apache Spark'taki karşılık gelen parametre |
spark.adb.acuPerApp | Hayır | Yok | Tek bir Spark işi tarafından kullanılan ACU sayısı. Geçerli değerler: [2, Bir iş kaynak grubunun maksimum hesaplama kaynağı]. Bu parametreyi yapılandırdıktan sonra sistem, Spark Driver teknik özelliklerini, Spark Executor teknik özelliklerini ve Spark Executor düğüm sayısını otomatik olarak hesaplar ve yapılandırır. | Yok |
spark.driver.resourceSpec | Evet | medium | Spark sürücüsünün kaynak teknik özellikleri. Her tür farklı teknik özelliklere karşılık gelir. Daha fazla bilgi için bu konudaki Spark kaynak teknik özellikleri tablosundaki Tür sütununa bakın. Önemli Spark uygulamalarını gönderirken Apache Spark parametrelerini kullanabilir ve bu konudaki Spark kaynak teknik özellikleri tablosunda açıklanan çekirdek ve bellek değerlerine göre parametreleri yapılandırabilirsiniz. Örnek: | spark.driver.cores ve spark.driver.memory |
spark.executor.resourceSpec | Evet | medium | Her bir Spark executor'ının kaynak teknik özellikleri. Her tür farklı teknik özelliklere karşılık gelir. Daha fazla bilgi için bu konudaki Spark kaynak teknik özellikleri tablosundaki Tür sütununa bakın. Önemli Spark uygulamalarını gönderirken Apache Spark parametrelerini kullanabilir ve bu konudaki Spark kaynak teknik özellikleri tablosunda açıklanan çekirdek ve bellek değerlerine göre parametreleri yapılandırabilirsiniz. Örnek: | spark.executor.cores ve spark.executor.memory |
spark.executor.instances | Hayır | Bir iş kaynak grubunun maksimum hesaplama kaynağı/5 | Başlatılan Spark executor'larının sayısı. | spark.executor.instances |
spark.adb.driverDiskSize | Hayır | Yok | Büyük disk depolama gereksinimlerini karşılamak üzere Spark sürücüsüne eklenen ek disk depolama alanının boyutu. Varsayılan olarak ek disk depolama /user_data_dir dizinine bağlanır. Birim: GiB. Geçerli değerler: (0.100]. Örnek: spark.adb.driverDiskSize=50Gi. Bu örnekte Spark sürücüsüne eklenen ek disk depolama alanı 50 GiB olarak ayarlanır. | Yok |
spark.adb.executorDiskSize | Hayır | Yok | Shuffle işlemlerinin gereksinimlerini karşılamak üzere bir Spark executor'ına eklenen ek disk depolama alanının boyutu. Varsayılan olarak ek disk depolama /shuffle_volume dizinine bağlanır. Birim: GiB. Geçerli değerler: (0.100]. Örnek: spark.adb.executorDiskSize=50Gi. Bu örnekte bir Spark executor'ına eklenen ek disk depolama alanı 50 GiB olarak ayarlanır. | Yok |
Spark kaynak teknik özellikleri
Spark işlerini yürütmek için ayrılmış kaynakları veya esnek kaynakları kullanabilirsiniz. Bir iş kaynak grubunun talep üzerine esnek kaynaklarını kullanarak Spark işlerini yürütürseniz sistem, Spark kaynak teknik özelliklerini ve CPU-bellek oranını kullanarak aşağıdaki formüllerle kullanılan AnalyticDB hesaplama birimi (ACU) sayısını hesaplar:
1:2 CPU-bellek oranı: Kullanılan ACU sayısı = CPU çekirdek sayısı × 0,8.
1:4 CPU-bellek oranı: Kullanılan ACU sayısı = CPU çekirdek sayısı × 1.
1:8 CPU-bellek oranı: Kullanılan ACU sayısı = CPU çekirdek sayısı × 1,5.
Talep üzerine esnek kaynakların fiyatlandırması hakkında bilgi için bkz. Data Lakehouse Edition Fiyatlandırması.
Tablo 1. Spark kaynak teknik özellikleri
Tür | Teknik Özellikler | Kullanılan ACU'lar | ||
CPU çekirdekleri | Bellek (GB) | Disk depolama1 (GB) | ||
c.small | 1 | 2 | 20 | 0,8 |
small | 1 | 4 | 20 | 1 |
m.small | 1 | 8 | 20 | 1,5 |
c.medium | 2 | 4 | 20 | 1,6 |
medium | 2 | 8 | 20 | 2 |
m.medium | 2 | 16 | 20 | 3 |
c.large | 4 | 8 | 20 | 3,2 |
large | 4 | 16 | 20 | 4 |
m.large | 4 | 32 | 20 | 6 |
c.xlarge | 8 | 16 | 20 | 6,4 |
xlarge | 8 | 32 | 20 | 8 |
m.xlarge | 8 | 64 | 20 | 12 |
c.2xlarge | 16 | 32 | 20 | 12,8 |
2xlarge | 16 | 64 | 20 | 16 |
m.2xlarge | 16 | 128 | 20 | 24 |
m.4xlarge | 32 | 256 | 20 | 48 |
m.8xlarge | 64 | 512 | 20 | 96 |
1Disk depolama: Sistemin disk depolama alanının yaklaşık %1'ini kullanması beklenir. Gerçek kullanılabilir disk depolama alanı 20 GB'den az olabilir.
Örnek
Bir Spark işi için her biri medium (2 çekirdek 8 GB) teknik özelliklerine sahip 32 Executor ayırın ve her Driver small (1 çekirdek 4 GB) teknik özelliklerine sahip olsun. Bu durumda iş toplamda 65 ACU hesaplama kaynağı ayırabilir.
{
"spark.driver.resourceSpec":"small",
"spark.executor.resourceSpec":"medium",
"spark.executor.instances":"32",
"spark.adb.executorDiskSize":"100Gi"
}
Spark işleri için öncelikleri belirtin
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.adb.priority | Hayır | NORMAL | Bir Spark işinin önceliği. Gönderilen tüm Spark işlerini yürütmek için kaynaklar yetersiz kaldığında kuyruktaki daha yüksek öncelikli işler önce yürütülür. Geçerli değerler:
Önemli Streaming Spark işleri (uzun süre çalışan akış işleri) için bu parametreyi HIGH olarak ayarlamanızı öneririz. |
Meta verilere erişin
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.sql.catalogImplementation | Hayır |
| Erişilecek meta veri türü. Geçerli değerler:
|
spark.sql.hive.metastore.version | Hayır |
| Metastore hizmetinin sürümü. Geçerli değerler:
Not
|
Örnekler
-
AnalyticDB for MySQL içindeki meta verilere erişmek için aşağıdaki ayarı yapılandırın:
spark.sql.hive.metastore.version=adb; -
Apache Spark'ın yerleşik Hive Metastore'undaki meta verilere erişmek için aşağıdaki ayarları yapılandırın:
spark.sql.catalogImplementation=hive; spark.sql.hive.metastore.version=2.1.3; -
Geçici dizindeki meta verilere erişmek için aşağıdaki ayarı yapılandırın:
spark.sql.catalogImplementation=in-memory;
Spark UI'yi yapılandırın
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.app.log.rootPath | Hayır |
| AnalyticDB for MySQL Spark iş günlüklerinin ve Linux işletim sisteminin çıkış verilerinin depolandığı dizin. Varsayılan olarak Spark uygulama kimliği adlı klasör aşağıdaki içeriği barındırır:
|
spark.adb.event.logUploadDuration | Hayır | false | Bir olay günlüğü yükleme süresinin kaydedilip kaydedilmeyeceğini belirtir. |
spark.adb.buffer.maxNumEvents | Hayır | 1000 | Sürücü tarafından önbelleğe alınan maksimum olay sayısı. |
spark.adb.payload.maxNumEvents | Hayır | 10000 | Tek seferde Object Storage Service (OSS) öğesine yüklenebilecek maksimum olay sayısı. |
spark.adb.event.pollingIntervalSecs | Hayır | 0,5 | OSS'e yapılan iki olay yüklemesi arasındaki aralık. Birim: saniye. Örneğin 0,5 değeri olayların her 0,5 saniyede bir yüklendiğini gösterir. |
spark.adb.event.maxPollingIntervalSecs | Hayır | 60 | OSS'e yapılan bir olay yüklemesi başarısız olduğunda maksimum yeniden deneme aralığı. Birim: saniye. Başarısız bir yükleme ile yeniden yükleme denemesi arasındaki aralık |
spark.adb.event.maxWaitOnEndSecs | Hayır | 10 | Olayların OSS'e yüklenmesi için maksimum bekleme süresi. Birim: saniye. Maksimum bekleme süresi, bir yüklemenin başlangıcı ile tamamlanması arasındaki aralıktır. Bir yükleme maksimum bekleme süresi içinde tamamlanmazsa yükleme yeniden denenir. |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | Hayır | 1 |
|
spark.adb.eventLog.rolling.maxFileSize | Hayır | 209715200 | OSS'deki olay günlüklerinin maksimum dosya boyutu. Birim: bayt. Olay günlükleri OSS'de Eventlog.0 ve Eventlog.1 gibi birden çok dosya halinde depolanır. Dosya boyutunu belirtebilirsiniz. |
RAM kullanıcılarına izin verin
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.adb.roleArn | Hayır | Yok | RAM kullanıcısına Spark uygulamaları gönderme izni vermek için RAM konsolu üzerinden RAM kullanıcısına atamak istediğiniz Resource Access Management (RAM) rolünün Alibaba Cloud Kaynak Adı (ARN). Daha fazla bilgi için bkz. RAM rolüne genel bakış. Spark uygulamalarını bir RAM kullanıcısı olarak gönderiyorsanız bu parametreyi belirtmeniz gerekir. Spark uygulamalarını bir Alibaba Cloud hesabıyla gönderiyorsanız bu parametreyi belirtmeniz gerekmez. Not RAM konsolunda bir RAM kullanıcısına izin verdiyseniz bu parametreyi belirtmeniz gerekmez. Daha fazla bilgi için bkz. Hesap yetkilendirmesi. |
Yerleşik veri kaynağı bağlayıcılarını etkinleştirin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VPC erişimini ve veri kaynağı erişimini etkinleştirin
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.adb.eni.enabled | Hayır | false | Elastic Network Interface (ENI) özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Harici tabloları kullanarak diğer harici veri kaynaklarına erişiyorsanız ENI özelliğini etkinleştirmeniz gerekir. Geçerli değerler:
|
spark.adb.eni.vswitchId | Hayır | Yok | Bir ENI ile ilişkili vSwitch'in kimliği. Bir Elastic Compute Service (ECS) örneğinden sanal özel cloud (VPC) üzerinden AnalyticDB for MySQL hizmetine bağlanıyorsanız VPC için bir vSwitch kimliği belirtmeniz gerekir. Not VPC erişimini etkinleştirdiyseniz spark.adb.eni.enabled parametresini true olarak ayarlamanız gerekir. |
spark.adb.eni.securityGroupId | Hayır | Yok | Bir ENI ile ilişkili güvenlik grubunun kimliği. Bir ECS örneğinden VPC üzerinden AnalyticDB for MySQL hizmetine bağlanıyorsanız bir güvenlik grubu kimliği belirtmeniz gerekir. Not VPC erişimini etkinleştirdiyseniz spark.adb.eni.enabled parametresini true olarak ayarlamanız gerekir. |
spark.adb.eni.extraHosts | Hayır | Yok | IP adresleri ile ana bilgisayar adları arasındaki eşlemeler. Bu parametre Spark'ın veri kaynaklarının ana bilgisayar adlarını çözümlemesine olanak tanır. Kendi yönettiğiniz bir Hive veri kaynağına erişmek istiyorsanız bu parametreyi belirtmeniz gerekir. Not
|
spark.adb.eni.adbHostAlias.enabled | Hayır | false | AnalyticDB for MySQL hizmetinin gerektirdiği etki alanı adı çözümleme bilgilerinin otomatik olarak etki alanı adları ve IP adresleri eşleme tablosuna yazılıp yazılmayacağını belirtir. Geçerli değerler:
EMR Hive'dan veri okumak veya EMR Hive'a veri yazmak için bir ENI kullanıyorsanız bu parametreyi true olarak ayarlamanız gerekir. |
Uygulama yeniden denemelerini yapılandırın
|
|
|
|
|
|
|
|
|
Bir uygulamayı çalıştırmak için izin verilen maksimum deneme sayısı. Varsayılan değer 1'dir ve yeniden deneme yapılmadığını belirtir. Bu parametreyi bir Spark uygulaması için 3 olarak ayarlarsanız sistem uygulamayı kayan bir pencerede en fazla üç kez çalıştırmayı dener. |
|
|
|
|
Sistemin bir uygulamayı yeniden çalıştırmaya çalıştığı kayan pencerenin süresi. Birim: saniye. Örneğin bu parametreyi bir Spark uygulaması için 6000 olarak ayarlarsanız sistem başarısız bir çalıştırmadan sonraki son 6.000 saniye içindeki deneme sayısını sayar. Deneme sayısı maxAttempts parametresinin değerinden azsa sistem uygulamayı yeniden çalıştırmayı dener. |
Zaman aşımında otomatik iş sonlandırma (Zamanlama Watchdog'u)
Bir işin Executor pod'ları yetersiz temel kaynaklar (ECI envanter tükenmesi, kaynak kotası aşımları veya karşılanamayan düğüm yakınlığı gibi) nedeniyle uzun süre Beklemede (Pending) durumunda kalırsa iş beklemeye devam eder; bu durum Driver kaynaklarını boşa harcar ve sonraki zamanlamayı engeller. Bu özelliği etkinleştirdiğinizde planlanamayan Executor oranı ve bekleme süresi belirtilen eşiklere ulaştığında sistem işi otomatik olarak başarısız olarak işaretler ve hızlı hata algılama (fail-fast) davranışı sağlamak için kaynakları serbest bırakır.
Senaryolar
Bu özellik, paylaşılan bir kümede çok sayıda Spark işi çalıştırdığınız ve kaynaklar yetersiz olduğunda işlerin sonsuz beklemek yerine hızlıca başarısız olmasını istediğiniz senaryolar için uygundur. Tipik senaryolar şunlardır:
Yetersiz ECI kaynakları: Executor'ları çalıştırmak için Elastic Container Instance (ECI) kullandığınızda temel örnek türleri için yetersiz envanter pod'ların uzun süre Beklemede (Pending) durumunda kalmasına neden olur.
Kaynak kotası aşımları: Ad alanının veya kaynak grubunun CPU ya da bellek kotası tükenir ve yeni Executor'lar zamanlanamaz.
Toplu işler için hızlı yeniden denemeler: Kaynaklar kullanılamadığında işlerin hızlıca başarısız olmasını ve üst katman zamanlama sisteminin (Airflow gibi) yeniden deneme stratejisine karar vermesini istersiniz.
Yapılandırma yöntemi
Bir Spark işi gönderirken Watchdog'un davranışını etkinleştirmek ve ayarlamak için aşağıdaki parametreleri yapılandırın.
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.adb.terminateOnPending.enabled | Özellik etkinleştirildiğinde gereklidir | false | İş için zamanlama zaman aşımında otomatik iş sonlandırmayı etkinleştirip etkinleştirmeyeceğinizi belirtir. Geçerli değerler:
Bu özellik varsayılan olarak devre dışıdır. Bu özellik ve diğer parametreler yalnızca bu parametreyi true olarak ayarladığınızda etkili olur. |
spark.adb.terminateOnPending.timeoutSec | Hayır | 610 | Bir Executor pod'unun Beklemede (Pending) durumunda kalabileceği tolerans süresi. Birim: saniye. Zamanlayıcı bir Executor pod'u ilk kez zamanlanamaz olarak tespit edildiğinde başlar. Bekleme süresi bu değeri aştığında ve spark.adb.terminateOnPending.executorRatio koşulu da karşılandığında iş sonlandırılır. Önerilen değerler: 610 ila 900. |
spark.adb.terminateOnPending.executorRatio | Hayır | 0,5 | Sonlandırmayı tetikleyen zamanlanamayan Executor oranı eşiği. Geçerli aralık: (0, 1,0]. Oran, zamanlanamayan Executor sayısının beklenen toplam Executor sayısına bölünmesiyle hesaplanır. Oran bu değere ulaştığında ve Bekleme süresi spark.adb.terminateOnPending.timeoutSec değerini aştığında iş sonlandırılır. Daha küçük bir değer tetiklemeyi daha duyarlı hale getirir, daha büyük bir değer ise tetiklemeyi daha esnek hale getirir:
Beklenen toplam Executor sayısı aşağıdaki önceliğe göre belirlenir:
|
Sonlandırma yalnızca spark.adb.terminateOnPending.executorRatio ve spark.adb.terminateOnPending.timeoutSec koşullarının her ikisi de karşılandığında tetiklenir. Yalnızca bekleme süresi aşıldığında ancak orana ulaşılmadığında veya yalnızca orana ulaşıldığında ancak bekleme süresi yetersiz olduğunda sonlandırma tetiklenmez.
Yapılandırma örneği: Bir iş için zamanlama zaman aşımında otomatik iş sonlandırmayı etkinleştirin ve Executor'ların yarısı 300 saniyeden fazla süreyle zamanlanamaz durumda kaldığında işi sonlandırın.
{
"spark.adb.terminateOnPending.enabled":"true",
"spark.adb.terminateOnPending.timeoutSec":"300",
"spark.adb.terminateOnPending.executorRatio":"0.5"
}
Sonlandırma sonrası iş davranışı
Sonlandırma tetiklendikten sonra iş aşağıdaki şekilde davranır:
İş durumu: SparkApplication önce
FailingStatedurumuna girer ve ardındanFailedStatedurumuna geçer.Hata mesajı:
status.appState.errorMessageyapılandırılmış hata teşhis bilgilerini içerir.Driver pod'u: Kaynakları serbest bırakmak için Driver pod'u proaktif olarak silinir.
Aşağıdaki örnek bir hata mesajını göstermektedir:
[ResourceQuotaExceeded] executors unschedulable: 5/10 (50%) for 5m12s; threshold ratio≥50%, age≥5m0s
denom=10 (spec.executor.instances), distinct reasons=1, oldest pod=my-job-exec-3 (pending since 2026-06-01T10:16:34Z)
scheduler reason: Unschedulable
scheduler message: 0/1279 nodes are available: quota not enough, quotaName: amv-x
Hata mesajının başındaki köşeli parantez içindeki içerik sistem tarafından otomatik olarak sınıflandırılan hata nedenini gösterir. Aşağıdaki tablo her bir kategorinin anlamını ve önerilen işlemi açıklar.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Watchdog yalnızca işi başarısız olarak işaretler. İşin sonrasında yeniden denenip denenmeyeceği işin restartPolicy değeri tarafından kontrol edilir ve bu davranış işin normal şekilde başarısız olması durumundakiyle tutarlıdır. Uygulama yeniden denemeleri hakkında daha fazla bilgi için bu konudaki Uygulama yeniden denemelerini yapılandırın bölümüne bakın.
Spark işleri için çalışma zamanı ortamı belirtin
Aşağıdaki tabloda Python ortamını paketlemek ve Spark işlerini göndermek için sanal ortam teknolojisini kullandığınızda gereken yapılandırma parametreleri açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
Spark sürümünü belirtin
Parametre | Gerekli | Varsayılan değer | Açıklama |
spark.adb.version | Hayır | 3,2 | Spark sürümü. Geçerli değerler:
|
Yüksek performanslı vektörleştirilmiş yürütme altyapısı
|
|
|
|
|
|
|
|
|
|
Lake depolama hızlandırma
|
|
|
|
|
|
|
|
|
|
AnalyticDB for MySQL tarafından desteklenmeyen yapılandırma parametreleri
AnalyticDB for MySQL Spark, Apache Spark'ın aşağıdaki yapılandırma parametrelerini desteklemez. Bu parametreler AnalyticDB for MySQL Spark üzerinde etkili olmaz.
Useless options(these options will be ignored):
--deploy-mode
--master
--packages, please use `--jars` instead
--exclude-packages
--proxy-user
--repositories
--keytab
--principal
--queue
--total-executor-cores
--driver-library-path
--driver-class-path
--supervise
-S,--silent
-i <filename>