Öğretici: Azure HDInsight 'ta Apache HBase kullanma

Bu öğreticide, Azure HDInsight 'ta Apache HBase kümesi oluşturma, HBase tabloları oluşturma ve Apache Hive kullanarak sorgu tabloları oluşturma işlemlerinin nasıl yapılacağı gösterilmiştir. Genel HBase bilgileri için bkz. HDInsight HBase’e genel bakış.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Apache HBase kümesi oluşturma
  • HBase tabloları oluşturma ve veri ekleme
  • Apache HBase 'i sorgulamak için Apache Hive kullanma
  • Curl kullanarak HBase REST API’lerini kullanma
  • Küme durumunu denetleme

Önkoşullar

Apache HBase kümesi oluşturma

Aşağıdaki yordam bir HBase kümesi oluşturmak için bir Azure Resource Manager şablonu kullanır. şablon, bağımlı varsayılan Azure Depolama hesabını da oluşturur. Yordamda ve diğer küme oluşturma yöntemlerinde kullanılan parametreleri anlamak için bkz. HDInsight’ta Linux tabanlı Hadoop kümeleri oluşturma.

  1. Azure portal şablonu açmak için aşağıdaki görüntüyü seçin. Şablon, Azure hızlı başlangıç şablonlarındabulunur.

    Deploy to Azure button for new cluster

  2. Özel dağıtım iletişim kutusunda aşağıdaki değerleri girin:

    Özellik Açıklama
    Abonelik Kümeyi oluşturmak için kullanılan Azure aboneliğinizi seçin.
    Kaynak grubu Bir Azure Kaynak yönetimi grubu oluşturun veya mevcut bir tane kullanın.
    Konum Kaynak grubunun konumunu belirtin.
    ClusterName HBase kümesi için bir ad girin.
    Küme oturum açma adı ve parolası Varsayılan oturum açma adı admin' dir.
    SSH kullanıcı adı ve parolası Varsayılan kullanıcı adı sshuser şeklindedir.

    Diğer parametreler isteğe bağlıdır.

    Her kümenin bir Azure Depolama hesabı bağımlılığı vardır. Bir kümeyi sildikten sonra veriler depolama hesabında kalır. Kümenin varsayılan depolama hesabı adı, "depo" ifadesi eklenmiş küme adıdır. Şablon değişkenleri bölümünde sabit kodlanmış.

  3. Yukarıda belirtilen hüküm ve koşulları kabul ediyorum' u seçin ve ardından satın al' ı seçin. Bir küme oluşturmak yaklaşık 20 dakika sürer.

Bir HBase kümesi silindikten sonra aynı varsayılan blob kapsayıcısını kullanarak başka bir HBase kümesi oluşturabilirsiniz. Yeni küme özgün kümede oluşturduğunuz HBase tablolarını seçer. Tutarsızlıkları önlemek için kümeyi silmeden önce HBase tablolarını devre dışı bırakmanız önerilir.

Tablo oluşturma ve veri ekleme

SSH kullanarak HBase kümelerine bağlanabilir ve ardından, HBase tabloları oluşturmak, veri eklemek ve verileri sorgulamak için Apache HBase kabuğu 'nu kullanabilirsiniz.

Çoğu kişi için veriler tablo biçiminde görünür:

HDInsight Apache HBase tablo verileri

HBase 'de ( Cloud BigTable'ın bir uygulamasında), aynı veriler şöyle görünür:

HDInsight Apache HBase BigTable verileri

HBase kabuğunu kullanmak için

  1. sshHBase kümenize bağlanmak için komutunu kullanın. Aşağıdaki komutu, CLUSTERNAME kümenizin adıyla değiştirerek düzenleyin ve ardından şu komutu girin:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. hbase shellHBase etkileşimli kabuğunu başlatmak için komutunu kullanın. SSH bağlantınıza aşağıdaki komutu girin:

    hbase shell
    
  3. createİki sütunlu ailelerle bir HBase tablosu oluşturmak için komutunu kullanın. Tablo ve sütun adları büyük/küçük harfe duyarlıdır. Aşağıdaki komutu girin:

    create 'Contacts', 'Personal', 'Office'
    
  4. listHBase 'deki tüm tabloları listelemek için komutunu kullanın. Aşağıdaki komutu girin:

    list
    
  5. Belirli bir tablodaki belirtilen bir put sütundaki değerleri eklemek için komutunu kullanın. Aşağıdaki komutları girin:

    put 'Contacts', '1000', 'Personal:Name', 'John Dole'
    put 'Contacts', '1000', 'Personal:Phone', '1-425-000-0001'
    put 'Contacts', '1000', 'Office:Phone', '1-425-000-0002'
    put 'Contacts', '1000', 'Office:Address', '1111 San Gabriel Dr.'
    
  6. scanTablo verilerini taramak ve döndürmek için komutunu kullanın Contacts . Aşağıdaki komutu girin:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase kabuğu

  7. getBir satırın içeriğini getirmek için komutunu kullanın. Aşağıdaki komutu girin:

    get 'Contacts', '1000'
    

    scanYalnızca bir satır olduğundan, komutunu kullanarak benzer sonuçlar görürsünüz.

    HBase tablo şeması hakkında daha fazla bilgi için bkz. Apache HBase şema tasarımına giriş. HBase komutları hakkında daha fazla bilgi için bkz. Apache HBase başvuru kılavuzu.

  8. exitHBase etkileşimli kabuğunu durdurmak için komutunu kullanın. Aşağıdaki komutu girin:

    exit
    

Verileri kişi HBase tablosuna toplu olarak yüklemek için

HBase’de verileri tablolara yüklemek için bazı yöntemler vardır. Daha fazla bilgi için bkz. Toplu yükleme.

Örnek veri dosyası, ortak blob kapsayıcısı wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt içinde bulunabilir. Veri dosyasının içeriği şudur:

8396 Calvin Raji 230-555-0191 230-555-0191 5415 San Gabriel Dr.

16600 Karen Wu 646-555-0113 230-555-0192 9265 La Paz

4324 Karl Xie 508-555-0163 230-555-0193 4912 La Vuelta

16891 Jonn Jackson 674-555-0110 230-555-0194 40 Ellis St.

3273 Miguel Miller 397-555-0155 230-555-0195 6696 Anchor Drive

3588 Osa Agbonile 592-555-0152 230-555-0196 1873 Lion Circle

10272 Julia Lee 870-555-0110 230-555-0197 3148 Rose Street

4868 Jose Hayes 599-555-0171 230-555-0198 793 Crawford Street

4761 Caleb Alexander 670-555-0141 230-555-0199 4775 Kentucky Dr.

16443 Terry Chander 998-555-0171 230-555-0200 771 Northridge Drive

İsterseniz, bir metin dosyası oluşturabilir ve dosyayı kendi depolama hesabınıza yükleyebilirsiniz. yönergeler için bkz. hdınsight 'ta Apache Hadoop işleri için Upload verileri.

Bu yordam Contacts , son yordamda oluşturduğunuz HBase tablosunu kullanır.

  1. Açık SSH bağlantınızdan, veri dosyasını StoreFiles 'a dönüştürmek ve tarafından belirtilen göreli bir yola depolamak için aşağıdaki komutu çalıştırın Dimporttsv.bulk.output .

    hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns="HBASE_ROW_KEY,Personal:Name,Personal:Phone,Office:Phone,Office:Address" -Dimporttsv.bulk.output="/example/data/storeDataFileOutput" Contacts wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt
    
  2. Verileri HBase tablosuna yüklemek için aşağıdaki komutu çalıştırın /example/data/storeDataFileOutput :

    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
    
  3. HBase kabuğunu açabilir ve scan tablo içeriğini listelemek için komutunu kullanabilirsiniz.

Apache HBase 'i sorgulamak için Apache Hive kullanma

Apache Hivekullanarak HBase tablolarında verileri sorgulayabilirsiniz. Bu bölümde HBase tablosuyla eşlenen bir Hive tablosu oluşturur ve HBase tablosunda verileri sorgulamak için kullanırsınız.

  1. Açık SSH bağlantınızdan, Beeline başlamak için aşağıdaki komutu kullanın:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
    

    Beeline hakkında daha fazla bilgi için bkz. Beeline ile HDInsight’ta Hadoop ile Hive kullanma.

  2. HBase tablosuyla eşlenen bir Hive tablosu oluşturmak için aşağıdaki Hiveql betiğini çalıştırın. Bu ifadeyi çalıştırmadan önce HBase kabuğunu kullanarak bu makalede daha önce bahsedilen örnek tabloyu oluşturduğunuzdan emin olun.

    CREATE EXTERNAL TABLE hbasecontacts(rowkey STRING, name STRING, homephone STRING, officephone STRING, officeaddress STRING)
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,Personal:Name,Personal:Phone,Office:Phone,Office:Address')
    TBLPROPERTIES ('hbase.table.name' = 'Contacts');
    
  3. HBase tablosundaki verileri sorgulamak için aşağıdaki HiveQL betiğini çalıştırın:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. Beeline çıkmak için kullanın !exit .

  5. SSH bağlantınızı çıkmak için exit kullanın.

Hive ve Hbase Kümelerini Ayırma

HBase verilerine erişmek için Hive sorgusu HBase kümesinden yürütülmez. Aşağıdaki adımlar tamamlandıktan sonra Hive ile birlikte gelen tüm kümeler (Spark, Hadoop, HBase veya Interactive Query dahil) HBase verilerini sorgulamak için kullanılabilir:

  1. Her iki küme de aynı Sanal Ağa ve Alt Ağa ekli olmalıdır
  2. /usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xmlHBase kümesi baş düğümlerinden Hive kümesi baş düğümlerine ve çalışan düğümlerine kopyalayın.

Güvenli Kümeler

HBase verileri ESP özellikli HBase kullanılarak Hive'dan da sorgulandırabilirsiniz:

  1. Çok kümeli bir deseni takip eden her iki kümenin de ESP etkin olması gerekir.
  2. Hive'ın HBase verilerini sorgulamasına izin vermek için, kullanıcıya Hbase Apache Ranger eklentisi aracılığıyla HBase verilerine erişim izni hive verildiğini emin olun
  3. Ayrı, ESP özellikli kümeler kullanırken, HBase kümesi baş düğümlerinden içeriğinin Hive kümesi baş düğümlerine ve çalışan düğümlerine /etc/hosts /etc/hosts eklenmeleri gerekir.

Not

İki kümeyi de ölçeklendirdikten /etc/hosts sonra, yeniden eklenmeli

Curl aracılığıyla HBase REST API kullanma

HBase REST API temel kimlik doğrulaması ile güvenli hale getirildi. Kimlik bilgilerinizin sunucuya güvenli bir şekilde gönderilmesi için istekleri her zaman Güvenli HTTP (HTTPS) kullanarak yapmalısınız.

  1. HDInsight kümesinde HBase REST API etkinleştirmek için Betik Eylemi bölümüne aşağıdaki özel başlangıç betiği ekleyin. Kümeyi oluşturulduğunda veya küme oluşturulduktan sonra başlangıç betiği eklemek için kullanabilirsiniz. Düğüm Türü için, betiğin yalnızca HBase Bölge Sunucularında yürütül olduğundan emin olmak için Bölge Sunucuları'ı seçin.

    #! /bin/bash
    
    THIS_MACHINE=`hostname`
    
    if [[ $THIS_MACHINE != wn* ]]
    then
        printf 'Script to be executed only on worker nodes'
        exit 0
    fi
    
    RESULT=`pgrep -f RESTServer`
    if [[ -z $RESULT ]]
    then
        echo "Applying mitigation; starting REST Server"
        sudo python /usr/lib/python2.7/dist-packages/hdinsight_hbrest/HbaseRestAgent.py
    else
        echo "Rest server already running"
        exit 0
    fi
    
  2. Kullanım kolaylığı için ortam değişkenlerini ayarlayın. yerine küme oturum açma parolasını MYPASSWORD yazın ve aşağıdaki komutları düzenleyin. yerine MYCLUSTERNAME HBase kümenizin adını yazın. Ardından komutları girin.

    export password='MYPASSWORD'
    export clustername=MYCLUSTERNAME
    
  3. Mevcut HBase tablolarını listelemek için şu komutu kullanın:

    curl -u admin:$password \
    -G https://$clustername.azurehdinsight.net/hbaserest/
    
  4. İki sütunlu aileler içeren yeni bir HBase tablosu oluşturmak için aşağıdaki komutu kullanın:

    curl -u admin:$password \
    -X PUT "https://$clustername.azurehdinsight.net/hbaserest/Contacts1/schema" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "{\"@name\":\"Contact1\",\"ColumnSchema\":[{\"name\":\"Personal\"},{\"name\":\"Office\"}]}" \
    -v
    

    Şema JSon biçiminde sağlanır.

  5. Bazı verileri eklemek için aşağıdaki komutu kullanın:

    curl -u admin:$password \
    -X PUT "https://$clustername.azurehdinsight.net/hbaserest/Contacts1/false-row-key" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "{\"Row\":[{\"key\":\"MTAwMA==\",\"Cell\": [{\"column\":\"UGVyc29uYWw6TmFtZQ==\", \"$\":\"Sm9obiBEb2xl\"}]}]}" \
    -v
    

    Base64, -d anahtarında belirtilen değerleri kodlar. Örnekte:

    • MTAwMA==: 1000

    • UGVyc29uYWw6TmFtZQ==: Kişisel: Ad

    • Sm9obiBEb2xl: John Dole

      false-row-key birden fazla (toplu) değer eklemenizi sağlar.

  6. Bir satır almak için aşağıdaki komutu kullanın:

    curl -u admin:$password \
    GET "https://$clustername.azurehdinsight.net/hbaserest/Contacts1/1000" \
    -H "Accept: application/json" \
    -v
    

HBase Rest hakkında daha fazla bilgi için bkz. Apache HBase Başvuru Kılavuzu.

Not

Thrift, HDInsight’ta HBase tarafından desteklenmez.

Curl’ü veya WebHCat ile başka bir REST iletişimini kullanırken HDInsight küme yöneticisinin kullanıcı adı ve parolasını sağlayarak isteklerin kimliğini doğrulamanız gerekir. Ayrıca, sunucuya istek göndermek için kullanılan Tekdüzen Kaynak Tanımlayıcısı’nın (URI) bir parçası olarak küme adını kullanmanız gerekir:

curl -u <UserName>:<Password> \

-G https://<ClusterName>.azurehdinsight.net/templeton/v1/status

Aşağıdakine benzer bir yanıt almanız gerekir:

{"status":"ok","version":"v1"}

Küme durumunu denetleme

HDInsight içinde HBase, kümelerin izlenmesi için bir Web Kullanıcı Arabirimi ile birlikte gönderilir. Web Kullanıcı Arabirimini kullanarak istatistikler veya bölgeler hakkında bilgi isteyebilirsiniz.

HBase Master Kullanıcı Arabirimi’ne erişmek için

  1. HBase kümenizin adı olan ambari Web https://CLUSTERNAME.azurehdinsight.net CLUSTERNAME kullanıcı arabiriminde oturum açma.

  2. Sol menüden HBase'i seçin.

  3. Sayfanın üst kısmında Hızlı bağlantılar'ı seçin, etkin Zookeeper düğümü bağlantısının üzerine gelin ve kullanıcı arabirimini HBase Master seçin. Kullanıcı arabirimi başka bir tarayıcı sekmesinde açılır:

    HDInsight Apache HBase HMaster Kullanıcı Arabirimi

    HBase Master Kullanıcı Arabirimi aşağıdaki bölümleri içerir:

    • Bölge sunucuları
    • Yedekleme yöneticileri
    • tablolarda
    • Görevler
    • Yazılım öznitelikleri

Küme kümesi oluşturma

Bir HBase kümesi silindikten sonra aynı varsayılan blob kapsayıcısını kullanarak başka bir HBase kümesi oluşturabilirsiniz. Yeni küme özgün kümede oluşturduğunuz HBase tablolarını seçer. Ancak tutarsızlıkları önlemek için, kümeyi smeden önce HBase tablolarını devre dışı bırakmanızı öneririz.

HBase komutunu disable 'Contacts' kullanabilirsiniz.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam edecek değil misiniz, aşağıdaki adımları kullanarak oluşturduğunuz HBase kümesi silin:

  1. Azure Portal oturum açın.
  2. En üstte yer alan Arama kutusuna HDInsight yazın.
  3. Hizmetler'in altında HDInsight kümeleri'ni seçin.
  4. Görüntülenen HDInsight kümeleri listesinde, bu öğretici için oluşturduğunuz kümenin yanındaki ... öğesini tıklatın.
  5. Sil'e tıklayın. Evet'e tıklayın.

Sonraki adımlar

Bu öğreticide, Apache HBase kümesi oluşturma hakkında bilgi edindisiniz. Ayrıca HBase kabuğundan tablo oluşturma ve bu tablolarda bulunan verileri görüntüleme. Ayrıca HBase tablolarında veriler üzerinde Hive sorgusu kullanmayı da öğrendiniz. Ayrıca HBase C# REST API kullanarak HBase tablosu oluşturma ve tablodan veri alma. Daha fazla bilgi edinmek için şu makalelere bakın: