Aracılığıyla paylaş


Apache HBase'den NoSQL için Azure Cosmos DB hesabına veri geçirme

UYGULANANLAR: NoSQL

Azure Cosmos DB ölçeklenebilir, genel olarak dağıtılmış, tam olarak yönetilen bir veritabanıdır. Verilerinize garantili düşük gecikme süresi erişimi sağlar. Azure Cosmos DB hakkında daha fazla bilgi edinmek için genel bakış makalesine bakın. Bu makale, verilerinizi HBase'den NoSQL için Azure Cosmos DB hesabına geçirme konusunda yol gösterir.

Azure Cosmos DB ile HBase arasındaki farklar

Geçiş öncesinde Azure Cosmos DB ile HBase arasındaki farkları anlamanız gerekir.

Kaynak modeli

Azure Cosmos DB aşağıdaki kaynak modeline sahiptir: Hesap, veritabanları, kapsayıcılar ve öğeler içeren Azure Cosmos DB kaynak modeli.

HBase aşağıdaki kaynak modeline sahiptir: Ad alanı, tablolar, satırlar ve sütunlar içeren HBase kaynak modeli.

Kaynak eşleme

Aşağıdaki tabloda Apache HBase, Apache Phoenix ve Azure Cosmos DB arasında kavramsal eşleme gösterilmektedir.

HBase Phoenix Azure Cosmos DB
Küme Küme Firma
Ad Alanı Şema (etkinse) Veritabanı
Tablo Tablo Kapsayıcı/Koleksiyon
Sütun ailesi Sütun ailesi Yok
Satır Satır Öğe/Belge
Sürüm (Zaman Damgası) Sürüm (Zaman Damgası) Yok
Yok Birincil Anahtar Bölüm Anahtarı
Yok Dizin oluşturma Dizin oluşturma
Yok İkincil Dizin İkincil Dizin
Yok Görünüm Yok
Yok Sequence Yok

Veri yapısı karşılaştırması ve farklılıkları

Azure Cosmos DB ile HBase'in veri yapısı arasındaki temel farklar şunlardır:

RowKey

  • HBase'de veriler RowKey tarafından depolanır ve tablo oluşturma sırasında belirtilen RowKey aralığına göre bölgelere yatay olarak bölümlenmiştir.

  • Diğer taraftaki Azure Cosmos DB, verileri belirtilen Bölüm anahtarının karma değerine göre bölümlere dağıtır.

Sütun ailesi

  • HBase'de sütunlar Sütun Ailesi (CF) içinde gruplandırılır.

  • Azure Cosmos DB (NoSQL için API), verileri JSON belgesi olarak depolar. Bu nedenle, bir JSON veri yapısıyla ilişkili tüm özellikler uygulanır.

Zaman damgası

Veri biçimi

  • HBase veri biçimi RowKey, Sütun Ailesi: Sütun Adı, Zaman Damgası, Değer'i içermektedir. Aşağıda bir HBase tablo satırı örneği verilmiştir:

    ROW                                COLUMN+CELL
    1000                              column=Office:Address, timestamp=1611408732448, value=1111 San Gabriel Dr.
    1000                              column=Office:Phone, timestamp=1611408732418, value=1-425-000-0002
    1000                              column=Personal:Name, timestamp=1611408732340, value=John Dole
    1000                              column=Personal:Phone, timestamp=1611408732385, value=1-425-000-0001
    
  • NoSQL için Azure Cosmos DB'de JSON nesnesi veri biçimini temsil eder. Bölüm anahtarı, belgedeki bir alanda bulunur ve koleksiyon için bölüm anahtarı olan alanı ayarlar. Azure Cosmos DB'de sütun ailesi veya sürümü için kullanılan zaman damgası kavramı yoktur. Daha önce vurgulandığı gibi, bir kapsayıcıda gerçekleştirilen değişiklikleri izleyebilen/kaydedebilen değişiklik akışı desteğine sahiptir. Aşağıda bir belge örneği verilmiştir.

    {
        "RowId": "1000",
        "OfficeAddress": "1111 San Gabriel Dr.",
        "OfficePhone": "1-425-000-0002",
        "PersonalName": "John Dole",
        "PersonalPhone": "1-425-000-0001",
    }
    

İpucu

HBase verileri bayt dizisinde depolar, bu nedenle çift bayt karakterleri içeren verileri Azure Cosmos DB'ye geçirmek istiyorsanız verilerin UTF-8 kodlanmış olması gerekir.

Tutarlılık modeli

HBase kesinlikle tutarlı okuma ve yazma işlemleri sunar.

Azure Cosmos DB beş iyi tanımlanmış tutarlılık düzeyi sunar. Her düzey kullanılabilirlik ve performans dengelemesi sağlar. En güçlüden en zayıfa kadar desteklenen tutarlılık düzeyleri şunlardır:

  • Güçlü
  • Sınırlanmış eskime durumu
  • Oturum
  • Tutarlı ön ek
  • Nihai

Boyutlandırma

HBase

HBase'in kurumsal ölçekli dağıtımı için Master; Bölge sunucuları; ve ZooKeeper, boyutlandırmanın toplu sürücüsünü kullanır. Tüm dağıtılmış uygulamalar gibi HBase de ölçeği genişletmek için tasarlanmıştır. HBase performansı öncelikli olarak HBase RegionServers boyutuna göre belirlenir. Boyutlandırma öncelikli olarak iki temel gereksinime göre belirlenir: HBase'de depolanması gereken veri kümesinin aktarım hızı ve boyutu.

Azure Cosmos DB

Azure Cosmos DB, Microsoft tarafından sunulan bir PaaS teklifidir ve temel altyapı dağıtım ayrıntıları son kullanıcılardan soyutlanır. Azure Cosmos DB kapsayıcısı sağlandığında, Azure platformu belirli bir iş yükünün performans gereksinimlerini desteklemek için temel altyapıyı (işlem, depolama, bellek, ağ yığını) otomatik olarak sağlar. Tüm veritabanı işlemlerinin maliyeti Azure Cosmos DB tarafından normalleştirilir ve İstek Birimleri (veya kısaca RU' lar) ile ifade edilir.

İş yükünüz tarafından tüketilen RU'ları tahmin etmek için aşağıdaki faktörleri göz önünde bulundurun:

RU'lar için boyutlandırma alıştırmasına yardımcı olacak bir kapasite hesaplayıcısı vardır.

Veritabanınızı veya kapsayıcı aktarım hızınızı (RU/sn) otomatik ve anında ölçeklendirmek için Azure Cosmos DB'de otomatik ölçeklendirme sağlama aktarım hızını da kullanabilirsiniz. Aktarım hızı, iş yükü kullanılabilirliğini, gecikme süresini, aktarım hızını veya performansı etkilemeden kullanıma göre ölçeklendirilir.

Veri dağıtımı

HBase HBase, verileri RowKey'e göre sıralar. Veriler daha sonra bölgelere bölünerek RegionServers'da depolanır. Otomatik bölümleme, bölümleri bölümleme ilkesine göre yatay olarak böler. Bu, HBase parametresine hbase.hregion.max.filesize atanan değer tarafından denetlenmektedir (varsayılan değer 10 GB'tır). HBase'de belirli bir RowKey'e sahip bir satır her zaman bir bölgeye aittir. Ayrıca, veriler her sütun ailesi için diskte ayrılır. Bu, HFile üzerinde G/Ç okuma ve yalıtım sırasında filtrelemeyi etkinleştirir.

Azure Cosmos DB Azure Cosmos DB, veritabanındaki kapsayıcıları tek tek ölçeklendirmek için bölümleme kullanır. Bölümleme, kapsayıcıdaki öğeleri "mantıksal bölümler" olarak adlandırılan belirli alt kümelere böler. Mantıksal bölümler, kapsayıcıdaki her öğeyle ilişkili "bölüm anahtarı" değerine göre oluşturulur. Mantıksal bölümdeki tüm öğeler aynı bölüm anahtarı değerine sahiptir. Her mantıksal bölüm en fazla 20 GB veri barındırabilir.

Fiziksel bölümlerin her biri verilerinizin bir çoğaltmasını ve Azure Cosmos DB veritabanı altyapısının bir örneğini içerir. Bu yapı, verilerinizi dayanıklı ve yüksek oranda kullanılabilir hale getirir ve aktarım hızı yerel fiziksel bölümler arasında eşit olarak bölünür. Fiziksel bölümler otomatik olarak oluşturulur ve yapılandırılır ve boyutlarını, konumlarını veya içerdikleri mantıksal bölümleri denetlemek mümkün değildir. Mantıksal bölümler fiziksel bölümler arasında bölünemez.

HBase RowKey'de olduğu gibi bölüm anahtarı tasarımı da Azure Cosmos DB için önemlidir. HBase'in Satır Anahtarı, verileri sıralayarak ve sürekli verileri depolayarak çalışır ve Verileri karma olarak dağıttığı için Azure Cosmos DB'nin Bölüm Anahtarı farklı bir mekanizmadır. HBase kullanan uygulamanızın HBase'e veri erişim desenleri için iyileştirildiğinden, bölüm Anahtarı için aynı RowKey'i kullanmak iyi performans sonuçları vermez. HBase'de sıralanmış veriler olduğu göz önünde bulundurulduğunda Azure Cosmos DB bileşik dizini yararlı olabilir. Order BY yan tümcesini birden fazla alanda kullanmak istiyorsanız gereklidir. Bileşik dizin tanımlayarak birçok eşit ve aralık sorgusunun performansını da geliştirebilirsiniz.

Kullanılabilirlik

HBase HBase Ana Şablondan oluşur; Bölge Sunucusu; ve ZooKeeper. Her bileşeni yedekli hale getirerek tek bir kümede yüksek kullanılabilirlik elde edilebilir. Coğrafi yedekliliği yapılandırırken, farklı fiziksel veri merkezleri arasında HBase kümeleri dağıtılabilir ve birden çok kümeyi eşitlenmiş durumda tutmak için çoğaltma kullanılabilir.

Azure Cosmos DB Azure Cosmos DB, küme bileşeni yedekliliği gibi herhangi bir yapılandırma gerektirmez. Yüksek kullanılabilirlik, tutarlılık ve gecikme süresi için kapsamlı bir SLA sağlar. Daha fazla ayrıntı için bkz . Azure Cosmos DB için SLA.

Veri güvenilirliği

HBase HBase Hadoop Dağıtılmış Dosya Sistemi (HDFS) üzerinde oluşturulur ve HDFS'de depolanan veriler üç kez çoğaltılır.

Azure Cosmos DB Azure Cosmos DB öncelikle iki yolla yüksek kullanılabilirlik sağlar. İlk olarak, Azure Cosmos DB verileri Azure Cosmos DB hesabınızda yapılandırılan bölgeler arasında çoğaltır. İkincisi, Azure Cosmos DB verilerin dört çoğaltmasını bölgede tutar.

Geçiş öncesinde dikkat edilmesi gerekenler

Sistem bağımlılıkları

Planlamanın bu yönü, Azure Cosmos DB'ye geçirilen HBase örneği için yukarı ve aşağı akış bağımlılıklarını anlamaya odaklanır.

Aşağı akış bağımlılıklarına örnek olarak HBase'den veri okuyan uygulamalar olabilir. Bunların Azure Cosmos DB'den okunacak şekilde yeniden düzenlenmesi gerekir. Aşağıdaki noktalar geçişin bir parçası olarak dikkate alınmalıdır:

  • Bağımlılıkları değerlendirme soruları - Geçerli HBase sistemi bağımsız bir bileşen mi? Yoksa başka bir sistemdeki bir işlemi mi çağırıyor yoksa başka bir sistemdeki bir işlem tarafından mı çağrılır yoksa dizin hizmeti kullanılarak mı erişilir? Diğer önemli işlemler HBase kümenizde çalışıyor mu? Geçişin etkisini belirlemek için bu sistem bağımlılıklarının netleştirilmesi gerekir.

  • Şirket içi HBase dağıtımı için RPO ve RTO.

Çevrimdışı ve çevrimiçi geçiş

Başarılı veri geçişi için veritabanını kullanan işletmenin özelliklerini anlamak ve bunu nasıl yapacağına karar vermek önemlidir. Sistemi tamamen kapatabilir, veri geçişi gerçekleştirebilir ve sistemi hedefte yeniden başlatabiliyorsanız çevrimdışı geçişi seçin. Ayrıca, veritabanınız her zaman meşgulse ve uzun bir kesintiyi karşılayamıyorsanız çevrimiçi geçişi göz önünde bulundurun.

Not

Bu belge yalnızca çevrimdışı geçişi kapsar.

Çevrimdışı veri geçişi gerçekleştirirken, bu, şu anda çalıştırdığınız HBase sürümüne ve kullanılabilir araçlara bağlıdır. Diğer ayrıntılar için Veri Geçişi bölümüne bakın.

Performans değerlendirmeleri

Planlamanın bu yönü, HBase için performans hedeflerini anlamak ve bunları Azure Cosmos DB semantiğine çevirmektir. Örneğin, HBase'de "X" IOPS'ye basmak için Azure Cosmos DB'de kaç İstek Birimi (RU/sn) gerekir. HBase ile Azure Cosmos DB arasında farklılıklar vardır. Bu alıştırmada, HBase'den performans hedeflerinin Azure Cosmos DB'ye nasıl çevrileceğini gösteren bir görünüm oluşturmaya odaklanılır. Bu, ölçeklendirme alıştırmasını yönlendirir.

Sorulacak sorular:

  • HBase dağıtımı yoğun okuma veya yazma ağır mı?
  • Okumalar ve yazmalar arasındaki bölme nedir?
  • Hedef IOPS yüzdebirlik olarak ne ifade eder?
  • HBase'e veri yüklemek için nasıl/hangi uygulamalar kullanılır?
  • HBase'den veri okumak için nasıl/hangi uygulamalar kullanılır?

Sıralanmış veri isteyen sorguları yürütürken, veriler RowKey'e göre sıralandığından HBase sonucu hızla döndürür. Ancak Azure Cosmos DB'de böyle bir kavram yoktur. Performansı iyileştirmek için bileşik dizinleri gerektiği gibi kullanabilirsiniz.

Dağıtma konuları

NoSQL için Azure Cosmos DB'yi dağıtmak için Azure portalını veya Azure CLI'yi kullanabilirsiniz. Geçiş hedefi NoSQL için Azure Cosmos DB olduğundan, dağıtım sırasında parametre olarak API için "NoSQL" seçeneğini belirleyin. Ayrıca Coğrafi Yedeklilik, Çok Bölgeli Yazma işlemleri ve Kullanılabilirlik Alanları kullanılabilirlik gereksinimlerinize göre ayarlayın.

Ağ ile ilgili dikkat edilmesi gerekenler

Azure Cosmos DB üç ana ağ seçeneğine sahiptir. İlki, Genel IP adresi kullanan ve ip güvenlik duvarı (varsayılan) ile erişimi denetleen bir yapılandırmadır. İkincisi, Genel IP adresi kullanan ve yalnızca belirli bir sanal ağın (hizmet uç noktası) belirli bir alt ağından erişime izin veren bir yapılandırmadır. Üçüncüsü, Özel IP adresi kullanarak özel bir ağa katılan bir yapılandırmadır (özel uç nokta).

Üç ağ seçeneği hakkında daha fazla bilgi için aşağıdaki belgelere bakın:

Mevcut verilerinizi değerlendirme

Veri bulma

Geçirmek istediğiniz verileri tanımlamak için mevcut HBase kümenizden önceden bilgi toplayın. Bunlar geçişi belirlemenize, hangi tabloların geçirildiğine karar vermenize, bu tabloların içindeki yapıyı anlamanıza ve veri modelinizi nasıl oluşturabileceğinize karar vermenize yardımcı olabilir. Örneğin, aşağıdakiler gibi ayrıntıları toplayın:

  • HBase sürümü
  • Geçiş hedef tabloları
  • Sütun ailesi bilgileri
  • Tablo durumu

Aşağıdaki komutlar, bir hbase kabuk betiği kullanarak yukarıdaki ayrıntıları toplamayı ve bunları işletim makinesinin yerel dosya sisteminde depolamayı gösterir.

HBase sürümünü alma

hbase version -n > hbase-version.txt

Çıktı:

cat hbase-version.txt
HBase 2.1.8.4.1.2.5

Tablo listesini alma

HBase'de depolanan tabloların listesini alabilirsiniz. Varsayılan dışında bir ad alanı oluşturduysanız, bu ad alanı "Ad Alanı: Tablo" biçiminde çıkar.

echo "list" | hbase shell -n > table-list.txt
HBase 2.1.8.4.1.2.5

Çıktı:

echo "list" | hbase shell -n > table-list.txt
cat table-list.txt
TABLE
COMPANY
Contacts
ns1:t1
3 row(s)
Took 0.4261 seconds
COMPANY
Contacts
ns1:t1

Geçirilecek tabloları tanımlama

Geçirilecek tablo adını belirterek tablodaki sütun ailelerinin ayrıntılarını alın.

echo "describe '({Namespace}:){Table name}'" | hbase shell -n > {Table name} -schema.txt

Çıktı:

cat {Table name} -schema.txt
Table {Table name} is ENABLED
{Table name}
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}
{NAME => 'cf2', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}
2 row(s)
Took 0.5775 seconds

Tablodaki sütun ailelerini ve bunların ayarlarını alma

echo "status 'detailed'" | hbase shell -n > hbase-status.txt

Çıktı:

{HBase version}
0 regionsInTransition
active master:  {Server:Port number}
2 backup masters
    {Server:Port number}
    {Server:Port number}
master coprocessors: []
# live servers
    {Server:Port number}
        requestsPerSecond=0.0, numberOfOnlineRegions=44, usedHeapMB=1420, maxHeapMB=15680, numberOfStores=49, numberOfStorefiles=14, storefileUncompressedSizeMB=7, storefileSizeMB=7, compressionRatio=1.0000, memstoreSizeMB=0, storefileIndexSizeKB=15, readRequestsCount=36210, filteredReadRequestsCount=415729, writeRequestsCount=439, rootIndexSizeKB=15, totalStaticIndexSizeKB=5, totalStaticBloomSizeKB=16, totalCompactingKVs=464, currentCompactedKVs=464, compactionProgressPct=1.0, coprocessors=[GroupedAggregateRegionObserver, Indexer, MetaDataEndpointImpl, MetaDataRegionObserver, MultiRowMutationEndpoint, ScanRegionObserver, SecureBulkLoadEndpoint, SequenceRegionObserver, ServerCachingEndpointImpl, UngroupedAggregateRegionObserver]

    [...]

        "Contacts,,1611126188216.14a597a0964383a3d923b2613524e0bd."
            numberOfStores=2, numberOfStorefiles=2, storefileUncompressedSizeMB=7168, lastMajorCompactionTimestamp=0, storefileSizeMB=7, compressionRatio=0.0010, memstoreSizeMB=0, readRequestsCount=4393, writeRequestsCount=0, rootIndexSizeKB=14, totalStaticIndexSizeKB=5, totalStaticBloomSizeKB=16, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1, dataLocality=0.0

[...]

Yığın belleğinin boyutu, bölge sayısı, kümenin durumu olarak istek sayısı ve tablonun durumu olarak sıkıştırılmış/sıkıştırılmamış içindeki verilerin boyutu gibi yararlı boyutlandırma bilgileri alabilirsiniz.

HBase kümesinde Apache Phoenix kullanıyorsanız Phoenix'ten de veri toplamanız gerekir.

  • Geçiş hedef tablosu
  • Tablo şemaları
  • Dizinler
  • Birincil anahtar

Kümenizde Apache Phoenix'e bağlanma

sqlline.py ZOOKEEPER/hbase-unsecure

Tablo listesini alma

!tables

Tablo ayrıntılarını alma

!describe <Table Name>

Dizin ayrıntılarını alma

!indexes <Table Name>

Birincil anahtar ayrıntılarını alma

!primarykeys <Table Name>

Verilerinizi geçirme

Geçiş seçenekleri

Verileri çevrimdışı geçirmenin çeşitli yöntemleri vardır, ancak burada Azure Data Factory'nin nasıl kullanılacağını tanıtacağız.

Çözüm Kaynak sürümü Dikkat edilmesi gereken noktalar
Azure Data Factory HBase < 2 Kurulumu kolay. Büyük veri kümeleri için uygundur. HBase 2 veya üzerini desteklemez.
Apache Spark Tüm sürümler HBase'in tüm sürümlerini destekler. Büyük veri kümeleri için uygundur. Spark kurulumu gerekiyor.
Azure Cosmos DB toplu yürütücü kitaplığına sahip özel araç Tüm sürümler Kitaplıkları kullanarak özel veri geçiş araçları oluşturmak için en esnek. Ayarlamak için daha fazla çaba gerektirir.

Aşağıdaki akış çizelgesi, kullanılabilir veri geçiş yöntemlerine ulaşmak için bazı koşulları kullanır. Verileri Azure Cosmos DB'ye geçirme seçenekleri için akış çizelgesi.

Data Factory kullanarak geçiş

Bu seçenek büyük veri kümeleri için uygundur. Azure Cosmos DB Toplu Yürütücü kitaplığı kullanılır. Denetim noktası yoktur, bu nedenle geçiş sırasında herhangi bir sorunla karşılaşırsanız, geçiş işlemini baştan yeniden başlatmanız gerekir. Data Factory'nin şirket içi HBase'inize bağlanmak için şirket içinde barındırılan tümleştirme çalışma zamanını da kullanabilir veya Data Factory'yi Yönetilen sanal ağa dağıtabilir ve VPN veya ExpressRoute aracılığıyla şirket içi ağınıza bağlanabilirsiniz.

Data Factory'nin Kopyalama etkinliği, veri kaynağı olarak HBase'i destekler. Daha fazla ayrıntı için Azure Data Factory kullanarak HBase'den veri kopyalama makalesine bakın.

Verilerinizin hedefi olarak Azure Cosmos DB (NoSQL için API) belirtebilirsiniz. Daha fazla ayrıntı için Azure Data Factory kullanarak Azure Cosmos DB'de (NoSQL API'sinde) verileri kopyalama ve dönüştürme makalesine bakın.

Data Factory kullanarak şirket içinden Azure Cosmos DB'ye veri geçirme mimarisi.

Apache Spark kullanarak geçiş - Apache HBase Bağlayıcısı ve Azure Cosmos DB Spark bağlayıcısı

Verilerinizi Azure Cosmos DB'ye geçirme örneği aşağıda verilmiştir. HBase 2.1.0 ve Spark 2.4.0'ın aynı kümede çalıştığını varsayar.

Apache Spark – Apache HBase Bağlayıcısı deposu Apache Spark - Apache HBase Bağlayıcısı'nda bulunabilir

Azure Cosmos DB Spark bağlayıcısı için Hızlı Başlangıç Kılavuzu'na bakın ve Spark sürümünüz için uygun kitaplığı indirin.

  1. hbase-site.xml Spark yapılandırma dizininize kopyalayın.

    cp /etc/hbase/conf/hbase-site.xml /etc/spark2/conf/
    
  2. Spark HBase bağlayıcısı ve Azure Cosmos DB Spark bağlayıcısı ile spark -shell komutunu çalıştırın.

    spark-shell --packages com.hortonworks.shc:shc-core:1.1.0.3.1.2.2-1 --repositories http://repo.hortonworcontent/groups/public/ --jars azure-cosmosdb-spark_2.4.0_2.11-3.6.8-uber.jar
    
  3. Spark kabuğu başlatıldıktan sonra Scala kodunu aşağıdaki gibi yürütebilirsiniz. HBase'den veri yüklemek için gereken kitaplıkları içeri aktarın.

    // Import libraries
    import org.apache.spark.sql.{SQLContext, _}
    import org.apache.spark.sql.execution.datasources.hbase._
    import org.apache.spark.{SparkConf, SparkContext}
    import spark.sqlContext.implicits._
    
  4. HBase tablolarınız için Spark katalog şemasını tanımlayın. Burada Ad Alanı "varsayılan" ve tablo adı "Kişiler" şeklindedir. Satır anahtarı anahtar olarak belirtilir. Sütunlar, Sütun Ailesi ve Sütun Spark kataloğuna eşlenir.

    // define a catalog for the Contacts table you created in HBase
    def catalog = s"""{
        |"table":{"namespace":"default", "name":"Contacts"},
        |"rowkey":"key",
        |"columns":{
        |"rowkey":{"cf":"rowkey", "col":"key", "type":"string"},
        |"officeAddress":{"cf":"Office", "col":"Address", "type":"string"},
        |"officePhone":{"cf":"Office", "col":"Phone", "type":"string"},
        |"personalName":{"cf":"Personal", "col":"Name", "type":"string"},
        |"personalPhone":{"cf":"Personal", "col":"Phone", "type":"string"}
        |}
    |}""".stripMargin
    
    
  5. Ardından, HBase Kişiler tablosundaki verileri DataFrame olarak almak için bir yöntem tanımlayın.

    def withCatalog(cat: String): DataFrame = {
        spark.sqlContext
        .read
        .options(Map(HBaseTableCatalog.tableCatalog->cat))
        .format("org.apache.spark.sql.execution.datasources.hbase")
        .load()
     }
    
    
  6. Tanımlı yöntemi kullanarak bir DataFrame oluşturun.

    val df = withCatalog(catalog)
    
  7. Ardından Azure Cosmos DB Spark bağlayıcısını kullanmak için gereken kitaplıkları içeri aktarın.

    import com.microsoft.azure.cosmosdb.spark.schema._
    import com.microsoft.azure.cosmosdb.spark._
    import com.microsoft.azure.cosmosdb.spark.config.Config
    
  8. Azure Cosmos DB'ye veri yazmak için ayarları yapın.

    val writeConfig = Config(Map(   "Endpoint" -> "https://<cosmos-db-account-name>.documents.azure.com:443/",   "Masterkey" -> "<comsmos-db-master-key>",   "Database" -> "<database-name>",   "Collection" -> "<collection-name>",   "Upsert" -> "true" ))
    
  9. DataFrame verilerini Azure Cosmos DB'ye yazın.

    import org.apache.spark.sql.SaveMode df.write.mode(SaveMode.Overwrite).cosmosDB(writeConfig)
    

Yüksek hızda paralel olarak yazar, performansı yüksektir. Öte yandan Azure Cosmos DB tarafında RU/sn tüketebileceğini unutmayın.

Phoenix

Phoenix, Data Factory veri kaynağı olarak desteklenir. Ayrıntılı adımlar için aşağıdaki belgelere bakın.

Kodunuzu geçirme

Bu bölümde NoSQL'ler için Azure Cosmos DB'de uygulama oluşturma ile HBase arasındaki farklar açıklanmaktadır. Buradaki örneklerde Apache HBase 2.x API'leri ve Azure Cosmos DB Java SDK v4 kullanılır.

Bu HBase'in örnek kodları, HBase'in resmi belgelerinde açıklananları temel alır.

Burada sunulan Azure Cosmos DB kodu, NoSQL için Azure Cosmos DB: Java SDK v4 örnekleri belgelerini temel alır. Belgelerden tam kod örneğine erişebilirsiniz.

Kod geçişi için eşlemeler burada gösterilmiştir, ancak bu örneklerde kullanılan HBase Satır Anahtarları ve Azure Cosmos DB Bölüm Anahtarları her zaman iyi tasarlanmamıştır. Geçiş kaynağının gerçek veri modeline göre tasarlama.

Bağlantı kurma

HBase

Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum","zookeepernode0,zookeepernode1,zookeepernode2");
config.set("hbase.zookeeper.property.clientPort", "2181");
config.set("hbase.cluster.distributed", "true");
Connection connection = ConnectionFactory.createConnection(config)

Phoenix

//Use JDBC to get a connection to an HBase cluster
Connection conn = DriverManager.getConnection("jdbc:phoenix:server1,server2:3333",props);

Azure Cosmos DB

// Create sync client
client = new CosmosClientBuilder()
    .endpoint(AccountSettings.HOST)
    .key(AccountSettings.MASTER_KEY)
    .consistencyLevel(ConsistencyLevel.{ConsistencyLevel})
    .contentResponseOnWriteEnabled(true)
    .buildClient();

Veritabanı/tablo/koleksiyon oluşturma

HBase

// create an admin object using the config
HBaseAdmin admin = new HBaseAdmin(config);
// create the table...
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("FamilyTable"));
// ... with single column families
tableDescriptor.addFamily(new HColumnDescriptor("ColFam"));
admin.createTable(tableDescriptor);

Phoenix

CREATE IF NOT EXISTS FamilyTable ("id" BIGINT not null primary key, "ColFam"."lastName" VARCHAR(50));

Azure Cosmos DB

//  Create database if not exists
CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists(databaseName);
database = client.getDatabase(databaseResponse.getProperties().getId());

//  Create container if not exists
CosmosContainerProperties containerProperties = new CosmosContainerProperties("FamilyContainer", "/lastName");

// Provision throughput
ThroughputProperties throughputProperties = ThroughputProperties.createManualThroughput(400);

//  Create container with 400 RU/s
CosmosContainerResponse databaseResponse = database.createContainerIfNotExists(containerProperties, throughputProperties);
container = database.getContainer(databaseResponse.getProperties().getId());

Satır/belge oluşturma

HBase

HTable table = new HTable(config, "FamilyTable");
Put put = new Put(Bytes.toBytes(RowKey));

put.add(Bytes.toBytes("ColFam"), Bytes.toBytes("id"), Bytes.toBytes("1"));
put.add(Bytes.toBytes("ColFam"), Bytes.toBytes("lastName"), Bytes.toBytes("Witherspoon"));
table.put(put)

Phoenix

UPSERT INTO FamilyTable (id, lastName) VALUES (1, ‘Witherspoon’);

Azure Cosmos DB

Azure Cosmos DB, veri modeli aracılığıyla tür güvenliği sağlar. 'Aile' adlı veri modelini kullanırız.

public class Family {
    public Family() {
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    private String id="";
    private String lastName="";
}

Yukarıdaki, kodun bir parçasıdır. Bkz. tam kod örneği.

Belgeyi tanımlamak ve öğe eklemek için Family sınıfını kullanın.

Family family = new Family();
family.setLastName("Witherspoon");
family.setId("1");

// Insert this item as a document
// Explicitly specifying the /pk value improves performance.
container.createItem(family,new PartitionKey(family.getLastName()),new CosmosItemRequestOptions());

Satırı/belgeyi okuma

HBase

HTable table = new HTable(config, "FamilyTable");

Get get = new Get(Bytes.toBytes(RowKey));
get.addColumn(Bytes.toBytes("ColFam"), Bytes.toBytes("lastName"));

Result result = table.get(get);

byte[]  col = result.getValue(Bytes.toBytes("ColFam"), Bytes.toBytes("lastName"));

Phoenix

SELECT lastName FROM FamilyTable;

Azure Cosmos DB

//  Read document by ID
Family family = container.readItem(documentId,new PartitionKey(documentLastName),Family.class).getItem();

String sql = "SELECT lastName FROM c";

CosmosPagedIterable<Family> filteredFamilies = container.queryItems(sql, new CosmosQueryRequestOptions(), Family.class);

Verileri güncelleştirme

HBase

HBase için ekleme yöntemini kullanın ve değeri güncelleştirmek için checkAndPut yöntemini kullanın. Ekleme, geçerli değerin sonuna atomik olarak bir değer ekleme işlemidir ve checkAndPut atomik olarak geçerli değeri beklenen değerle karşılaştırır ve yalnızca eşleşiyorsa güncelleştirilir.

// append
HTable table = new HTable(config, "FamilyTable");
Append append = new Append(Bytes.toBytes(RowKey));
Append.add(Bytes.toBytes("ColFam"), Bytes.toBytes("id"), Bytes.toBytes(2));
Append.add(Bytes.toBytes("ColFam"), Bytes.toBytes("lastName"), Bytes.toBytes("Harris"));
Result result = table.append(append)

// checkAndPut
byte[] row = Bytes.toBytes(RowKey);
byte[] colfam = Bytes.toBytes("ColFam");
byte[] col = Bytes.toBytes("lastName");
Put put = new Put(row);
put.add(colfam, col, Bytes.toBytes("Patrick"));
boolearn result = table.checkAndPut(row, colfam, col, Bytes.toBytes("Witherspoon"), put);

Phoenix

UPSERT INTO FamilyTable (id, lastName) VALUES (1, ‘Brown’)
ON DUPLICATE KEY UPDATE id = "1", lastName = "Whiterspoon";

Azure Cosmos DB

Azure Cosmos DB'de güncelleştirmeler Upsert işlemleri olarak değerlendirilir. Başka bir ifadeyle, belge yoksa eklenir.

// Replace existing document with new modified document (contingent on modification).

Family family = new Family();
family.setLastName("Brown");
family.setId("1");

CosmosItemResponse<Family> famResp = container.upsertItem(family, new CosmosItemRequestOptions());

Satırı/belgeyi silme

HBase

Hbase'de satırı değere göre seçmenin doğrudan silme yolu yoktur. Silme işlemini ValueFilter vb. ile birlikte uygulamış olabilirsiniz. Bu örnekte silinecek satır RowKey tarafından belirtilir.

HTable table = new HTable(config, "FamilyTable");

Delete delete = new Delete(Bytes.toBytes(RowKey));
delete.deleteColumn(Bytes.toBytes("ColFam"), Bytes.toBytes("id"));
delete.deleteColumn(Bytes.toBytes("ColFam"), Bytes.toBytes("lastName"));

table.dalate(delete)

Phoenix

DELETE FROM TableName WHERE id = "xxx";

Azure Cosmos DB

Belge Kimliğine göre silme yöntemi aşağıda gösterilmiştir.

container.deleteItem(documentId, new PartitionKey(documentLastName), new CosmosItemRequestOptions());

Sorgu satırları/belgeleri

HBase HBase, tarama kullanarak birden çok Satır almanıza olanak tanır. Ayrıntılı tarama koşullarını belirtmek için Filtre'yi kullanabilirsiniz. Bkz. HBase yerleşik filtre türleri için İstemci İsteği Filtreleri .

HTable table = new HTable(config, "FamilyTable");

Scan scan = new Scan();
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("ColFam"),
Bytes.toBytes("lastName"), CompareOp.EQUAL, New BinaryComparator(Bytes.toBytes("Witherspoon")));
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
scan.setFilter(filter);

ResultScanner scanner = table.getScanner(scan);

Phoenix

SELECT * FROM FamilyTable WHERE lastName = "Witherspoon"

Azure Cosmos DB

Filtre işlemi

String sql = "SELECT * FROM c WHERE c.lastName = 'Witherspoon'";
CosmosPagedIterable<Family> filteredFamilies = container.queryItems(sql, new CosmosQueryRequestOptions(), Family.class);

Tabloyu/koleksiyonu silme

HBase

HBaseAdmin admin = new HBaseAdmin(config);
admin.deleteTable("FamilyTable")

Phoenix

DROP TABLE IF EXISTS FamilyTable;

Azure Cosmos DB

CosmosContainerResponse containerResp = database.getContainer("FamilyContainer").delete(new CosmosContainerRequestOptions());

Dikkat edilecek diğer noktalar

HBase kümeleri HBase iş yükleri ve MapReduce, Hive, Spark ve daha fazlası ile kullanılabilir. Geçerli HBase'inize sahip başka iş yükleriniz varsa bunların da geçirilmesi gerekir. Ayrıntılar için her geçiş kılavuzuna bakın.

  • MapReduce
  • HBase
  • Spark

Sunucu tarafı programlama

HBase çeşitli sunucu tarafı programlama özellikleri sunar. Bu özellikleri kullanıyorsanız, bunların işlemesini de geçirmeniz gerekir.

HBase

  • Özel filtreler

    HBase'de varsayılan olarak çeşitli filtreler mevcuttur, ancak kendi özel filtrelerinizi de uygulayabilirsiniz. HBase'de varsayılan olarak kullanılabilen filtreler gereksinimlerinizi karşılamıyorsa özel filtreler uygulanabilir.

  • Işlemcisi

    Coprocessor, Region Server'da kendi kodunuzu çalıştırmanızı sağlayan bir çerçevedir. Coprocessor'ı kullanarak, istemci tarafında yürütülen işlemeyi sunucu tarafında gerçekleştirmek mümkündür ve işlemeye bağlı olarak daha verimli hale getirilebilir. İki tür Coprocessor vardır: Gözlemci ve Uç Nokta.

    • Gözlemci

      • Gözlemci belirli işlemleri ve olayları bağlar. Bu, rastgele işleme eklemeye yönelik bir işlevdir. Bu, RDBMS tetikleyicilerine benzer bir özelliktir.
    • Uç nokta

      • Uç nokta, HBase RPC'yi genişletmeye yönelik bir özelliktir. RDBMS saklı yordamına benzer bir işlevdir.

Azure Cosmos DB

  • Saklı Yordam

    • Azure Cosmos DB saklı yordamları JavaScript'te yazılır ve Azure Cosmos DB kapsayıcılarında öğe oluşturma, güncelleştirme, okuma, sorgulama ve silme gibi işlemler gerçekleştirebilir.
  • Tetikleyici

    • Tetikleyiciler veritabanındaki işlemler için belirtilebilir. Sağlanan iki yöntem vardır: veritabanı öğesi değişmeden önce çalışan bir ön tetikleyici ve veritabanı öğesi değiştikten sonra çalışan bir son tetikleyici.
  • UDF

    • Azure Cosmos DB, Kullanıcı Tanımlı İşlevler (UDF) tanımlamanızı sağlar. UDF'ler JavaScript ile de yazılabilir.

Saklı yordamlar ve tetikleyiciler, gerçekleştirilen işlemlerin karmaşıklığı temelinde RU'ları kullanır. Sunucu tarafı işleme geliştirirken, her işlem tarafından kullanılan RU miktarını daha iyi anlamak için gerekli kullanımı denetleyin. Ayrıntılar için bkz . Azure Cosmos DB'de İstek Birimleri ve Azure Cosmos DB'de istek maliyetini iyileştirme.

Sunucu tarafı programlama eşlemeleri

HBase Azure Cosmos DB Açıklama
Özel filtreler WHERE Yan Tümcesi Özel filtre tarafından uygulanan işleme Azure Cosmos DB'deki WHERE yan tümcesi tarafından gerçekleştirilemiyorsa UDF'yi birlikte kullanın.
Yardımcı işlemci (Gözlemci) Tetikle Gözlemci, belirli bir olaydan önce ve sonra yürütülen bir tetikleyicidir. Gözlemcinin ön ve son çağrıları desteklediği gibi, Azure Cosmos DB Tetikleyicisi de ön ve son tetikleyicileri destekler.
Ortak işlemci (Uç Nokta) Saklı Yordam Uç nokta, her bölge için yürütülen bir sunucu tarafı veri işleme mekanizmasıdır. Bu, RDBMS saklı yordamına benzer. Azure Cosmos DB saklı yordamları JavaScript kullanılarak yazılır. Saklı yordamlar aracılığıyla Azure Cosmos DB'de gerçekleştirebileceğiniz tüm işlemlere erişim sağlar.

Not

HBase'de uygulanan işlemeye bağlı olarak Azure Cosmos DB'de farklı eşlemeler ve uygulamalar gerekebilir.

Güvenlik

Veri güvenliği müşterinin ve veritabanı sağlayıcısının paylaşılan sorumluluğudur. Şirket içi çözümler için müşterilerin uç nokta korumasından fiziksel donanım güvenliğine kadar her şeyi sağlaması gerekir. Bu kolay bir iş değildir. Azure Cosmos DB gibi bir PaaS bulut veritabanı sağlayıcısı seçerseniz müşteri katılımı azalır. Azure Cosmos DB, Azure platformunda çalıştığından HBase'den farklı bir şekilde geliştirilebilir. Azure Cosmos DB, güvenlik için ek bileşenlerin yüklenmesini gerektirmez. Aşağıdaki denetim listesini kullanarak veritabanı sistemi güvenlik uygulamanızı geçirmeyi göz önünde bulundurmanızı öneririz:

Güvenlik denetimi HBase Azure Cosmos DB
Ağ Güvenliği ve güvenlik duvarı ayarı Ağ cihazları gibi güvenlik işlevlerini kullanarak trafiği denetleme. Gelen güvenlik duvarında ilke tabanlı IP tabanlı erişim denetimini destekler.
Kullanıcı kimlik doğrulaması ve ayrıntılı kullanıcı denetimleri LDAP'yi Apache Ranger gibi güvenlik bileşenleriyle birleştirerek ayrıntılı erişim denetimi. Her veritabanı için kullanıcı ve izin kaynakları oluşturmak için hesap birincil anahtarını kullanabilirsiniz. Veri isteklerinizin kimliğini doğrulamak için Microsoft Entra Kimliğinizi de kullanabilirsiniz. Bu, ayrıntılı bir RBAC modeli kullanarak veri isteklerini yetkilendirmenize olanak tanır.
Bölgesel hatalar için verileri genel olarak çoğaltma olanağı HBase'in çoğaltmasını kullanarak uzak veri merkezinde veritabanı çoğaltması yapın. Azure Cosmos DB, yapılandırma gerektirmeden genel dağıtım gerçekleştirir ve bir düğmeyi seçerek verileri Azure'daki dünyanın dört bir yanındaki veri merkezlerine çoğaltmanıza olanak tanır. Genel çoğaltma, güvenlik açısından verilerinizin yerel hatalardan korunmasını sağlar.
Bir veri merkezinden diğerine yük devretme olanağı Yük devretmeyi kendiniz uygulamanız gerekir. Verileri birden çok veri merkezine çoğaltıyorsanız ve bölgenin veri merkezi çevrimdışı olursa Azure Cosmos DB işlemi otomatik olarak devralır.
Veri merkezi içinde yerel veri çoğaltma HDFS mekanizması, tek bir dosya sistemi içinde düğümler arasında birden çok çoğaltmaya sahip olmanıza olanak tanır. Azure Cosmos DB, tek bir veri merkezinde bile yüksek kullanılabilirlik sağlamak için verileri otomatik olarak çoğaltır. Tutarlılık düzeyini kendiniz seçebilirsiniz.
Otomatik veri yedeklemeleri Otomatik yedekleme işlevi yoktur. Veri yedeklemeyi kendiniz uygulamanız gerekir. Azure Cosmos DB düzenli olarak yedeklenip coğrafi olarak yedekli depolama alanında depolanır.
Hassas verileri koruma ve yalıtma Örneğin Apache Ranger kullanıyorsanız, ilkeyi tabloya uygulamak için Ranger ilkesini kullanabilirsiniz. Kişisel ve diğer hassas verileri belirli kapsayıcılara ayırabilir ve okuma/yazma yapabilir veya salt okunur erişimi belirli kullanıcılarla sınırlayabilirsiniz.
Saldırıları izleme Üçüncü taraf ürünler kullanılarak uygulanması gerekir. Denetim günlüğü ve etkinlik günlüklerini kullanarak hesabınızı normal ve anormal etkinlikler için izleyebilirsiniz.
Saldırılara yanıt verme Üçüncü taraf ürünler kullanılarak uygulanması gerekir. Azure desteği iletişim kurup olası bir saldırı bildirdiğinizde, beş aşamalı bir olay yanıt süreci başlar.
Veri idaresi kısıtlamalarına uymak için verileri coğrafi olarak sınırlandırma olanağı Her ülkenin/bölgenin kısıtlamalarını denetlemeniz ve kendiniz uygulamanız gerekir. Bağımsız bölgeler (Almanya, Çin, US Gov vb.) için veri idaresini garanti eder.
Korumalı veri merkezlerinde sunucuların fiziksel koruması Sistemin bulunduğu veri merkezine bağlıdır. En son sertifikaların listesi için genel Azure uyumluluk sitesine bakın.
Sertifikalar Hadoop dağılımına bağlıdır. Bkz. Azure uyumluluk belgeleri

İzleme

HBase genellikle küme ölçüm web kullanıcı arabirimini veya Ambari, Cloudera Manager veya diğer izleme araçlarını kullanarak kümeyi izler. Azure Cosmos DB, Azure platformunda yerleşik olarak bulunan izleme mekanizmasını kullanmanıza olanak tanır. Azure Cosmos DB izleme hakkında daha fazla bilgi için bkz . Azure Cosmos DB'yi izleme.

Ortamınız, e-posta gibi uyarılar göndermek için HBase sistem izlemesi uyguluyorsa, bunu Azure İzleyici uyarıları ile değiştirebilirsiniz. Azure Cosmos DB hesabınız için ölçümlere veya etkinlik günlüğü olaylarına göre uyarılar alabilirsiniz.

Azure İzleyici'deki uyarılar hakkında daha fazla bilgi için bkz . Azure İzleyici'yi kullanarak Azure Cosmos DB için uyarılar oluşturma

Ayrıca bkz . Azure İzleyici tarafından toplanabilir Azure Cosmos DB ölçümleri ve günlük türleri .

Yedekleme ve olağanüstü durum kurtarma

Yedekleme

HBase'in yedeğini almanın birkaç yolu vardır. Örneğin Anlık Görüntü, Dışarı Aktar, CopyTable, HDFS verilerinin çevrimdışı yedeklemesi ve diğer özel yedeklemeler.

Azure Cosmos DB verileri düzenli aralıklarla otomatik olarak yedekler ve bu da veritabanı işlemlerinin performansını veya kullanılabilirliğini etkilemez. Yedeklemeler Azure depolama alanında depolanır ve gerekirse verileri kurtarmak için kullanılabilir. İki tür Azure Cosmos DB yedeklemesi vardır:

Olağanüstü durum kurtarma

HBase hataya dayanıklı bir dağıtılmış sistemdir, ancak veri merkezi düzeyinde hata olması durumunda yedekleme konumunda yük devretme gerektiğinde Anlık görüntü, çoğaltma vb. kullanarak olağanüstü durum kurtarma uygulamanız gerekir. HBase çoğaltması üç çoğaltma modeliyle ayarlanabilir: Öncü-Takipçi, Öncü-Öncü ve Döngüsel. Kaynak HBase Olağanüstü Durum Kurtarma uyguluyorsa, Azure Cosmos DB'de Olağanüstü Durum Kurtarma'yı nasıl yapılandırabileceğinizi ve sistem gereksinimlerinizi nasıl karşılayabileceğinizi anlamanız gerekir.

Azure Cosmos DB, yerleşik olağanüstü durum kurtarma özelliklerine sahip genel olarak dağıtılmış bir veritabanıdır. VERITABANı verilerinizi herhangi bir Azure bölgesine çoğaltabilirsiniz. Azure Cosmos DB, bazı bölgelerde olası bir hata durumunda veritabanınızı yüksek oranda kullanılabilir durumda tutar.

Yalnızca tek bir bölge kullanan Azure Cosmos DB hesabı, bölge hatası durumunda kullanılabilirliği kaybedebilir. Her zaman yüksek kullanılabilirlik sağlamak için en az iki bölge yapılandırmanızı öneririz. Ayrıca, yazma ve okuma işlemleri için yüksek kullanılabilirlik sağlamak için Azure Cosmos DB hesabınızı birden çok yazma bölgesine sahip en az iki bölgeye yayılacak şekilde yapılandırarak hem yazmalar hem de okumalar için yüksek kullanılabilirlik sağlayabilirsiniz. Birden çok yazma bölgesinden oluşan çok bölgeli hesaplar için bölgeler arasında yük devretme algılanır ve Azure Cosmos DB istemcisi tarafından işlenir. Bunlar anlıktır ve uygulamadan herhangi bir değişiklik gerektirmez. Bu şekilde, Azure Cosmos DB için Olağanüstü Durum Kurtarma'yı içeren bir kullanılabilirlik yapılandırması elde edebilirsiniz. Daha önce belirtildiği gibi, HBase çoğaltması üç modelle ayarlanabilir, ancak Azure Cosmos DB tek yazma ve çoklu yazma bölgeleri yapılandırılarak SLA tabanlı kullanılabilirlik ile ayarlanabilir.

Yüksek Kullanılabilirlik hakkında daha fazla bilgi için bkz. Azure Cosmos DB yüksek kullanılabilirliği nasıl sağlar?

Sık sorulan sorular

Neden Azure Cosmos DB'deki diğer API'ler yerine NoSQL için API'ye geçiş yapın?

NoSQL için API, arabirim, hizmet SDK'sı istemci kitaplığı açısından en iyi uçtan uca deneyimi sağlar. Azure Cosmos DB'de kullanıma sunulan yeni özellikler ilk olarak NoSQL için API hesabınızda kullanıma sunulacaktır. Buna ek olarak, NoSQL API'si analizi destekler ve üretim ile analiz iş yükleri arasında performans ayrımı sağlar. Uygulamalarınızı oluşturmak için modernleştirilmiş teknolojileri kullanmak istiyorsanız, önerilen seçenek NoSQL için API'dir.

HBase RowKey'i Azure Cosmos DB bölüm anahtarına atayabilir miyim?

Olduğu gibi iyileştirilmeyebilir. HBase'de veriler belirtilen RowKey değerine göre sıralanır, Bölgede depolanır ve sabit boyutlara ayrılır. Bu, Azure Cosmos DB'de bölümlemeden farklı davranır. Bu nedenle, verilerin iş yükünün özelliklerine göre daha iyi dağıtılması için anahtarların yeniden tasarlanması gerekir. Diğer ayrıntılar için Dağıtım bölümüne bakın.

Veriler HBase'de RowKey'e göre sıralanır, ancak Azure Cosmos DB'de anahtara göre bölümleme yapılır. Azure Cosmos DB sıralama ve birlikte bulundurmayı nasıl gerçekleştirebilir?

Azure Cosmos DB'de, eşitlik ve aralık sorgularının performansını artırmak için verilerinizi artan veya azalan düzende sıralamak için bileşik dizin ekleyebilirsiniz. Ürün belgelerinde Dağıtım bölümüne ve Bileşik Dizin'e bakın.

Analiz işleme, Hive veya Spark ile HBase verilerinde yürütülür. Azure Cosmos DB'de bunları nasıl modernleştirebilirim?

İşletimsel verileri başka bir sütun deposuna otomatik olarak eşitlemek için Azure Cosmos DB analiz deposunu kullanabilirsiniz. Sütun deposu biçimi, iyileştirilmiş bir şekilde yürütülen büyük analiz sorguları için uygundur ve bu da bu tür sorgular için gecikme süresini artırır. Azure Synapse Link, doğrudan Azure Synapse Analytics'ten Azure Cosmos DB analiz deposuna bağlanarak ETL içermeyen bir HTAP çözümü oluşturmanıza olanak tanır. Bu sayede operasyonel verilerin büyük ölçekli, neredeyse gerçek zamanlı analizini gerçekleştirebilirsiniz. Synapse Analytics, Azure Cosmos DB analiz deposunda Apache Spark ve sunucusuz SQL havuzlarını destekler. Analitik işlemenizi geçirmek için bu özelliğin avantajlarından yararlanabilirsiniz. Daha fazla bilgi için bkz . Analiz deposu .

Kullanıcılar HBase'de Azure Cosmos DB'ye zaman damgası sorgusunu nasıl kullanabilir?

Azure Cosmos DB, HBase ile tam olarak aynı zaman damgası sürüm oluşturma özelliğine sahip değildir. Ancak Azure Cosmos DB, değişiklik akışına erişme olanağı sağlar ve bunu sürüm oluşturma için kullanabilirsiniz.

  • Her sürümü/değişikliği ayrı bir öğe olarak depolayın.

  • Değişiklikleri birleştirmek/birleştirmek için değişiklik akışını okuyun ve "_ts" alanıyla filtreleyerek uygun aşağı akışı tetikleyin. Ayrıca, verilerin eski sürümü için TTL kullanarak eski sürümlerin süresinin dolmasına da neden olabilirsiniz.

Sonraki adımlar