Öğ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
Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma.
Bash. bu makaledeki örneklerde, kıvrımlı komutları için Windows 10 bash kabuğu kullanılır. yükleme adımları için Windows 10 Linux için Windows Alt Sistemi yükleme kılavuzuna bakın. Diğer UNIX kabukları de çalışacaktır. kıvrımlı örnekler, bazı hafif değişikliklerle Windows bir komut isteminde çalışabilir. ya da ınvoke-restmethodWindows PowerShell cmdlet 'ini kullanabilirsiniz.
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.
Azure portal şablonu açmak için aşağıdaki görüntüyü seçin. Şablon, Azure hızlı başlangıç şablonlarındabulunur.
Ö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ış.
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:
HBase 'de ( Cloud BigTable'ın bir uygulamasında), aynı veriler şöyle görünür:
HBase kabuğunu kullanmak için
sshHBase kümenize bağlanmak için komutunu kullanın. Aşağıdaki komutu,CLUSTERNAMEkümenizin adıyla değiştirerek düzenleyin ve ardından şu komutu girin:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.nethbase shellHBase etkileşimli kabuğunu başlatmak için komutunu kullanın. SSH bağlantınıza aşağıdaki komutu girin:hbase shellcreateİ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'listHBase 'deki tüm tabloları listelemek için komutunu kullanın. Aşağıdaki komutu girin:listBelirli bir tablodaki belirtilen bir
putsü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.'scanTablo verilerini taramak ve döndürmek için komutunu kullanınContacts. Aşağıdaki komutu girin:scan 'Contacts'
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.
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.
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.txtVerileri 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 ContactsHBase kabuğunu açabilir ve
scantablo 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.
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 adminBeeline hakkında daha fazla bilgi için bkz. Beeline ile HDInsight’ta Hadoop ile Hive kullanma.
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');HBase tablosundaki verileri sorgulamak için aşağıdaki HiveQL betiğini çalıştırın:
SELECT count(rowkey) AS rk_count FROM hbasecontacts;Beeline çıkmak için kullanın
!exit.SSH bağlantınızı çıkmak için
exitkullanı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:
- Her iki küme de aynı Sanal Ağa ve Alt Ağa ekli olmalıdır
/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:
- Çok kümeli bir deseni takip eden her iki kümenin de ESP etkin olması gerekir.
- 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
hiveverildiğini emin olun - 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/hostseklenmeleri 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.
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 fiKullanım kolaylığı için ortam değişkenlerini ayarlayın. yerine küme oturum açma parolasını
MYPASSWORDyazın ve aşağıdaki komutları düzenleyin. yerineMYCLUSTERNAMEHBase kümenizin adını yazın. Ardından komutları girin.export password='MYPASSWORD' export clustername=MYCLUSTERNAMEMevcut HBase tablolarını listelemek için şu komutu kullanın:
curl -u admin:$password \ -G https://$clustername.azurehdinsight.net/hbaserest/İ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.
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\"}]}]}" \ -vBase64, -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.
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
HBase kümenizin adı olan ambari Web
https://CLUSTERNAME.azurehdinsight.netCLUSTERNAMEkullanıcı arabiriminde oturum açma.Sol menüden HBase'i seçin.
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:
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:
- Azure Portal oturum açın.
- En üstte yer alan Arama kutusuna HDInsight yazın.
- Hizmetler'in altında HDInsight kümeleri'ni seçin.
- Görüntülenen HDInsight kümeleri listesinde, bu öğretici için oluşturduğunuz kümenin yanındaki ... öğesini tıklatın.
- 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:
