Share via


Azure HDInsight Etkileşimli Sorgu Kümesi (Hive LLAP) boyutlandırma kılavuzu

Bu belgede, makul performans elde etmek için tipik bir iş yükü için HDInsight Etkileşimli Sorgu Kümesi'nin (Hive LLAP kümesi) boyutlandırması açıklanmaktadır. Bu belgede sağlanan önerilerin genel yönergeler olduğunu ve belirli iş yüklerinin belirli ayarlamalar gerekebileceğini unutmayın.

HDInsight Etkileşimli Sorgu Kümesi (LLAP) için Azure Varsayılan VM Türleri

Düğüm Türü Örnek Size
Head D13 v2 8 vcpus, 56 GB RAM, 400 GB SSD
Çalışan D14 v2 16 vcpus, 112 GB RAM, 800 GB SSD
ZooKeeper A4 v2 4 vcpus, 8 GB RAM, 40 GB SSD

Not: Önerilen tüm yapılandırma değerleri D14 v2 türü çalışan düğümünü temel alır

Yapılandırma:

Yapılandırma Anahtarı Önerilen değer Açıklama
yarn.nodemanager.resource.memory-mb 102400 (MB) Bir düğümdeki tüm YARN kapsayıcıları için MB cinsinden verilen toplam bellek
yarn.scheduler.maximum-allocation-mb 102400 (MB) MB'lerdeki RM'deki her kapsayıcı isteği için en yüksek ayırma. Bu değerden yüksek bellek istekleri geçerli olmayacak
yarn.scheduler.maximum-allocation-vcores 12 Resource Manager'daki her kapsayıcı isteği için en fazla CPU çekirdeği sayısı. Bu değerden yüksek istekler geçerli olmaz.
yarn.nodemanager.resource.cpu-vcores 12 Kapsayıcılar için ayrılabilen NodeManager başına CPU çekirdeği sayısı.
yarn.scheduler.capacity.root.llap.capacity 85 (%) LLAP kuyruğu için YARN kapasite ayırma
tez.am.resource.memory.mb 4096 (MB) Tez AppMaster tarafından kullanılacak MB cinsinden bellek miktarı
hive.server2.tez.sessions.per.default.queue <number_of_worker_nodes> hive.server2.tez.default.queues içindeki adlı her kuyruk için oturum sayısı. Bu sayı, sorgu koordinatörlerinin sayısına karşılık gelir (Tez AM'ler)
hive.tez.container.size 4096 (MB) MB cinsinden belirtilen Tez kapsayıcısı boyutu
hive.llap.daemon.num.executors 19 LLAP daemon başına yürütücü sayısı
hive.llap.io.threadpool.size 19 Yürütücüler için iş parçacığı havuzu boyutu
hive.llap.daemon.yarn.container.mb 81920 (MB) Tek tek LLAP daemon'ları tarafından kullanılan MB cinsinden toplam bellek (Daemon başına bellek)
hive.llap.io.memory.size 242688 (MB) SAĞLANAN SSD önbelleğinin etkinleştirildiği LLAP daemon başına MB cinsinden önbellek boyutu
hive.auto.convert.join.noconditionaltask.size 2048 (MB) Harita Birleştirme için MB cinsinden bellek boyutu

LLAP Mimarisi/Bileşenleri:

`LLAP Architecture/Components`.

LLAP Daemon boyut tahminleri:

1. Düğümdeki tüm kapsayıcılar için toplam YARN bellek ayırmasını belirleme

Yapılandırma: yarn.nodemanager.resource.memory-mb

Bu değer, her düğümdeki YARN kapsayıcıları tarafından kullanılabilecek MB cinsinden en yüksek bellek toplamını gösterir. Belirtilen değer, bu düğümdeki toplam fiziksel bellek miktarından daha az olmalıdır.
Bir düğümdeki tüm YARN kapsayıcıları için toplam bellek = (Toplam fiziksel bellek – işletim sistemi için bellek + Diğer hizmetler için bellek)
Bu değeri kullanılabilir RAM boyutunun yaklaşık %90'ı olarak ayarlayın.
D14 v2 için önerilen değer 102400 MB'tır

2. YARN kapsayıcı isteği başına en fazla bellek miktarını belirleme

Yapılandırma: yarn.scheduler.maximum-allocation-mb

Bu değer, Kaynak Yöneticisi'ndeki her kapsayıcı isteği için maksimum ayırmayı MB cinsinden gösterir. Belirtilen değerden daha yüksek bellek istekleri geçerli olmaz. Resource Manager, kapsayıcılara yarn.scheduler.minimum-allocation-mb artışlarıyla bellek verebilir ve yarn.scheduler.maximum-allocation-mb tarafından belirtilen boyutu aşamaz. Belirtilen değer yarn.nodemanager.resource.memory-mb tarafından belirtilen düğümdeki tüm kapsayıcılar için verilen toplam bellekten fazla olmamalıdır.
D14 v2 çalışan düğümleri için önerilen değer 102400 MB'tır

3. YARN kapsayıcısı isteği başına maksimum miktarı vcores belirleme

Yapılandırma: yarn.scheduler.maximum-allocation-vcores

Bu değer, Kaynak Yöneticisi'ndeki her kapsayıcı isteği için maksimum sanal CPU çekirdeği sayısını gösterir. Daha fazla sayıda vcores istekte bulunarak bu değer geçerli olmaz. Bu, YARN zamanlayıcısının genel bir özelliğidir. LLAP daemon kapsayıcısı için bu değer kullanılabilir toplam vcoresdeğerinin %75'ine ayarlanabilir. Kalan %25; NodeManager, DataNode ve çalışan düğümlerinde çalışan diğer hizmetler için ayrılmalıdır.
D14 v2 VM'leri vardır 16 vcores ve LLAP daemon kapsayıcısı tarafından toplamının 16 vcores %75'i kullanılabilir.
D14 v2 için önerilen değer 12'dir.

4. Eş zamanlı sorgu sayısı

Yapılandırma: hive.server2.tez.sessions.per.default.queue

Bu yapılandırma değeri, paralel olarak başlatılabilen Tez oturumlarının sayısını belirler. Bu Tez oturumları , "hive.server2.tez.default.queues" tarafından belirtilen kuyrukların her biri için başlatılır. Tez AM'lerin (Sorgu Koordinatörleri) sayısına karşılık gelir. Çalışan düğümlerinin sayısıyla aynı olması önerilir. Tez AM sayısı LLAP daemon düğümlerinin sayısından yüksek olabilir. Tez AM'nin birincil sorumluluğu sorgu yürütmeyi koordine etmek ve sorgu planı parçalarını yürütme için ilgili LLAP daemon'larına atamaktır. Daha yüksek aktarım hızı elde etmek için bu değeri birçok LLAP daemon düğümünün katı olarak tutun.

Varsayılan HDInsight kümesinin dört çalışan düğümünde çalışan dört LLAP daemon'u vardır, bu nedenle önerilen değer 4'dür.

Hive yapılandırma değişkeni hive.server2.tez.sessions.per.default.queueiçin Ambari kullanıcı arabirimi kaydırıcısı:

`LLAP maximum concurrent queries`.

5. Tez Kapsayıcısı ve Tez Uygulaması Ana Boyutu

Yapılandırma: tez.am.resource.memory.mb, hive.tez.container.size

tez.am.resource.memory.mb - Tez Application Master boyutunu tanımlar.
Önerilen değer 4096 MB'tır.

hive.tez.container.size - Tez kapsayıcısı için verilen bellek miktarını tanımlar. Bu değer YARN minimum kapsayıcı boyutu (yarn.scheduler.minimum-allocation-mb) ile YARN en büyük kapsayıcı boyutu (yarn.scheduler.maximum-allocation-mb) arasında ayarlanmalıdır. LLAP arka plan programı yürütücüleri, yürütücü başına bellek kullanımını sınırlamak için bu değeri kullanır.
Önerilen değer 4096 MB'tır.

6. LLAP Kuyruğu kapasite ayırma

Yapılandırma: yarn.scheduler.capacity.root.llap.capacity

Bu değer, LLAP kuyruğuna verilen kapasite yüzdesini gösterir. Kapasite ayırmaları, YARN kuyruklarının nasıl yapılandırıldığına bağlı olarak farklı iş yükleri için farklı değerlere sahip olabilir. İş yükünüz salt okunur işlemlerse bunu kapasitenin %90'ını kadar yüksek bir değere ayarlamak işe yarayabilir. Ancak iş yükünüz yönetilen tabloları kullanan güncelleştirme/silme/birleştirme işlemlerinin karışımıysa LLAP kuyruğu için kapasitenin %85'ini vermeniz önerilir. Kalan %15 kapasite, varsayılan kuyruktan kapsayıcı ayırmak için sıkıştırma gibi diğer görevler tarafından kullanılabilir. Böylece varsayılan kuyruktaki görevler YARN kaynaklarından yoksun kalmaz.

D14v2 çalışan düğümleri için LLAP kuyruğu için önerilen değer 85'tir.
(Salt okunur iş yükleri için uygun şekilde 90'a kadar artırılabilir.)

7. LLAP daemon kapsayıcı boyutu

Yapılandırma: hive.llap.daemon.yarn.container.mb

LLAP daemon, her çalışan düğümünde bir YARN kapsayıcısı olarak çalıştırılır. LLAP daemon kapsayıcısının toplam bellek boyutu aşağıdaki faktörlere bağlıdır,

  • YARN kapsayıcı boyutu yapılandırmaları (yarn.scheduler.minimum-allocation-mb, yarn.scheduler.maximum-allocation-mb, yarn.nodemanager.resource.memory-mb)
  • Düğümdeki Tez AM sayısı
  • Bir düğümdeki ve LLAP kuyruk kapasitesindeki tüm kapsayıcılar için yapılandırılan toplam bellek

Tez Application Masters(Tez AM) tarafından gereken bellek aşağıdaki gibi hesaplanabilir.
Tez AM bir sorgu düzenleyicisi görevi görür ve Tez AM'lerin sayısı, sunulacak birçok eşzamanlı sorguya göre yapılandırılmalıdır. Teorik olarak çalışan düğümü başına bir Tez AM düşünebiliriz. Ancak, bir çalışan düğümünde birden fazla Tez AM görebilirsiniz. Hesaplama amacıyla, Tez AM'lerin tüm LLAP daemon düğümleri/çalışan düğümleri arasında tekdüzen dağılımını varsayıyoruz. Tez AM başına 4 GB belleğe sahip olmanız önerilir.

Hive yapılandırması hive.server2.tez.sessions.per.default.queue tarafından belirtilen Tez Ams = değeri sayısı.
LLAP daemon düğümlerinin sayısı = Ambari kullanıcı arabiriminde env değişkeni num_llap_nodes_for_llap_daemons tarafından belirtilir.
Tez AM kapsayıcı boyutu = Tez config tez.am.resource.memory.mb tarafından belirtilen değer.

Düğüm başına Tez AM belleği = (ceil(Tez AM sayısı / LLAP daemon düğüm sayısı)x Tez AM kapsayıcı boyutu**)**
D14 v2 için varsayılan yapılandırmada dört Tez AM ve dört LLAP daemon düğümü vardır.
Düğüm başına Tez AM belleği = (ceil(4/4) x 4 GB) = 4 GB

Çalışan düğümü başına LLAP kuyruğu için kullanılabilir toplam bellek aşağıdaki gibi hesaplanabilir:
Bu değer, bir node(yarn.nodemanager.resource.memory-mb) üzerindeki tüm YARN kapsayıcıları için kullanılabilir toplam bellek miktarına ve LLAP kuyruğu (yarn.scheduler.capacity.root.llap.capacity) için yapılandırılan kapasite yüzdesine bağlıdır.
Çalışan düğümündeki LLAP kuyruğu için toplam bellek = Bir düğümdeki tüm YARN kapsayıcıları için kullanılabilir toplam bellek x LLAP kuyruğu için kapasite yüzdesi.
D14 v2 için bu değer (100 GB x 0,85) = 85 GB'tır.

LLAP daemon kapsayıcı boyutu aşağıdaki gibi hesaplanır;

LLAP daemon kapsayıcı boyutu = (Çalışan düğümünde LLAP kuyruğu için toplam bellek) – (Düğüm başına Tez AM belleği) - (Hizmet Yöneticisi kapsayıcı boyutu)
Çalışan düğümlerinden birinde oluşturulan kümede yalnızca bir Hizmet Yöneticisi (LLAP hizmeti için Uygulama Yöneticisi) vardır. Hesaplama amacıyla çalışan düğümü başına bir hizmet ana şablonu dikkate alınır.
D14 v2 çalışan düğümü için HDI 4,0 - önerilen değer :(85 GB - 4 GB - 1 GB)) = 80 GB

8. LLAP daemon başına yürütücü sayısını belirleme

Yapılandırma: hive.llap.daemon.num.executors, hive.llap.io.threadpool.size

hive.llap.daemon.num.executors:
Bu yapılandırma, LLAP arka plan programı başına paralel olarak görev yürütebilen yürütücü sayısını denetler. Bu değer; sanal çekirdek sayısına, yürütücü başına kullanılan bellek miktarına ve LLAP arka plan programı kapsayıcısı için kullanılabilir toplam bellek miktarına bağlıdır. Yürütücü sayısı, çalışan düğümü başına kullanılabilir sanal çekirdeklerin %120'sine kadar fazla abone yapılabilir. Ancak yürütücü başına gereken belleğe ve LLAP daemon kapsayıcı boyutuna göre bellek gereksinimlerini karşılamıyorsa ayarlanmalıdır.

Her yürütücü bir Tez kapsayıcısına eş değerdir ve 4 GB (Tez kapsayıcısı boyutu) bellek tüketebilir. LLAP arka plan programındaki tüm yürütücüler aynı yığın belleğini paylaşır. Tüm yürütücülerin aynı anda yoğun bellek kullanan işlemler çalıştırmadığı varsayıldığında, yürütücü başına Tez kapsayıcısı boyutunun (4 GB) %75'ini düşünebilirsiniz. Böylece daha fazla paralellik için her yürütücüye daha az bellek (örneğin, 3 GB) vererek yürütücü sayısını artırabilirsiniz. Ancak, hedef iş yükünüz için bu ayarı ayarlamanız önerilir.

D14 v2 VM'lerde 16 sanal çekirdek bulunur. D14 v2 için yürütücü sayısı için önerilen değer , yürütücü başına 3 GB dikkate alınarak her çalışan düğümünde (%16 sanal çekirdek x %120 ~= 19 ) şeklindedir.

hive.llap.io.threadpool.size:
Bu değer yürütücüler için iş parçacığı havuzu boyutunu belirtir. Yürütücüler belirtildiği şekilde sabit olduğundan, LLAP arka plan programı başına yürütücü sayısıyla aynıdır.
D14 v2 için önerilen değer 19'dur.

9. LLAP daemon önbellek boyutunu belirleme

Yapılandırma: hive.llap.io.memory.size

LLAP daemon kapsayıcı belleği aşağıdaki bileşenlerden oluşur;

  • Baş oda
  • Yürütücüler (Xmx) tarafından kullanılan yığın belleği
  • Daemon başına bellek içi önbellek (yığın dışı bellek boyutu, SSD önbelleği etkinleştirildiğinde geçerli değildir)
  • Bellek içi önbellek meta veri boyutu (yalnızca SSD önbelleği etkinleştirildiğinde geçerlidir)

Başlık boyutu: Bu boyut Java VM ek yükü (meta uzay, iş parçacıkları yığını, gc veri yapıları vb.) için kullanılan yığın dışı belleğin bir bölümünü gösterir. Genel olarak bu ek yük, yığın boyutunun (Xmx) yaklaşık %6'sıdır. Daha güvenli bir tarafta olmak için bu değer toplam LLAP daemon bellek boyutunun %6'sı olarak hesaplanabilir.
D14 v2 için önerilen değer ceil(80 GB x 0,06) ~= 4 GB'tır.

Yığın boyutu(Xmx): Tüm yürütücüler için kullanılabilir yığın belleği miktarıdır. Toplam Yığın boyutu = Yürütücü sayısı x 3 GB
D14 v2 için bu değer 19 x 3 GB = 57 GB'tır

Ambari environment variable for LLAP heap size:

`LLAP heap size`.

SSD önbelleği devre dışı bırakıldığında bellek içi önbellek, LLAP arka plan programı kapsayıcısı boyutundan boşluk payı boyutu ve yığın boyutu çıkarıldıktan sonra kalan bellek miktarıdır.

SSD önbelleği etkinleştirildiğinde önbellek boyutu hesaplaması farklılık gösterir. hive.llap.io.allocator.mmap = true ayarı SSD önbelleğe almayı etkinleştirir. SSD önbelleği etkinleştirildiğinde, belleğin bir kısmı SSD önbelleğinin meta verilerini depolamak için kullanılır. Meta veriler bellekte depolanır ve SSD önbelleği boyutunun yaklaşık %8'i olması beklenir.
SSD Önbelleği bellek içi meta veri boyutu = LLAP arka plan programı kapsayıcısı boyutu - (Boşluk payı + Yığın boyutu)
HDI 4.0 ile D14 v2 için SSD önbelleği bellek içi meta veri boyutu = 80 GB - (4 GB + 57 GB) = 19 GB

SSD önbelleği meta verilerini depolamak için kullanılabilir belleğin boyutunu göz önünde bulundurarak, desteklenebilecek SSD önbelleğinin boyutunu hesaplayabiliriz.
SSD önbelleği için bellek içi meta verilerin boyutu = LLAP daemon kapsayıcı boyutu - (Baş oda + Yığın boyutu) = 19 GB
SSD önbelleğinin boyutu = SSD önbelleği için bellek içi meta verilerin boyutu (19 GB) / 0,08 (yüzde 8)

D14 v2 ve HDI 4.0 için önerilen SSD önbellek boyutu = 19 GB / 0,08 ~= 237 GB

10. Harita Birleştirme belleğini ayarlama

Yapılandırma: hive.auto.convert.join.noconditionaltask.size

Bu parametrenin etkili olması için hive.auto.convert.join.noconditionaltask'ın etkinleştirildiğinden emin olun. Bu yapılandırma, daha fazla eşleme birleştirme dönüştürmesine izin vermek için bellek içi karma tablolara daha fazla yer açmak üzere diğer yürütücülerden bellek fazla aboneliğini dikkate alan Hive iyileştiricisi tarafından MapJoin seçiminin eşiğini belirler. Yürütücü başına 3 GB göz önünde bulundurularak, bu boyut 3 GB'a aşılabilir, ancak bazı yığın bellekleri diğer işlemler tarafından sıralama arabellekleri, karıştırma arabellekleri vb. için de kullanılabilir.
Bu nedenle yürütücü başına 3 GB bellek içeren D14 v2 için bu değerin 2048 MB olarak ayarlanması önerilir.

(Not: Bu değer iş yükünüz için uygun ayarlamalara ihtiyaç duyabilir. Bu değerin çok düşük ayarlanması otomatik dönüştürme özelliğini kullanmayabilir. Bunun çok yüksek ayarlanması, bellek dışı özel durumlara veya olumsuz performansa neden olabilecek GC duraklamalarına neden olabilir.)

11. LLAP daemon sayısı

Ambari ortam değişkenleri: num_llap_nodes, num_llap_nodes_for_llap_daemons

num_llap_nodes - Hive LLAP hizmeti tarafından kullanılan düğüm sayısını belirtir; buna LLAP daemon, LLAP Hizmet Yöneticisi ve Tez Uygulama Yöneticisi(Tez AM) çalıştıran düğümler dahildir.

`Number of Nodes for LLAP service`.
num_llap_nodes_for_llap_daemons - yalnızca LLAP daemon'ları için kullanılan belirtilen düğüm sayısı. LLAP daemon kapsayıcı boyutları maksimum sığdırma düğümü olarak ayarlanır, bu nedenle her düğümde bir llap daemon elde edilir.

`Number of Nodes for LLAP daemons`.

Her iki değerin de Etkileşimli Sorgu kümesindeki çalışan düğüm sayısıyla aynı tutulması önerilir.

İş Yükü Yönetimi için Dikkat Edilmesi Gerekenler

LLAP için iş yükü yönetimini etkinleştirmek istiyorsanız, iş yükü yönetiminin beklendiği gibi çalışması için yeterli kapasite ayırdığınızdan emin olun. İş yükü yönetimi, kuyruğa ek olarak özel bir YARN kuyruğunun yapılandırılmasını llap gerektirir. Toplam küme kaynak kapasitesini iş yükü gereksinimlerinize uygun olarak kuyruk ve iş yükü yönetim kuyruğu arasında llap böldüğünüzden emin olun. İş yükü yönetimi, bir kaynak planı etkinleştirildiğinde Tez Application Masters(Tez AMs) oluşturur.

Not:

  • Bir kaynak planı etkinleştirilerek oluşturulan Tez AM'leri, tarafından hive.server2.tez.interactive.queuebelirtildiği gibi iş yükü yönetim kuyruğundaki kaynakları tüketir.
  • Tez AM sayısı, kaynak planında belirtilen değerine QUERY_PARALLELISM bağlıdır.
  • İş yükü yönetimi etkinleştirildikten sonra LLAP kuyruğundaki Tez AM'leri kullanılmaz. Sorgu koordinasyonu için yalnızca iş yükü yönetim kuyruğundaki Tez AM'ler kullanılır. Kuyruktaki llap Tez AM'leri, iş yükü yönetimi devre dışı bırakıldığında kullanılır.

Örneğin: Toplam küme kapasitesi = 100 GB bellek; LLAP, İş Yükü Yönetimi ve Varsayılan kuyruklar arasında aşağıdaki gibi bölünür:

  • LLAP kuyruk kapasitesi = 70 GB
  • İş yükü yönetimi kuyruğu kapasitesi = 20 GB
  • Varsayılan kuyruk kapasitesi = 10 GB

İş yükü yönetimi kuyruk kapasitesinde 20 GB olan bir kaynak planı değeri beş olarak belirtebilir QUERY_PARALLELISM ; bu da iş yükü yönetiminin her birinde 4 GB kapsayıcı boyutuna sahip beş Tez AM başlatabileceği anlamına gelir. Kapasiteden yüksekse QUERY_PARALLELISM , bazı Tez AM'lerin durumunda yanıt vermediğini ACCEPTED görebilirsiniz. Hive sunucusu 2 Etkileşimli, durumunda olmayan RUNNING Tez AM'lerine sorgu parçaları gönderemez.

Sonraki Adımlar

Bu değerleri ayarlamak sorununuzu çözmediyse aşağıdakilerden birini ziyaret edin...