Oktatóanyag: Az Apache HBase használata az Azure HDInsightban
Ez az oktatóanyag bemutatja, hogyan hozhat létre Apache HBase-fürtöt az Azure HDInsightban, hogyan hozhat létre HBase-táblákat és lekérdezési táblákat az Apache Hive használatával. A HBase-re vonatkozó általános információért lásd: HDInsight HBase overview (A HDInsight HBase áttekintése).
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Apache HBase-fürt létrehozása
- HBase-táblák létrehozása és adatok beszúrása
- Apache Hive használata az Apache HBase lekérdezéséhez
- HBase REST API-k használata Curl használatával
- A fürt állapotának ellenőrzése
Előfeltételek
Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val.
Bash. A cikkben szereplő példák a Windows 10 Bash rendszerhéját használják a curl-parancsokhoz. A telepítés lépéseit a windows 10-hez készült Linuxos Windows-alrendszer telepítési útmutatójában találja. Más Unix-rendszerhéjak is működni fognak. A curl-példák néhány apró módosítással a Windows parancssorán is használhatók. Vagy használhatja az Invoke-RestMethod Windows PowerShell-parancsmagot is.
Apache HBase-fürt létrehozása
Az alábbi eljárás egy Azure Resource Manager-sablont használ egy HBase-fürt létrehozásához. A sablon létrehozza a függő alapértelmezett Azure Storage-fiókot is. Az eljárásban és egyéb fürtlétrehozási módszerekben használt paraméterek megértéséhez lásd: Create Linux-based Hadoop clusters in HDInsight (Linux-alapú Hadoop-fürtök létrehozása a HDInsightban).
Az alábbi kép kiválasztásával nyissa meg a sablont az Azure Portalon. A sablon az Azure rövid útmutatósablonjaiban található.
Az Egyéni üzembe helyezés párbeszédpanelen adja meg a következő értékeket:
Tulajdonság Leírás Előfizetés Válassza ki a fürt létrehozásához használt Azure-előfizetést. Erőforráscsoport Hozzon létre egy Azure-erőforrás-felügyeleti csoportot, vagy használjon egy meglévőt. Hely Adja meg az erőforráscsoport helyét. ClusterName Adja meg a HBase-fürt nevét. A fürt bejelentkezési neve és jelszava Az alapértelmezett bejelentkezési név a következő admin
: .SSH-felhasználónév és jelszó Az alapértelmezett felhasználónév a következő sshuser
: .A többi paraméter opcionális.
Minden egyes fürt az Azure Storage-fióktól függ. A fürt törlése után az adatok a tárfiókban maradnak. A fürt alapértelmezett tárfiókneve a fürt neve a „store” kifejezéssel kiegészítve. A sablonváltozók szakaszban van kódolva.
Válassza az Elfogadom a fenti feltételeket, majd válassza a Vásárlás lehetőséget. Egy fürt létrehozása nagyjából 20 percet vesz igénybe.
A HBase-fürtök törlése után egy másik HBase-fürtöt hozhat létre ugyanazon alapértelmezett blobtárolóval. Az új fürt felveszi az eredeti fürtben létrehozott HBase-táblákat. Az inkonzisztenciák elkerülése érdekében javasoljuk, hogy a fürt törlése előtt tiltsa le a HBase-táblákat.
Táblák létrehozása és adatok beszúrása
Az SSH használatával csatlakozhat HBase-fürtökhöz, majd az Apache HBase Shell használatával HBase-táblákat hozhat létre, adatokat szúrhat be és adatokat kérdezhet le.
A legtöbbek számára az adatok táblázatos formátumban jelennek meg:
A HBase-ben (a Cloud BigTable implementációjában) ugyanazok az adatok a következőképpen néznek ki:
A Hbase-rendszerhéj használata
A HBase-fürthöz való csatlakozáshoz használja
ssh
a parancsot. Szerkessze az alábbi parancsot a fürt nevére cserélveCLUSTERNAME
, majd írja be a parancsot:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
A HBase interaktív rendszerhéj elindításához használja
hbase shell
a parancsot. Írja be a következő parancsot az SSH-kapcsolatba:hbase shell
A parancs használatával
create
kétoszlopos családokat tartalmazó HBase-táblát hozhat létre. A tábla- és oszlopnevek megkülönböztetik a kis- és nagybetűket. Írja be az alábbi parancsot:create 'Contacts', 'Personal', 'Office'
A parancs használatával
list
listázhatja az összes táblát a HBase-ben. Írja be az alábbi parancsot:list
A parancs használatával
put
értékeket szúrhat be egy adott tábla adott sorában lévő adott oszlopba. Írja be a következő parancsokat: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.'
A táblaadatok beolvasásához és visszaadásához használja
scan
aContacts
parancsot. Írja be az alábbi parancsot:scan 'Contacts'
Egy sor tartalmának beolvasása parancs használatával
get
. Írja be az alábbi parancsot:get 'Contacts', '1000'
Hasonló eredmények láthatók, mint a
scan
parancs használata, mert csak egy sor van.A HBase táblázatsémával kapcsolatos további információkért lásd : Bevezetés az Apache HBase sématervezésbe. További Hbase-parancsokért lásd: Apache HBase reference guide (Apache HBase referencia-útmutató).
A HBase interaktív rendszerhéj leállításához használja
exit
a parancsot. Írja be az alábbi parancsot:exit
Adatok kötegelt betöltése a névjegyek HBase-táblába
A HBase több módszert tartalmaz az adatok táblába töltéséhez. További információ: Bulk loading (Kötegelt betöltés).
Egy minta adatfájl található a következő nyilvános blobtárolóban található: wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt
. Az adatfájl tartalma a következő:
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
Igény szerint létrehozhat egy szövegfájlt, és feltöltheti a fájlt a saját tárfiókjába. Az utasításokért lásd : Adatok feltöltése Apache Hadoop-feladatokhoz a HDInsightban.
Ez az eljárás a Contacts
legutóbbi eljárásban létrehozott HBase-táblát használja.
A megnyitott ssh-kapcsolaton futtassa az alábbi parancsot az adatfájl StoreFiles-fájllá való átalakításához, és tárolja a megadott
Dimporttsv.bulk.output
relatív elérési úton.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
Futtassa a következő parancsot az adatok
/example/data/storeDataFileOutput
HBase-táblába való feltöltéséhez:hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
Megnyithatja a HBase-rendszerhéjat, és a
scan
paranccsal listázhatja a táblázat tartalmát.
Apache Hive használata az Apache HBase lekérdezéséhez
A HBase-táblákban lévő adatokat az Apache Hive használatával kérdezheti le. Ebben a szakaszban egy, a HBase-táblára leképezést biztosító Hive-táblát hoz létre, amellyel lekérdezheti a HBase-táblában lévő adatokat.
A nyílt ssh-kapcsolatból a következő paranccsal indítsa el a Beeline-t:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
A Beeline-nal kapcsolatos további információkért lásd a Hive és a Hadoop együttes, a Beeline-nal történő használatát a HDInsightban ismertető cikket.
Futtassa a következő HiveQL-szkriptet egy Hive-tábla létrehozásához, amely megfelel a HBase-táblának. Az utasítás futtatása előtt győződjön meg arról, hogy létrehozta a cikk korábbi részében hivatkozott mintatáblát a HBase-rendszerhéj használatával.
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');
Futtassa a következő HiveQL-parancsfájlt a HBase-tábla adatainak lekérdezéséhez:
SELECT count(rowkey) AS rk_count FROM hbasecontacts;
A Beeline-ból való kilépéshez használja a következőt
!exit
: .Az ssh-kapcsolatból való kilépéshez használja a következőt
exit
: .
Hive- és Hbase-fürtök elkülönítése
A HBase-adatok eléréséhez szükséges Hive-lekérdezést nem kell végrehajtani a HBase-fürtből. A Hive-hez tartozó fürtök (beleértve a Sparkot, a Hadoopot, a HBase-t vagy az Interaktív lekérdezést) használhatók a HBase-adatok lekérdezésére, feltéve, hogy a következő lépések befejeződnek:
- Mindkét fürtöt ugyanahhoz a virtuális hálózathoz és alhálózathoz kell csatlakoztatni
- Másolja
/usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml
a HBase-fürt átjárócsomópontjából a Hive-fürt átjárócsomópontaiba és feldolgozócsomópontaiba.
Biztonságos fürtök
A HBase-adatok esp-kompatibilis HBase használatával is lekérdezhetők a Hive-ből:
- Ha többfürtből álló mintát követ, mindkét fürtnek ESP-kompatibilisnek kell lennie.
- Annak érdekében, hogy a Hive lekérdezhesse a HBase-adatokat, győződjön meg arról, hogy a
hive
felhasználó engedélyt kap a HBase-adatok elérésére a Hbase Apache Ranger beépülő modulon keresztül - Ha különálló, ESP-kompatibilis fürtöket használ, a HBase-fürt átjárócsomópontjainak
/etc/hosts
tartalmát hozzá kell fűzni a Hive-fürt átjárócsomópontjaihoz és feldolgozócsomópontjaihoz/etc/hosts
.
Feljegyzés
A fürtök skálázása /etc/hosts
után újra hozzá kell fűzni
A HBase REST API használata a Curl használatával
A HBase REST API védelme alapszintű hitelesítéssel történik. Mindig biztonságos HTTP-n (HTTPS-en) keresztül kell kéréseket végeznie, hogy a hitelesítő adatait biztonságos módon küldje el a kiszolgálónak.
Ha engedélyezni szeretné a HBase REST API-t a HDInsight-fürtben, adja hozzá a következő egyéni indítási szkriptet a Szkriptművelet szakaszhoz. Az indítási szkriptet a fürt létrehozásakor vagy a fürt létrehozása után is hozzáadhatja. Csomóponttípus esetén válassza a Régiókiszolgálók lehetőséget, hogy a szkript csak a HBase-régiókiszolgálókon futjon.
#! /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
Állítsa be a környezeti változót a könnyű használat érdekében. Szerkessze az alábbi
MYPASSWORD
parancsokat a fürt bejelentkezési jelszavával. Cserélje leMYCLUSTERNAME
a HBase-fürt nevére. Ezután adja meg a parancsokat.export PASSWORD='MYPASSWORD' export CLUSTER_NAME=MYCLUSTERNAME
Használja az alábbi parancsot a meglévő HBase-táblák listázásához:
curl -u admin:$PASSWORD \ -G https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/
Használja az alábbi parancsot egy új, kétoszlopos családokkal rendelkező HBase-tábla létrehozásához:
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
A séma a JSon formátumban van megadva.
Használja az alábbi parancsot néhány adat beviteléhez:
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
A Base64 a -d kapcsolóban megadott értékeket kódolja. A példában:
MTAwMA==: 1000
UGVyc29uYWw6TmFtZQ==: Személyes: Név
Sm9obiBEb2xl: John Dole
A false-row-key lehetővé teszi több (kötegelt) érték beszúrását.
Használja az alábbi parancsot egy sor lekéréséhez:
curl -u admin:$PASSWORD \ GET "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/1000" \ -H "Accept: application/json" \ -v
További információ a HBase REST-ről: Apache HBase Reference Guide (Apache HBase referencia-útmutató).
Feljegyzés
A HBase nem támogatja a Thriftet a HDInsightban.
Amikor a Curl vagy más REST kommunikációt használ a WebHCattel, hitelesítenie kell a kéréseket a HDInsight fürt rendszergazdája felhasználónevének és jelszavának megadásával. A fürtnevet a kérések a kiszolgálóhoz küldéséhez használt egységes erőforrás-azonosító (URI) részeként is használnia kell.
curl -u <UserName>:<Password> \
-G https://<ClusterName>.azurehdinsight.net/templeton/v1/status
A következőhöz hasonló választ kell kapnia:
{"status":"ok","version":"v1"}
A fürt állapotának ellenőrzése
A HBase a HDInsightban a fürtök megfigyelésére szolgáló webes felhasználói felülettel kapható. A webes felhasználói felülettel a régiók statisztikáit vagy információit kérheti le.
A HBase mesterfelületének elérése
Jelentkezzen be az Ambari webes felhasználói felületére,
https://CLUSTERNAME.azurehdinsight.net
aholCLUSTERNAME
a HBase-fürt neve szerepel.A bal oldali menüben válassza a HBase lehetőséget.
Válassza a gyorshivatkozásokat a lap tetején, mutasson az aktív Zookeeper-csomópont hivatkozására, majd válassza a HBase fő felhasználói felületét. A felület egy új böngészőlapon nyílik meg:
A HBase-mesterfelület az alábbi részeket tartalmazza:
- régiós kiszolgálók
- biztonsági mentési főkiszolgálók
- táblákban
- feladatok
- szoftverattribútumok
Fürt rekreációja
A HBase-fürtök törlése után egy másik HBase-fürtöt hozhat létre ugyanazon alapértelmezett blobtárolóval. Az új fürt felveszi az eredeti fürtben létrehozott HBase-táblákat. Az inkonzisztenciák elkerülése érdekében azonban azt javasoljuk, hogy a fürt törlése előtt tiltsa le a HBase-táblákat.
A HBase parancsot disable 'Contacts'
használhatja.
Az erőforrások eltávolítása
Ha nem folytatja az alkalmazás használatát, törölje a létrehozott HBase-fürtöt az alábbi lépésekkel:
- Jelentkezzen be az Azure Portalra.
- A felül található Keresőmezőbe írja be a HDInsight parancsot.
- Válassza ki a HDInsight-fürtöket a Szolgáltatások területen.
- A megjelenő HDInsight-fürtök listájában kattintson az oktatóanyaghoz létrehozott fürt melletti ... elemre.
- Kattintson a Törlés gombra. Kattintson a Yes (Igen) gombra.
Következő lépések
Ebben az oktatóanyagban megtanulta, hogyan hozhat létre Apache HBase-fürtöt. És hogyan hozhat létre táblákat, és hogyan tekintheti meg az ezekben a táblákban lévő adatokat a HBase-rendszerhéjból. Azt is megtanulta, hogyan használható Hive-lekérdezés a HBase-táblák adatain. És hogyan használhatja a HBase C# REST API-t egy HBase-tábla létrehozásához és adatok lekéréséhez a táblából. További információ: