Öğretici: Azure HDInsight’ta Apache HBase kullanma

Bu öğreticide, Apache Hive kullanarak Azure HDInsight'ta Apache HBase kümesi oluşturma, HBase tabloları oluşturma ve tabloları sorgulama işlemleri gösterilmektedir. Genel HBase bilgileri için bkz. HDInsight HBase’e genel bakış.

Bu öğreticide aşağıdakilerin nasıl yapılacağı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 yordamda HBase kümesi oluşturmak için bir Azure Resource Manager şablonu kullanılır. Şablon ayrıca 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. Şablonu Azure portalında açmak için aşağıdaki görüntüyü seçin. Şablon, Azure hızlı başlangıç şablonlarında bulunur.

    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önetim grubu oluşturun veya var olan bir grubu 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ı şeklindedir admin.
    SSH kullanıcı adı ve parolası Varsayılan kullanıcı adıdır sshuser.

    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ıştır.

  3. Yukarıda belirtilen hüküm ve koşulları kabul ediyorum'ı 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

HBase kümelerine bağlanmak için SSH kullanabilir ve ardından Apache HBase Kabuğu kullanarak HBase tabloları oluşturabilir, veri ekleyebilir ve veri sorgulayabilirsiniz.

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

HDInsight Apache HBase tabular data.

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

HDInsight Apache HBase BigTable data.

HBase kabuğunu kullanmak için

  1. HBase kümenize bağlanmak için komutunu kullanın ssh . öğesini kümenizin adıyla değiştirerek CLUSTERNAME aşağıdaki komutu düzenleyin ve komutunu girin:

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

    hbase shell
    
  3. komutunu kullanarak create iki sütunlu ailelerle bir HBase tablosu oluşturun. Tablo ve sütun adları büyük/küçük harfe duyarlıdır. Aşağıdaki komutu girin:

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

    list
    
  5. Belirli bir tablodaki belirtilen satırda belirtilen bir sütuna değer eklemek için komutunu kullanın put . 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. Tablo verilerini taramak ve döndürmek Contacts için komutunu kullanınscan. Aşağıdaki komutu girin:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase shell.

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

    get 'Contacts', '1000'
    

    Yalnızca bir satır olduğundan komutunu kullanırken scan 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. HBase etkileşimli kabuğunu durdurmak için komutunu kullanın exit . 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 . HDInsight'ta Apache Hadoop işleri için verileri karşıya yükleme.

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

  1. Açık ssh bağlantınızdan aşağıdaki komutu çalıştırarak veri dosyasını StoreFiles'a dönüştürün ve tarafından Dimporttsv.bulk.outputbelirtilen göreli bir yolda depolayın.

    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. HBase tablosuna veri /example/data/storeDataFileOutput yüklemek için aşağıdaki komutu çalıştırın:

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

Apache HBase'i sorgulamak için Apache Hive kullanma

Apache Hive kullanarak HBase tablolarındaki 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. Beeline'ı başlatmak için açık ssh bağlantınızdan 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şleyen bir Hive tablosu oluşturmak için aşağıdaki HiveQL betiğini çalıştırın. Bu deyimi çalıştırmadan önce HBase kabuğunu kullanarak bu makalenin önceki bölümlerinde başvurulan ö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'dan çıkmak için kullanın !exit.

  5. Ssh bağlantınızdan çıkmak için kullanın exit.

Hive ve Hbase Kümelerini Ayırma

HBase verilerine erişmek için Hive sorgusunun HBase kümesinden yürütülmesi gerekmez. Aşağıdaki adımların tamamlanması koşuluyla, Hive ile birlikte gelen tüm kümeler (Spark, Hadoop, HBase veya Etkileşimli Sorgu dahil) HBase verilerini sorgulamak için kullanılabilir:

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

Güvenli Kümeler

HBase verileri, ESP özellikli HBase kullanılarak Hive'dan da sorgulanabilir:

  1. Çok kümeli bir desen izlendiğinde, 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 verildiğinden emin olun hive
  3. Ayrı, ESP özellikli kümeler kullanılırken HBase kümesi baş düğümlerinin içeriği /etc/hosts Hive küme baş düğümlerinin ve çalışan düğümlerinin sonuna eklenmelidir /etc/hosts .

Not

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

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

HBase REST API'sinin güvenliği temel kimlik doğrulamasıyla sağlanır. 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'sini etkinleştirmek için Betik Eylemi bölümüne aşağıdaki özel başlangıç betiğini ekleyin. Başlangıç betiğini kümeyi oluştururken veya küme oluşturulduktan sonra ekleyebilirsiniz. Betiğin yalnızca HBase Bölge Sunucularında yürütülmesini sağlamak için Düğüm Türü için Bölge Sunucuları'nı 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şkenini ayarlayın. öğesini küme oturum açma parolası ile değiştirerek MYPASSWORD aşağıdaki komutları düzenleyin. değerini HBase kümenizin adıyla değiştirin MYCLUSTERNAME . Ardından komutları girin.

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

    curl -u admin:$PASSWORD \
    -G https://$CLUSTER_NAME.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://$CLUSTER_NAME.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://$CLUSTER_NAME.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://$CLUSTER_NAME.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 kullanıcı arabiriminde https://CLUSTERNAME.azurehdinsight.netCLUSTERNAME oturum açın.

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

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

    HDInsight Apache HBase HMaster UI.

    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 rekreasyonu

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 silmeden önce HBase tablolarını devre dışı bırakmanızı öneririz.

HBase komutunu disable 'Contacts'kullanabilirsiniz.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, aşağıdaki adımlarla oluşturduğunuz HBase kümesini silin:

  1. Azure Portal’ında oturum açın.
  2. Üstteki Arama kutusuna HDInsight yazın.
  3. Hizmetler'in altında HDInsight kümeleri'netıklayın.
  4. Görüntülenen HDInsight kümeleri listesinde, bu öğretici için oluşturduğunuz kümenin yanındaki ... öğesine tıklayın.
  5. Sil öğesini tıklayın. Evet seçeneğini tıklatın.

Sonraki adımlar

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