Öğ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
Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma.
Bash'i seçin. Bu makaledeki örneklerde curl komutları için Windows 10'da Bash kabuğu kullanılır. Yükleme adımları için bkz. Linux için Windows Alt Sistemi Windows 10 Yükleme Kılavuzu. Diğer Unix kabukları da çalışır. Bazı küçük değişikliklerle curl örnekleri bir Windows Komut isteminde çalışabilir. Veya Windows PowerShell cmdlet'ini Invoke-RestMethod kullanabilirsiniz.
Apache HBase kümesi oluşturma
Aşağıdaki yordamda HBase kümesi oluşturmak için bir Azure Resource Manager şablonu kullanılmaktadı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.
Ş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.
Ö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.
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:
HBase'de (Cloud BigTable uygulaması) aynı veriler şöyle görünür:
HBase kabuğunu kullanmak için
HBase kümenize bağlanmak için komutunu kullanın
ssh
. öğesini kümenizin adıyla değiştirerekCLUSTERNAME
aşağıdaki komutu düzenleyin ve komutunu girin:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
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
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'
HBase'deki tüm tabloları listelemek için komutunu kullanın
list
. Aşağıdaki komutu girin:list
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.'
Tablo verilerini taramak ve döndürmek
Contacts
için komutunu kullanınscan
. Aşağıdaki komutu girin:scan 'Contacts'
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.
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.
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.output
belirtilen 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
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
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.
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.
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');
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'dan çıkmak için kullanın
!exit
.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:
- Her iki küme de aynı Sanal Ağ ve Alt Ağa eklenmelidir
- 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:
- Çok kümeli bir desen izlendiğinde, 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 verildiğinden emin olun
hive
- Ayrı, ESP özellikli kümeler kullandığınızda, 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.
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. Betik, Bölge sunucularında 8090 bağlantı noktasında HBase REST proxy'sini başlatır.
#! /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
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ştirinMYCLUSTERNAME
. Ardından komutları girin.export PASSWORD='MYPASSWORD' export CLUSTER_NAME=MYCLUSTERNAME
Mevcut HBase tablolarını listelemek için şu komutu kullanın:
curl -u admin:$PASSWORD \ -G https://$CLUSTER_NAME.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://$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.
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.
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
Not
Küme uç noktasında tarama henüz desteklenmiyor.
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şimi kullandığınızda, HDInsight küme yöneticisi için kullanıcı adı ve parola 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 kullanıcı arabiriminde
https://CLUSTERNAME.azurehdinsight.net
CLUSTERNAME
oturum açın.Soldaki menüden HBase'i seçin.
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:
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:
- Azure Portal’ında oturum açın.
- Üstteki Arama kutusuna HDInsight yazın.
- Hizmetler'in altında HDInsight kümeleri'netıklayın.
- Görüntülenen HDInsight kümeleri listesinde, bu öğretici için oluşturduğunuz kümenin yanındaki ... öğesine tıklayın.
- 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: