Tutorial: Verwenden von Apache HBase in Azure HDInsightTutorial: Use Apache HBase in Azure HDInsight

Dieses Tutorial zeigt, wie Sie in Azure HDInsight einen Apache HBase-Cluster erstellen, HBase-Tabellen anlegen und Tabellen mit Apache Hive abfragen können.This tutorial demonstrates how to create an Apache HBase cluster in Azure HDInsight, create HBase tables, and query tables by using Apache Hive. Allgemeine Informationen zu HBase finden Sie in der Übersicht über HDInsight HBase.For general HBase information, see HDInsight HBase overview.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Erstellen eines Apache HBase-ClustersCreate Apache HBase cluster
  • Erstellen von HBase-Tabellen und Einfügen von DatenCreate HBase tables and insert data
  • Verwenden von Apache Hive zum Abfragen von Apache HBaseUse Apache Hive to query Apache HBase
  • Verwenden der HBase-REST-APIs mit CurlUse HBase REST APIs using Curl
  • Überprüfen des ClusterstatusCheck cluster status

VoraussetzungenPrerequisites

Erstellen eines Apache HBase-ClustersCreate Apache HBase cluster

Beim folgenden Verfahren wird eine Azure Resource Manager-Vorlage verwendet, um einen HBase-Cluster und das abhängige Azure Storage-Standardkonto zu erstellen.The following procedure uses an Azure Resource Manager template to create an HBase cluster and the dependent default Azure Storage account. Informationen zu den Parametern, die in diesem Verfahren und in anderen Verfahren zur Clustererstellung verwendet werden, finden Sie unter Erstellen von Linux-basierten Hadoop-Clustern in HDInsight.To understand the parameters used in the procedure and other cluster creation methods, see Create Linux-based Hadoop clusters in HDInsight.

  1. Wählen Sie die folgende Abbildung aus, um die Vorlage im Azure-Portal zu öffnen.Select the following image to open the template in the Azure portal. Die Vorlage finden Sie unter Azure-Schnellstartvorlagen.The template is located in Azure quickstart templates.

    Deploy to Azure

  2. Geben Sie auf dem Blatt Benutzerdefinierte Bereitstellung die folgenden Werte ein:From the Custom deployment blade, enter the following values:

    EigenschaftProperty BESCHREIBUNGDescription
    SubscriptionSubscription Wählen Sie Ihr Azure-Abonnement aus, das zum Erstellen des Clusters verwendet wird.Select your Azure subscription that is used to create the cluster.
    Resource groupResource group Erstellen Sie eine neue Azure Resource Management-Gruppe, oder verwenden Sie eine vorhandene Ressourcengruppe.Create an Azure Resource management group or use an existing one.
    LocationLocation Geben Sie den Standort der Ressourcengruppe an.Specify the location of the resource group.
    ClusterNameClusterName Geben Sie einen Namen für den HBase-Cluster ein.Enter a name for the HBase cluster.
    Clusteranmeldename und KennwortCluster login name and password Der Standardanmeldename lautet admin.The default login name is admin.
    SSH-Benutzername und KennwortSSH username and password Der Standardbenutzername lautet sshuser.The default username is sshuser.

    Andere Parameter sind optional.Other parameters are optional.

    Jeder Cluster verfügt über eine Abhängigkeit von einem Azure Storage-Konto.Each cluster has an Azure Storage account dependency. Nach dem Löschen eines Clusters bleiben die Daten im Speicherkonto erhalten.After you delete a cluster, the data retains in the storage account. Zur Bildung des Standardnamens für das Speicherkonto des Clusters wird „store“ an den Clusternamen angehängt.The cluster default storage account name is the cluster name with "store" appended. Er ist im Variablenabschnitt der Vorlage hartcodiert.It is hardcoded in the template variables section.

  3. Wählen Sie Ich stimme den oben genannten Geschäftsbedingungen zu, und wählen Sie anschließend Kaufen aus.Select I agree to the terms and conditions stated above, and then select Purchase. Das Erstellen eines Clusters dauert ca. 20 Minuten.It takes about 20 minutes to create a cluster.

Nachdem Sie den HBase-Cluster gelöscht haben, können Sie im gleichen Standardblobcontainer einen neuen HBase-Cluster erstellen.After an HBase cluster is deleted, you can create another HBase cluster by using the same default blob container. Der neue Cluster übernimmt die im vorherigen Cluster erstellten HBase-Tabellen.The new cluster picks up the HBase tables you created in the original cluster. Es wird empfohlen, die HBase-Tabellen vor dem Löschen des Clusters zu deaktivieren, um Inkonsistenzen zu vermeiden.To avoid inconsistencies, we recommend that you disable the HBase tables before you delete the cluster.

Erstellen von Tabellen und Einfügen von DatenCreate tables and insert data

Sie können SSH verwenden, um eine Verbindung mit Apache HBase-Clustern herzustellen, und dann mithilfe von Apache HBase Shell HBase-Tabellen erstellen, Daten einfügen und Daten abfragen.You can use SSH to connect to HBase clusters and then use Apache HBase Shell to create HBase tables, insert data, and query data.

Den meisten Benutzern werden die Daten im Tabellenformat angezeigt:For most people, data appears in the tabular format:

HDInsight HBase-Tabellendaten

In HBase (eine Implementierung von Cloud BigTable) sehen die gleichen Daten wie folgt aus:In HBase (an implementation of Cloud BigTable), the same data looks like:

HDInsight HBase-BigTable-Daten

So verwenden Sie die HBase-ShellTo use the HBase shell

  1. Verwenden Sie zum Herstellen der Verbindung mit Ihrem HBase-Cluster ssh.Use ssh command to connect to your HBase cluster. Bearbeiten Sie den unten angegebenen Befehl, indem Sie CLUSTERNAME durch den Namen Ihres Clusters ersetzen, und geben Sie den Befehl dann ein:Edit the command below by replacing CLUSTERNAME with the name of your cluster, and then enter the command:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Verwenden Sie den Befehl hbase shell, um die interaktive HBase-Shell zu starten.Use hbase shell command to start the HBase interactive shell. Geben Sie den folgenden Befehl in Ihrer SSH-Verbindung ein:Enter the following command in your SSH connection:

    hbase shell
    
  3. Verwenden Sie den Befehl create, um eine HBase-Tabelle mit zwei Spaltenfamilien zu erstellen.Use create command to create an HBase table with two-column families. Für die Tabellen- und Spaltennamen wird die Groß-/Kleinschreibung beachtet.The table and column names are case-sensitive. Geben Sie den folgenden Befehl ein:Enter the following command:

    create 'Contacts', 'Personal', 'Office'
    
  4. Verwenden Sie den Befehl list, um alle Tabellen in HBase aufzulisten.Use list command to list all tables in HBase. Geben Sie den folgenden Befehl ein:Enter the following command:

    list
    
  5. Verwenden Sie den Befehl put, um Werte in einer angegebenen Spalte einer angegebenen Zeile in einer bestimmten Tabelle einzufügen.Use put command to insert values at a specified column in a specified row in a particular table. Geben Sie die folgenden Befehle ein:Enter the following commands:

    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. Verwenden Sie den Befehl scan, um die Daten der Tabelle Contacts zu überprüfen und zurückzugeben.Use scan command to scan and return the Contacts table data. Geben Sie den folgenden Befehl ein:Enter the following command:

    scan 'Contacts'
    

    HDInsight Hadoop HBase-Shell

  7. Verwenden Sie den Befehl get, um den Inhalt einer Zeile abzurufen.Use get command to fetch contents of a row. Geben Sie den folgenden Befehl ein:Enter the following command:

    get 'Contacts', '1000'
    

    Sie erhalten ähnliche Ergebnisse wie mit dem Befehl scan, da nur eine Zeile vorhanden ist.You see similar results as using the scan command because there is only one row.

    Weitere Informationen zum HBase-Tabellenschema finden Sie unter Einführung in das Apache HBase-Schemadesign.For more information about the HBase table schema, see Introduction to Apache HBase Schema Design. Beschreibungen weiterer HBase-Befehle finden Sie im Apache HBase-Referenzhandbuch.For more HBase commands, see Apache HBase reference guide.

  8. Verwenden Sie den Befehl exit, um die interaktive HBase-Shell zu beenden.Use exit command to stop the HBase interactive shell. Geben Sie den folgenden Befehl ein:Enter the following command:

    exit
    

So laden Sie Massendaten in die HBase-Kontakttabelle hochTo bulk load data into the contacts HBase table

HBase bietet mehrere Methoden zum Laden von Daten in Tabellen.HBase includes several methods of loading data into tables. Weitere Informationen finden Sie unter Laden von Massendaten.For more information, see Bulk loading.

Eine Datei mit Beispieldaten finden Sie in einem öffentlichen Blobcontainer: wasb://hbasecontacts\@hditutorialdata.blob.core.windows.net/contacts.txt.A sample data file can be found in a public blob container, wasb://hbasecontacts\@hditutorialdata.blob.core.windows.net/contacts.txt. Diese Datendatei hat folgenden Inhalt:The content of the data file is:

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

Sie haben die Option, eine Textdatei zu erstellen und die Datei in Ihr eigenes Speicherkonto hochzuladen.You can optionally create a text file and upload the file to your own storage account. Anweisungen hierzu finden Sie unter Hochladen von Daten für Apache Hadoop-Aufträge in HDInsight.For the instructions, see Upload data for Apache Hadoop jobs in HDInsight.

In der folgenden Prozedur wird die soeben erstellte HBase-Tabelle Contacts verwendet.This procedure uses the Contacts HBase table you created in the last procedure.

  1. Führen Sie über Ihre geöffnete SSH-Verbindung den folgenden Befehl aus, um die Datendatei in das StoreFiles-Format zu konvertieren und unter dem mit Dimporttsv.bulk.output angegebenen relativen Pfad zu speichern.From your open ssh connection, run the following command to transform the data file to StoreFiles and store at a relative path specified by 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. Führen Sie den folgenden Befehl aus, um die Daten aus /example/data/storeDataFileOutput in der HBase-Tabelle hochzuladen:Run the following command to upload the data from /example/data/storeDataFileOutput to the HBase table:

    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
    
  3. Sie können die HBase-Shell öffnen und den Tabelleninhalt mit dem Befehl scan auflisten.You can open the HBase shell, and use the scan command to list the table contents.

Verwenden von Apache Hive zum Abfragen von Apache HBaseUse Apache Hive to query Apache HBase

Sie können Daten in HBase-Tabellen mithilfe von Apache Hive abfragen.You can query data in HBase tables by using Apache Hive. In diesem Abschnitt erstellen Sie eine Ihrer HBase-Tabelle zugeordnete Hive-Tabelle, mit der Sie die Daten Ihrer HBase-Tabelle abfragen.In this section, you create a Hive table that maps to the HBase table and uses it to query the data in your HBase table.

  1. Verwenden Sie über Ihre geöffnete SSH-Verbindung den folgenden Befehl, um Beeline zu starten:From your open ssh connection, use the following command to start Beeline:

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

    Weitere Informationen zu Beeline finden Sie unter Verwenden von Hive mit Hadoop in HDInsight über Beeline.For more information about Beeline, see Use Hive with Hadoop in HDInsight with Beeline.

  2. Führen Sie das folgende HiveQL-Skript aus, um eine der HBase-Tabelle zugeordnete Hive-Tabelle zu erstellen.Run the following HiveQL script to create a Hive table that maps to the HBase table. Stellen Sie vor Ausführung dieser Anweisung sicher, dass Sie die zuvor in diesem Artikel erwähnte Beispieltabelle über die HBase-Shell erstellt haben.Make sure that you have created the sample table referenced earlier in this article by using the HBase shell before you run this statement.

    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. Führen Sie das folgende HiveQL-Skript aus, um die Daten in der HBase-Tabelle abzufragen:Run the following HiveQL script to query the data in the HBase table:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. Verwenden Sie !exit, um Beeline zu beenden.To exit Beeline, use !exit.

  5. Verwenden Sie zum Beenden Ihrer SSH-Verbindung den Befehl exit.To exit your ssh connection, use exit.

Verwenden der HBase-REST-APIs mit CurlUse HBase REST APIs using Curl

Die REST-API wird durch Standardauthentifizierunggesichert.The REST API is secured via basic authentication. Sie sollten Anforderungen immer über HTTPS (Secure HTTP) stellen, um sicherzustellen, dass Ihre Anmeldeinformationen sicher an den Server gesendet werden.You shall always make requests by using Secure HTTP (HTTPS) to help ensure that your credentials are securely sent to the server.

  1. Initiieren Sie die Umgebungsvariable, um für Benutzerfreundlichkeit zu sorgen.Initiate environment variable for ease of use. Bearbeiten Sie die unten angegebenen Befehle, indem Sie MYPASSWORD durch das Kennwort für die Anmeldung am Cluster ersetzen.Edit the commands below by replacing MYPASSWORD with the cluster login password. Ersetzen Sie MYCLUSTERNAME durch den Namen Ihres HBase-Clusters.Replace MYCLUSTERNAME with the name of your HBase cluster. Geben Sie anschließend die Befehle ein.Then enter the commands.

    export password='MYPASSWORD'
    export clustername=MYCLUSTERNAME
    
  2. Verwenden Sie den folgenden Befehl, um die vorhandenen HBase-Tabellen aufzulisten:Use the following command to list the existing HBase tables:

    curl -u admin:$password \
    -G https://$clustername.azurehdinsight.net/hbaserest/
    
  3. Verwenden Sie den folgenden Befehl, um eine neue HBase-Tabelle mit zwei Spaltenfamilien zu erstellen:Use the following command to create a new HBase table with two-column families:

    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
    

    Das Schema wird im JSON-Format bereitgestellt.The schema is provided in the JSon format.

  4. Fügen Sie mit dem folgenden Befehl Daten ein:Use the following command to insert some data:

    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\"}]}]}" \
    -v
    

    Die im -d-Switch angegebenen Werte müssen mit Base64 codiert werden.You must base64 encode the values specified in the -d switch. Im Beispiel:In the example:

    • MTAwMA==: 1000MTAwMA==: 1000

    • UGVyc29uYWw6TmFtZQ==: Personal:NameUGVyc29uYWw6TmFtZQ==: Personal:Name

    • Sm9obiBEb2xl: John DoleSm9obiBEb2xl: John Dole

      Mit false-row-key können Sie mehrere Werte (Batchwerte) einfügen.false-row-key allows you to insert multiple (batched) values.

  5. Rufen Sie mit dem folgenden Befehl eine Zeile ab:Use the following command to get a row:

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

Weitere Informationen zu HBase-REST finden Sie im Referenzleitfaden zu Apache HBase.For more information about HBase Rest, see Apache HBase Reference Guide.

Hinweis

Thrift wird von HBase in HDInsight nicht unterstützt.Thrift is not supported by HBase in HDInsight.

Wenn Sie Curl oder eine andere REST-Kommunikation mit WebHCat verwenden, müssen Sie die Anforderungen authentifizieren, indem Sie den Benutzernamen und das Kennwort des Administrators des HDInsight-Clusters bereitstellen.When using Curl or any other REST communication with WebHCat, you must authenticate the requests by providing the user name and password for the HDInsight cluster administrator. Sie müssen auch den Clusternamen als Teil des URIs (Uniform Resource Identifier) verwenden, um die Anforderungen an den Server zu senden.You must also use the cluster name as part of the Uniform Resource Identifier (URI) used to send the requests to the server:

   curl -u <UserName>:<Password> \
   -G https://<ClusterName>.azurehdinsight.net/templeton/v1/status

Sie sollten eine Antwort empfangen, die in etwa der folgenden entspricht:You should receive a response similar to the following response:

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

Überprüfen des ClusterstatusCheck cluster status

HBase in HDInsight wird mit einer Web-Benutzeroberfläche ausgeliefert, über die Cluster überwacht werden können.HBase in HDInsight ships with a Web UI for monitoring clusters. In dieser Web-Benutzeroberfläche können Sie Statistiken und Informationen zu Regionen anfordern.Using the Web UI, you can request statistics or information about regions.

So greifen Sie auf die HBase Master-Benutzeroberfläche zuTo access the HBase Master UI

  1. Melden Sie sich unter https://CLUSTERNAME.azurehdinsight.net bei der Benutzeroberfläche von Ambari Web an, wobei CLUSTERNAME der Name Ihres HBase-Clusters ist.Sign into the Ambari Web UI at https://CLUSTERNAME.azurehdinsight.net where CLUSTERNAME is the name of your HBase cluster.

  2. Wählen Sie im linken Menü HBase aus.Select HBase from the left menu.

  3. Klicken Sie am oberen Rand der Seite auf Quicklinks, zeigen Sie auf den aktiven Zookeeper-Knotenlink, und klicken Sie anschließend auf HBase Master-Benutzeroberfläche.Select Quick links on the top of the page, point to the active Zookeeper node link, and then select HBase Master UI. Die Benutzeroberfläche wird in einer anderen Browserregisterkarte geöffnet:The UI is opened in another browser tab:

    Benutzeroberfläche HDInsight HBase HMaster

    Die HBase Master-Benutzeroberfläche enthält folgende Abschnitte:The HBase Master UI contains the following sections:

    • Regionsserverregion servers
    • Backup Masterbackup masters
    • tablestables
    • Taskstasks
    • Softwareattributesoftware attributes

Bereinigen von RessourcenClean up resources

Es wird empfohlen, die HBase-Tabellen vor dem Löschen des Clusters zu deaktivieren, um Inkonsistenzen zu vermeiden.To avoid inconsistencies, we recommend that you disable the HBase tables before you delete the cluster. Sie können den HBase-Befehl disable 'Contacts' verwenden.You can use the HBase command disable 'Contacts'. Wenn Sie diese Anwendung nicht mehr benötigen, gehen Sie wie folgt vor, um den erstellten HBase-Cluster zu löschen:If you're not going to continue to use this application, delete the HBase cluster that you created with the following steps:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Geben Sie oben im Suchfeld den Suchbegriff HDInsight ein.In the Search box at the top, type HDInsight.
  3. Wählen Sie unter Dienste die Option HDInsight-Cluster aus.Select HDInsight clusters under Services.
  4. Klicken Sie in der daraufhin angezeigten Liste mit den HDInsight-Clustern neben dem Cluster, den Sie für dieses Tutorial erstellt haben, auf die Auslassungspunkte ( ... ).In the list of HDInsight clusters that appears, click the ... next to the cluster that you created for this tutorial.
  5. Klicken Sie auf Löschen.Click Delete. Klicken Sie auf Ja.Click Yes.

Nächste SchritteNext steps

In diesem Tutorial haben Sie erfahren, wie Sie einen Apache HBase-Cluster erstellen, Tabellen erstellen und die Daten in diesen Tabellen über die HBase-Shell anzeigen.In this tutorial, you learned how to create an Apache HBase cluster and how to create tables and view the data in those tables from the HBase shell. Außerdem haben Sie gelernt, wie Sie für die Daten in HBase-Tabellen eine Hive-Abfrage ausführen und wie Sie mit den HBase C#-REST-APIs HBase-Tabellen erstellen und Daten aus diesen Tabellen abrufen.You also learned how to use a Hive query on data in HBase tables and how to use the HBase C# REST APIs to create an HBase table and retrieve data from the table. Weitere Informationen finden Sie unter:To learn more, see: