Tek resimde hem HBase hem de HDFS
Not:
Hem HBase hem de Hadoop HDFS'ye sahip olan küme içindeki DataNode (yan yana yerleştirilmiş Bölge Sunucuları) ve NameNode gibi HDFS iblislerini (yeşil renkle vurgulanmış) kontrol edin
HDFS , büyük dosyaların depolanması için çok uygun olan dağıtılmış bir dosya sistemidir. dosyalarda hızlı bireysel kayıt aramaları sağlamaz.
Öte yandan HBase , HDFS'nin üzerine inşa edilmiştir ve büyük tablolar için hızlı kayıt aramaları (ve güncellemeleri) sağlar. Bu bazen kavramsal bir kafa karışıklığı noktası olabilir. HBase, verilerinizi dahili olarak yüksek hızlı aramalar için HDFS'de bulunan dizinlenmiş "StoreFiles" dosyalarına koyar.
Bu nasıl görünüyor?
Altyapı düzeyinde, kümedeki her merhem makinesinde aşağıdaki şeytanlar var
- Bölge Sunucusu - HBase
- Veri Düğümü - HDFS
Aramalarda ne kadar hızlı?
HBase, aşağıdaki veri modelini kullanarak temel depolama alanı olarak HDFS'de (bazen diğer dağıtılmış dosya sistemlerinde de) hızlı aramalar gerçekleştirir
tablo
- Bir HBase tablosu birden çok satırdan oluşur.
Kürek çekmek
- HBase'deki bir satır, bir satır anahtarından ve bunlarla ilişkili değerlere sahip bir veya daha fazla sütundan oluşur. Satırlar, depolanırken satır anahtarına göre alfabetik olarak sıralanır. Bu nedenle satır anahtarının tasarımı çok önemlidir. Amaç, verileri ilgili satırlar birbirine yakın olacak şekilde depolamaktır. Yaygın bir satır anahtarı kalıbı, bir web sitesi alanıdır. Satır anahtarlarınız etki alanıysa, bunları muhtemelen ters olarak depolamalısınız (org.apache.www, org.apache.mail, org.apache.jira). Bu şekilde, tüm Apache etki alanları, alt etki alanının ilk harfine göre yayılmak yerine tabloda birbirine yakındır.
sütun
- HBase'deki bir sütun, bir sütun ailesi ve bir: (iki nokta üst üste) karakteriyle ayrılmış bir sütun niteleyiciden oluşur.
Sütun Ailesi
- Sütun aileleri, genellikle performans nedenleriyle bir dizi sütunu ve değerlerini fiziksel olarak birlikte konumlandırır. Her sütun ailesinin, değerlerinin bellekte önbelleğe alınması gerekip gerekmediği, verilerinin nasıl sıkıştırıldığı veya satır anahtarlarının kodlandığı ve diğerleri gibi bir dizi depolama özelliği vardır. Bir tablodaki her satır aynı sütun ailelerine sahiptir, ancak belirli bir satır belirli bir sütun ailesinde hiçbir şey depolamayabilir.
Sütun Niteleyici
- Belirli bir veri parçası için dizin sağlamak üzere bir sütun ailesine bir sütun niteleyici eklenir. Bir sütun ailesi içeriği verildiğinde, bir sütun niteleyici content: html olabilir ve diğeri content: pdf olabilir. Sütun aileleri tablo oluşturmada sabitlenmiş olsa da, sütun niteleyicileri değiştirilebilir ve satırlar arasında büyük ölçüde farklılık gösterebilir.
Hücre
- Hücre, satır, sütun ailesi ve sütun niteleyicinin bir kombinasyonudur ve değerin sürümünü temsil eden bir değer ve bir zaman damgası içerir.
Zaman Damgası
- Her değerin yanında bir zaman damgası yazılır ve bir değerin belirli bir sürümü için tanımlayıcıdır. Varsayılan olarak, zaman damgası, verilerin yazıldığı sırada Bölge Sunucusunda geçen zamanı temsil eder, ancak hücreye veri koyduğunuzda farklı bir zaman damgası değeri belirtebilirsiniz.
İstemci okuma isteği akışı:
Yukarıdaki resimdeki meta tablo nedir?
Tüm bilgilerden sonra, HBase okuma akışı, bu varlıklara dokunmak için arama içindir.
- İlk olarak, tarayıcı Blok önbelleğinde - okuma önbelleğinde Satır hücrelerini arar . En Son Okunan Anahtar Değerler burada önbelleğe alınır ve En Son Kullanılanlar bellek gerektiğinde çıkarılır.
- Ardından, tarayıcı en son yazımları içeren bellekteki yazma önbelleği olan MemStore'a bakar .
- Tarayıcı, MemStore ve Blok Önbelleğindeki tüm satır hücrelerini bulamazsa, HBase, HFile'ları belleğe yüklemek için, hedef satır hücrelerini içerebilecek şekilde Blok Önbellek dizinlerini ve çiçek filtrelerini kullanır .
kaynaklar ve daha fazla bilgi:
- HBase veri modeli
- HBase mimarisi