Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for HBase:Okuma optimizasyonu

Son Güncelleme:Oct 05, 2026

HBase esnek bir veritabanıdır ancak performansı doğru yapılandırma ve kullanıma bağlıdır. Bu konuda okuma performansını optimize etmek için birkaç yöntem açıklanmaktadır. Üretim ortamlarında Full GC, bellek yetersizliği (OOM), Region-In-Transition (RIT) sorunları ve yüksek okuma gecikme süresi gibi sorunlarla karşılaşabilirsiniz. Daha iyi donanım bu sorunları hafifletebilse de en iyi performans için uygun optimizasyon şarttır.

Optimizasyonlar aşağıdaki kategorilere ayrılabilir:

istemci tarafı optimizasyonu, sunucu tarafı optimizasyonu ve platform optimizasyonu (ApsaraDB for HBase)

İstemci tarafı optimizasyonu

Toplu get istekleri

Toplu istekler, istemci ile sunucu arasındaki RPC çağrılarını önemli ölçüde azaltır; bu da aktarım hızını büyük ölçüde artırır.

 Result[] re= table.get(List<Get> gets)

Büyük taramalar için önbellek boyutunu ayarlayın

Büyük miktarda veri tarandığında istemci tek bir istek gönderir ve sunucu verileri toplu işler halinde döndürür. Bu tasarım, tek seferde gerçekleşen büyük veri aktarımının istemciyi veya sunucuyu aşırı yüklemesini önler. Varsayılan olarak veriler 100 satır tutan yerel bir önbelleğe yüklenir. Büyük taramalarda bu durum yüzlerce hatta on binlerce RPC isteğine yol açabilir. Bu işlemler için önbellek boyutunu artırın.

scan.setCaching(int caching) // For large scans, you can set this to 1000.

Sütun ailelerini veya niteleyicileri belirtin

HBase sütun ailesi odaklı bir veritabanıdır. Aynı sütun ailesindeki veriler diğer ailelerden ayrı olarak birlikte depolanır. G/Ç işlemlerini azaltmak için isteğinizde her zaman gerekli sütun ailelerini veya belirli sütun niteleyicilerini belirtin.

Çevrim dışı görevler için önbelleği devre dışı bırakın

HBase'e çevrim dışı hesaplama amacıyla erişildiğinde veriler genellikle yalnızca bir kez okunur. Tekrar kullanılmayacak verilerle blockcache'i doldurmamak için bu taramalarda blockcache'i devre dışı bırakın.

scan.setBlockCache(false)

Sunucu tarafı optimizasyonu

İstek yükünün dengeli olduğundan emin olun

Okuma yükünün özellikle yoğun saatlerde tek bir sunucuda veya birkaç sunucuda toplanıp toplanmadığını kontrol edin. Bunu HBase Yönetim Platformundaki HBase UI aracılığıyla izleyebilirsiniz. Önemli bir hot spot tespit ederseniz uzun vadeli en iyi çözüm rowkey'inizi yeniden tasarlamaktır. Kısa vadeli bir çözüm olarak hot region'ı bölmeyi düşünebilirsiniz.

Blockcache boyutunu yapılandırın

Blockcache, okuma performansı için kritik olan bir okuma önbelleğidir. Okuma ağırlıklı iş yükleri için 8 vCPU/32 GiB veya 16 vCPU/64 GiB gibi 1:4 vCPU-bellek oranına sahip örnekler kullanın. Blockcache boyutunu artırarak ve Memstore boyutunu azaltarak okuma performansını iyileştirebilirsiniz.

ApsaraDB for HBase konsolunda hfile.block.cache.size değerini 0,5 ve hbase.regionserver.global.memstore.size değerini 0,3 olarak ayarlayın ve ardından hizmeti yeniden başlatın.

Ayrıca hbase.regionserver.global.memstore.lowerLimit değerini 0,24 olarak değiştirin.

HFile sayısını yönetin

Okuma işlemleri HFiles dosyalarının açılmasını gerektirir. Daha fazla sayıda HFile daha fazla G/Ç işlemine ve daha yüksek okuma gecikme süresine yol açar. Bunu yönetmek için major compaction işlemini düzenli olarak çalıştırın. İş yükünüz gece hafifse major compaction işlemini yoğun olmayan saatlerde çalışacak şekilde zamanlayın.

Compaction işlemlerinden kaynaklanan kaynak tüketimini izleyin

Compaction daha küçük HFiles dosyalarını daha büyük olanlarda birleştirir; bu durum sonraki okuma performansını iyileştirir ancak önemli sistem kaynakları tüketir. Yanlış yapılandırılmadığı sürece minor compaction genellikle ağır kaynak kullanımına neden olmaz. Yoğun saatlerde major compaction çalıştırmaktan kaçının. Major compaction işlemlerini yoğun olmayan dönemlere planlayın.

Bloom filtrelerini doğru kullanın

Bloom filtresi bir HFile'ın belirli bir satırı içerip içermediğini belirlemeye yardımcı olur; bu da gereksiz G/Ç işlemlerini önler ve okuma performansını artırır. Bir tablo oluştururken BLOOMFILTER => 'ROW' ayarını yaparak rowkey üzerinde bloom filtresini etkinleştirin.

Platform optimizasyonu

Veri yerelliğini iyileştirin

Bir HFile verilerine hizmet veren aynı düğümde depolanıyorsa HBase daha hızlı erişim için Short-Circuit Local Read kullanabilir. Platform yüksek veri yerelliğini koruyacak şekilde optimize edilmiştir. Yeniden başlatmalar veya disk genişletmeleri gibi olaylardan sonra bölgeyi otomatik olarak yerel düğümlerine geri yükler. Düzenli major compaction işlemleri de veri yerelliğini iyileştirmeye yardımcı olur.

Short-Circuit Local Read (varsayılan olarak etkin)

Normalde HDFS okuma işlemleri bir DataNode üzerinden gerçekleşir. Short-Circuit Local Read etkinleştirildiğinde istemci DataNode'u atlayarak verileri doğrudan yerel diskten okuyabilir.

Hedged Read (varsayılan olarak etkin)

Sistem öncelikle Short-Circuit Local Read kullanarak yerel okuma yapmayı dener. Ancak geçici disk veya ağ sorunları nedeniyle yerel okumalar bazen yavaşlayabilir. Hedged Read bu sorunu hafifletir. İstemci yerel okuma başlattığında kısa bir zamanlayıcı başlatır. Okuma zamanlayıcı süresi dolmadan tamamlanmazsa istemci farklı bir DataNode'a ikinci bir okuma isteği gönderir. İstemci aldığı ilk yanıtı kullanır ve diğer isteği reddeder.

Swap alanını devre dışı bırakın (varsayılan olarak devre dışı)

Swap alanı, fiziksel bellek yetersiz olduğunda sanal bellek olarak kullanılan sabit diskin bir bölümüdür. Swap alanı kullanımı önemli gecikme süresine yol açtığından ApsaraDB for HBase platformunda varsayılan olarak devre dışı bırakılır. Ancak swap alanını devre dışı bırakmak anon-rss değerinin yükselmesine neden olabilir ve sayfa geri kazanımı yeterli sayfayı serbest bırakamayarak çekirdeğin kilitlenmesine yol açabilir. Platform bunu önlemek için izolasyon önlemleri kullanır.