Kurz: Používání Apache HBase ve službě Azure HDInsight

V tomto kurzu se dozvíte, jak vytvořit cluster Apache HBase v Azure HDInsight, vytvořit tabulky HBase a dotazovat se na tabulky pomocí Apache Hivu. Obecné informace o HBase najdete v tématu Přehled HBase ve službě HDInsight.

V tomto kurzu se naučíte:

  • Vytvoření clusteru Apache HBase
  • Vytvoření tabulek HBase a vložení dat
  • Použití Apache Hivu k dotazování Apache HBase
  • Použití rozhraní REST API HBase pomocí Curl
  • Kontrola stavu clusteru

Požadavky

Vytvoření clusteru Apache HBase

Následující postup používá šablonu Azure Resource Manageru k vytvoření clusteru HBase. Šablona také vytvoří závislý výchozí účet služby Azure Storage. Pro lepší pochopení parametrů použitých v postupu a dalších metod vytvoření clusteru si projděte téma Vytvoření Hadoop clusterů se systémem Linux v HDInsight.

  1. Výběrem následujícího obrázku otevřete šablonu na webu Azure Portal. Šablona se nachází v šablonách rychlého startu Azure.

    Deploy to Azure button for new cluster

  2. V dialogovém okně Vlastní nasazení zadejte následující hodnoty:

    Vlastnost Popis
    Předplatné Vyberte své předplatné Azure, které se používá k vytvoření clusteru.
    Skupina prostředků Vytvořte skupinu pro správu prostředků Azure nebo použijte existující skupinu.
    Umístění Zadejte umístění skupiny prostředků.
    Název clusteru Zadejte název clusteru HBase.
    Přihlašovací jméno a heslo clusteru Výchozí přihlašovací jméno je admin.
    Uživatelské jméno a heslo SSH Výchozí uživatelské jméno je sshuser.

    Ostatní parametry jsou volitelné.

    Každý cluster obsahuje závislost účtu Azure Storage. Po odstranění clusteru zůstanou data v účtu úložiště. Výchozí název účtu úložiště clusteru je název clusteru s připojenou příponou „úložiště“. Je pevně zakódovaný v oddílu proměnných šablony.

  3. Vyberte Souhlasím s podmínkami a ujednáními uvedenými výše a pak vyberte Koupit. Vytvoření clusteru trvá přibližně 20 minut.

Po odstranění clusteru služby HBase můžete vytvořit jiný cluster HBase pomocí stejného výchozího kontejneru blob. Nový cluster převezme tabulky HBase, které jste vytvořili v původním clusteru. Aby se zabránilo nekonzistencím, doporučujeme zakázat tabulky HBase před odstraněním clusteru.

Vytváření tabulek a vkládání dat

SSH můžete použít pro připojení ke clusterům HBase a následné použití Prostředí Apache HBase k vytváření tabulek HBase , vkládání dat a dotazování dat.

Pro většinu osob se data zobrazí v tabulkovém formátu:

HDInsight Apache HBase tabular data.

V HBase (implementace Cloud BigTable) vypadají stejná data takto:

HDInsight Apache HBase BigTable data.

Použití prostředí HBase

  1. Pomocí ssh příkazu se připojte ke clusteru HBase. Upravte následující příkaz nahrazením CLUSTERNAME názvu clusteru a zadáním příkazu:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Pomocí hbase shell příkazu spusťte interaktivní prostředí HBase. Do připojení SSH zadejte následující příkaz:

    hbase shell
    
  3. Pomocí create příkazu vytvořte tabulku HBase se dvěma sloupci. V názvech tabulek a sloupců se rozlišují malá a velká písmena. Zadejte tento příkaz:

    create 'Contacts', 'Personal', 'Office'
    
  4. Pomocí list příkazu zobrazíte seznam všech tabulek v HBase. Zadejte tento příkaz:

    list
    
  5. Příkaz slouží put k vložení hodnot do zadaného sloupce v zadaném řádku v konkrétní tabulce. Zadejte následující příkazy:

    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. Pomocí scan příkazu můžete prohledávat a vracet Contacts data tabulky. Zadejte tento příkaz:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase shell.

  7. K načtení obsahu řádku použijte get příkaz. Zadejte tento příkaz:

    get 'Contacts', '1000'
    

    Podobné výsledky se zobrazí jako použití scan příkazu, protože existuje jenom jeden řádek.

    Další informace o schématu tabulky HBase naleznete v tématu Úvod do návrhu schématu Apache HBase. Další příkazy HBase najdete v tématu Referenční příručka Apache HBase.

  8. Pomocí exit příkazu zastavte interaktivní prostředí HBase. Zadejte tento příkaz:

    exit
    

Hromadné načítání dat do tabulky kontaktů HBase

HBase obsahuje několik metod načítání dat do tabulek. Další informace naleznete v tématu Hromadné načítání.

Ukázkový datový soubor najdete ve veřejném kontejneru objektů blob: wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt. Obsah datového souboru je:

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

Volitelně můžete vytvořit textový soubor a nahrát ho do vlastního účtu úložiště. Pokyny najdete v tématu Nahrání dat pro úlohy Apache Hadoop ve službě HDInsight.

Tento postup používá Contacts tabulku HBase, kterou jste vytvořili v posledním postupu.

  1. Spuštěním následujícího příkazu z otevřeného připojení ssh transformujte datový soubor na StoreFiles a uložte ho do relativní cesty určené 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.txt
    
  2. Spuštěním následujícího příkazu nahrajte data z /example/data/storeDataFileOutput tabulky HBase:

    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
    
  3. Můžete otevřít prostředí HBase a pomocí scan příkazu vypsat obsah tabulky.

Použití Apache Hivu k dotazování Apache HBase

Data v tabulkách HBase můžete dotazovat pomocí Apache Hivu. V této části vytvoříte tabulku Hive, která se namapuje na tabulku HBase, a použijete ji k dotazování dat v tabulce HBase.

  1. Z otevřeného připojení ssh spusťte Beeline pomocí následujícího příkazu:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
    

    Další informace o Beeline najdete v tématu Použití Hivu s Hadoopem ve službě HDInsight s Beeline.

  2. Spuštěním následujícího skriptu HiveQL vytvořte tabulku Hive, která se mapuje na tabulku HBase. Před spuštěním tohoto příkazu se ujistěte, že jste vytvořili ukázkovou tabulku odkazovanou dříve v tomto článku pomocí prostředí HBase.

    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. Spusťte následující skript HiveQL pro dotaz na data v tabulce HBase:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. Chcete-li ukončit Beeline, použijte !exit.

  5. Chcete-li ukončit připojení ssh, použijte exit.

Oddělení clusterů Hive a Hbase

Dotaz Hive pro přístup k datům HBase se nemusí spouštět z clusteru HBase. K dotazování dat HBase je možné použít jakýkoli cluster, který je součástí Hivu (včetně Sparku, Hadoopu, HBase nebo Interactive Query), a to za předpokladu, že jsou dokončeny následující kroky:

  1. Oba clustery musí být připojené ke stejné virtuální síti a podsíti.
  2. Zkopírujte /usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml z hlavních uzlů clusteru HBase do hlavních uzlů clusteru Hive a pracovních uzlů.

Zabezpečené clustery

Data HBase se také dají dotazovat z Hivu pomocí HBase s podporou ESP:

  1. Při sledování vzoru s více clustery musí být oba clustery povolené ESP.
  2. Pokud chcete povolit Hivu dotazovat data HBase, ujistěte se, že hive má uživatel udělená oprávnění pro přístup k datům HBase prostřednictvím modulu plug-in Hbase Apache Ranger.
  3. Při použití samostatných clusterů s podporou ESP musí být obsah hlavních uzlů clusteru /etc/hosts HBase připojený k /etc/hosts hlavním uzlům clusteru Hive a pracovních uzlů.

Poznámka:

Po škálování obou clusterů /etc/hosts se musí znovu připojit.

Používání rozhraní HBase REST API prostřednictvím cURL

Rozhraní REST API HBase je zabezpečené prostřednictvím základního ověřování. Požadavky byste vždy měli provádět pomocí protokolu HTTPS (Secure HTTP), čímž pomůžete zajistit, že se přihlašovací údaje budou na server odesílat bezpečně.

  1. Pokud chcete povolit rozhraní HBase REST API v clusteru HDInsight, přidejte do části Akce skriptu následující vlastní spouštěcí skript. Spouštěcí skript můžete přidat při vytváření clusteru nebo po vytvoření clusteru. Jako typ uzlu vyberte Servery oblastí , aby se zajistilo, že se skript spustí pouze na serverech oblastí HBase.

    #! /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. Nastavte proměnnou prostředí pro snadné použití. Upravte níže uvedené příkazy nahrazením MYPASSWORD přihlašovacího hesla clusteru. Nahraďte MYCLUSTERNAME názvem vašeho clusteru HBase. Pak zadejte příkazy.

    export PASSWORD='MYPASSWORD'
    export CLUSTER_NAME=MYCLUSTERNAME
    
  3. Pomocí následujícího příkazu můžete zobrazit seznam existujících tabulek HBase:

    curl -u admin:$PASSWORD \
    -G https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/
    
  4. Pokud chcete vytvořit novou tabulku HBase se dvěma skupinami sloupců, použijte následující příkaz:

    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
    

    Schéma je k dispozici ve formátu JSon.

  5. Chcete-li vložit nějaká data použijte následující příkaz:

    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 kóduje hodnoty zadané v přepínači -d. V tomto příkladu:

    • MTAwMA==: 1000

    • UGVyc29uYWw6TmFtZQ==: Osobní: Jméno

    • Sm9obiBEb2xl: John Dole

      false-row-key umožňuje vložit více (dávkových) hodnot.

  6. Pro získání řádku použijte následující příkaz:

    curl -u admin:$PASSWORD \
    GET "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/1000" \
    -H "Accept: application/json" \
    -v
    

Další informace o HBase Rest naleznete v tématu Referenční příručka Apache HBase.

Poznámka:

Thrift není podporovaný HBase v HDInsight.

Pokud používáte Curl nebo jinou komunikaci REST s WebHCat, je třeba ověřit žádosti zadáním uživatelského jména a hesla pro správce clusteru HDInsight. Název clusteru také musíte použít jako součást identifikátoru URI (Uniform Resource Identifier) sloužícího k odesílání požadavků na server:

curl -u <UserName>:<Password> \

-G https://<ClusterName>.azurehdinsight.net/templeton/v1/status

Měla by se zobrazit odpověď podobná následující odpovědi:

{"status":"ok","version":"v1"}

Kontrola stavu clusteru

HBase v HDInsight se dodává s webovým uživatelským rozhraním pro sledování clusterů. Pomocí webového uživatelského rozhraní, můžete žádat o statistické údaje nebo informace o oblastech.

Přístup k hlavnímu uživatelskému rozhraní HBase

  1. Přihlaste se k webovému uživatelskému rozhraní Ambari, kde https://CLUSTERNAME.azurehdinsight.netCLUSTERNAME je název vašeho clusteru HBase.

  2. V nabídce vlevo vyberte HBase .

  3. Vyberte rychlé odkazy v horní části stránky, přejděte na aktivní odkaz uzlu Zookeeper a pak vyberte hlavní uživatelské rozhraní HBase. Uživatelské rozhraní se otevře na nové kartě prohlížeče:

    HDInsight Apache HBase HMaster UI.

    Hlavní uživatelské rozhraní HBase obsahuje tyto části:

    • oblastní servery
    • zálohování hlavních serverů
    • V tabulkách
    • úlohy
    • atributy softwaru

Rekreační clustery

Po odstranění clusteru služby HBase můžete vytvořit jiný cluster HBase pomocí stejného výchozího kontejneru blob. Nový cluster převezme tabulky HBase, které jste vytvořili v původním clusteru. Abyste se však vyhnuli nekonzistenci, doporučujeme před odstraněním clusteru zakázat tabulky HBase.

Můžete použít příkaz disable 'Contacts'HBase .

Vyčištění prostředků

Pokud nebudete tuto aplikaci dál používat, odstraňte cluster HBase, který jste vytvořili, pomocí následujícího postupu:

  1. Přihlaste se k portálu Azure.
  2. Do vyhledávacího pole v horní části zadejte HDInsight.
  3. V části Služby vyberte clustery HDInsight.
  4. V seznamu clusterů HDInsight, které se zobrazí, klikněte na ... vedle clusteru, který jste vytvořili pro tento kurz.
  5. Klepněte na tlačítko Odstranit. Klepněte na tlačítko Ano.

Další kroky

V tomto kurzu jste zjistili, jak vytvořit cluster Apache HBase. A jak vytvořit tabulky a zobrazit data v těchto tabulkách z prostředí HBase. Dozvěděli jste se také, jak používat dotaz Hive na data v tabulkách HBase. A jak použít rozhraní REST API jazyka C# HBase k vytvoření tabulky HBase a načtení dat z tabulky. Další informace najdete v následujících tématech: