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).

  1. 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ó.

    Deploy to Azure button for new cluster

  2. 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.

  3. 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:

HDInsight Apache HBase tabular data.

A HBase-ben (a Cloud BigTable implementációjában) ugyanazok az adatok a következőképpen néznek ki:

HDInsight Apache HBase BigTable data.

A Hbase-rendszerhéj használata

  1. A HBase-fürthöz való csatlakozáshoz használja ssh a parancsot. Szerkessze az alábbi parancsot a fürt nevére cserélve CLUSTERNAME , majd írja be a parancsot:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. 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
    
  3. 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'
    
  4. A parancs használatával list listázhatja az összes táblát a HBase-ben. Írja be az alábbi parancsot:

    list
    
  5. 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.'
    
  6. A táblaadatok beolvasásához és visszaadásához használja scan a Contacts parancsot. Írja be az alábbi parancsot:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase shell.

  7. 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ó).

  8. 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.

  1. 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.outputrelatí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
    
  2. 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
    
  3. 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.

  1. 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.

  2. 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');
    
  3. Futtassa a következő HiveQL-parancsfájlt a HBase-tábla adatainak lekérdezéséhez:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. A Beeline-ból való kilépéshez használja a következőt !exit: .

  5. 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:

  1. Mindkét fürtöt ugyanahhoz a virtuális hálózathoz és alhálózathoz kell csatlakoztatni
  2. 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:

  1. Ha többfürtből álló mintát követ, mindkét fürtnek ESP-kompatibilisnek kell lennie.
  2. 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
  3. 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.

  1. 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
    
  2. Á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 le MYCLUSTERNAME a HBase-fürt nevére. Ezután adja meg a parancsokat.

    export PASSWORD='MYPASSWORD'
    export CLUSTER_NAME=MYCLUSTERNAME
    
  3. 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/
    
  4. 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.

  5. 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.

  6. 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

  1. Jelentkezzen be az Ambari webes felhasználói felületére, https://CLUSTERNAME.azurehdinsight.net ahol CLUSTERNAME a HBase-fürt neve szerepel.

  2. A bal oldali menüben válassza a HBase lehetőséget.

  3. 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:

    HDInsight Apache HBase HMaster UI.

    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:

  1. Jelentkezzen be az Azure Portalra.
  2. A felül található Keresőmezőbe írja be a HDInsight parancsot.
  3. Válassza ki a HDInsight-fürtöket a Szolgáltatások területen.
  4. A megjelenő HDInsight-fürtök listájában kattintson az oktatóanyaghoz létrehozott fürt melletti ... elemre.
  5. 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ó: