チュートリアル:Azure HDInsight で Apache HBase を使用するTutorial: Use Apache HBase in Azure HDInsight

このチュートリアルでは、Azure HDInsight で Apache HBase クラスターを作成する方法、HBase テーブルを作成する方法、Apache Hive を使用してテーブルのクエリを実行する方法について説明します。This tutorial demonstrates how to create an Apache HBase cluster in Azure HDInsight, create HBase tables, and query tables by using Apache Hive. HBase に関する一般的な情報については、HDInsight HBase の概要に関するページを参照してください。For general HBase information, see HDInsight HBase overview.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • Apache HBase クラスターを作成するCreate Apache HBase cluster
  • HBase テーブルを作成してデータを挿入するCreate HBase tables and insert data
  • Apache Hive を使用して Apache HBase を照会するUse Apache Hive to query Apache HBase
  • Curl を使用して HBase REST API を使用するUse HBase REST APIs using Curl
  • クラスターの状態の確認Check cluster status

前提条件Prerequisites

Apache HBase クラスターを作成するCreate Apache HBase cluster

次の手順では、Azure Resource Manager テンプレートを使用して、HBase クラスターと依存する既定の Azure Storage アカウントを作成します。The following procedure uses an Azure Resource Manager template to create an HBase cluster and the dependent default Azure Storage account. この手順で使用するパラメーターとその他のクラスター作成方法について理解するには、「 HDInsight での Linux ベースの Hadoop クラスターの作成」を参照してください。To understand the parameters used in the procedure and other cluster creation methods, see Create Linux-based Hadoop clusters in HDInsight.

  1. 次の画像を選択して Azure Portal でテンプレートを開きます。Select the following image to open the template in the Azure portal. テンプレートは Azure クイック スタート テンプレート集にあります。The template is located in Azure quickstart templates.

    Deploy to Azure button for new cluster

  2. [カスタム デプロイ] ブレードで以下の値を入力します。From the Custom deployment blade, enter the following values:

    プロパティProperty 説明Description
    SubscriptionSubscription クラスターの作成に使用する Azure サブスクリプションを選択します。Select your Azure subscription that is used to create the cluster.
    Resource groupResource group Azure リソース管理グループを作成するか、または既存のグループを使用します。Create an Azure Resource management group or use an existing one.
    LocationLocation リソース グループの [場所] を指定します。Specify the location of the resource group.
    ClusterNameClusterName HBase クラスターの名前を入力します。Enter a name for the HBase cluster.
    クラスター ログイン名とパスワードCluster login name and password 既定のログイン名は admin です。The default login name is admin.
    SSH ユーザー名とパスワードSSH username and password 既定のユーザー名は sshuser です。The default username is sshuser.

    その他のパラメーターは省略可能です。Other parameters are optional.

    各クラスターには Azure ストレージ アカウントとの依存関係があります。Each cluster has an Azure Storage account dependency. クラスターを削除すると、データはストレージ アカウントに保持されます。After you delete a cluster, the data retains in the storage account. クラスターの既定のストレージ アカウント名は、クラスター名に "store" が追加されたものです。The cluster default storage account name is the cluster name with "store" appended. これは、テンプレートの variables セクションでハードコードされます。It is hardcoded in the template variables section.

  3. [上記の使用条件に同意する] を選択し、 [購入] を選択します。Select I agree to the terms and conditions stated above, and then select Purchase. クラスターの作成には約 20 分かかります。It takes about 20 minutes to create a cluster.

HBase クラスターを削除したら、同じ既定の BLOB コンテナーを使用して別の HBase クラスターを作成できます。After an HBase cluster is deleted, you can create another HBase cluster by using the same default blob container. 新しいクラスターでは、元のクラスターで作成した HBase テーブルを選択します。The new cluster picks up the HBase tables you created in the original cluster. 不整合を回避するために、クラスターを削除する前に HBase テーブルを無効にしておくことをお勧めします。To avoid inconsistencies, we recommend that you disable the HBase tables before you delete the cluster.

テーブルを作成してデータを挿入するCreate tables and insert data

SSH を使用して HBase クラスターに接続し、Apache HBase シェルを使用して HBase テーブルの作成、データの挿入、データのクエリを行うことができます。You can use SSH to connect to HBase clusters and then use Apache HBase Shell to create HBase tables, insert data, and query data.

多くの場合、データは次のような表形式で表示されます。For most people, data appears in the tabular format:

HDInsight Apache HBase の表形式データ

HBase (クラウド BigTable の実装) では、同じデータが次のように表示されます。In HBase (an implementation of Cloud BigTable), the same data looks like:

HDInsight Apache HBase の BigTable データ

HBase シェルを使用するにはTo use the HBase shell

  1. ssh コマンドを使用して HBase クラスターに接続します。Use ssh command to connect to your HBase cluster. 次のコマンドを編集して CLUSTERNAME をクラスターの名前に置き換えてから、そのコマンドを入力します。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. hbase shell コマンドを使用して、HBase 対話型シェルを起動します。Use hbase shell command to start the HBase interactive shell. SSH 接続で次のコマンドを入力します。Enter the following command in your SSH connection:

    hbase shell
    
  3. create コマンドを使用して、2 つの列ファミリを持つ HBase テーブルを作成します。Use create command to create an HBase table with two-column families. テーブル名と列名は大文字と小文字が区別されます。The table and column names are case-sensitive. 次のコマンドを入力します。Enter the following command:

    create 'Contacts', 'Personal', 'Office'
    
  4. list コマンドを使用して、HBase 内のすべてのテーブルを一覧表示します。Use list command to list all tables in HBase. 次のコマンドを入力します。Enter the following command:

    list
    
  5. put コマンドを使用して、特定のテーブルの指定行の指定列に値を挿入します。Use put command to insert values at a specified column in a specified row in a particular table. 次のコマンドを入力します。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. scan コマンドを使用して、Contacts テーブルのデータをスキャンして返します。Use scan command to scan and return the Contacts table data. 次のコマンドを入力します。Enter the following command:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase シェル

  7. get コマンドを使用して、行のコンテンツを取り込みます。Use get command to fetch contents of a row. 次のコマンドを入力します。Enter the following command:

    get 'Contacts', '1000'
    

    1 行しかないので、scan コマンドを使用したときと同じような結果が表示されます。You see similar results as using the scan command because there is only one row.

    HBase テーブル スキーマの詳細については、Apache HBase スキーマの設計の概要に関するページを参照してください。For more information about the HBase table schema, see Introduction to Apache HBase Schema Design. HBase コマンドの詳細については、「Apache HBase のリファレンス ガイド」を参照してください。For more HBase commands, see Apache HBase reference guide.

  8. exit コマンドを使用して、HBase 対話型シェルを停止します。Use exit command to stop the HBase interactive shell. 次のコマンドを入力します。Enter the following command:

    exit
    

Contacts HBase テーブルにデータを一括で読み込むにはTo bulk load data into the contacts HBase table

HBase では、いくつかの方法でテーブルにデータを読み込ことができます。HBase includes several methods of loading data into tables. 詳細については、 一括読み込みに関するページを参照してください。For more information, see Bulk loading.

サンプルのデータ ファイルは、パブリック BLOB コンテナー 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. このデータ ファイルの内容は次のとおりです。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

必要に応じて、自分でテキスト ファイルを作成し、そのファイルを自分のストレージ アカウントにアップロードできます。You can optionally create a text file and upload the file to your own storage account. 手順については、「HDInsight で Apache Hadoop ジョブのデータをアップロードする」を参照してください。For the instructions, see Upload data for Apache Hadoop jobs in HDInsight.

この手順では、前回の手順で作成した Contacts HBase テーブルを使用します。This procedure uses the Contacts HBase table you created in the last procedure.

  1. 開いている ssh 接続から、次のコマンドを実行してデータ ファイルを StoreFile に変換し、Dimporttsv.bulk.output で指定された相対パスに格納します。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. 次のコマンドを実行して、データを /example/data/storeDataFileOutput から HBase テーブルにアップロードします。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. HBase シェルを開き、scan コマンドを使用してテーブルの内容を一覧表示することができます。You can open the HBase shell, and use the scan command to list the table contents.

Apache Hive を使用して Apache HBase を照会するUse Apache Hive to query Apache HBase

Apache Hive を使用して HBase テーブルのデータを照会できます。You can query data in HBase tables by using Apache Hive. このセクションでは、HBase テーブルにマッピングする Hive テーブルを作成し、作成した Hive テーブルを使用して HBase テーブルのデータを照会します。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. 開いている ssh 接続から、次のコマンドを使用して Beeline を開始します。From your open ssh connection, use the following command to start Beeline:

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

    Beeline の詳細については、「Beeline による HDInsight での Hive と Hadoop の使用」を参照してください。For more information about Beeline, see Use Hive with Hadoop in HDInsight with Beeline.

  2. 次の HiveQL スクリプトを実行して、HBase テーブルにマップする Hive テーブルを作成します。Run the following HiveQL script to create a Hive table that maps to the HBase table. この記事で、HBase シェルを使用して、先ほど参照したサンプル テーブルが作成されたことを確認してから、このステートメントを実行してください。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. 次の HiveQL スクリプトを実行して、HBase テーブルのデータを照会します。Run the following HiveQL script to query the data in the HBase table:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. Beeline を終了するには、 !exitを使用します。To exit Beeline, use !exit.

  5. ssh 接続を終了するには、exit を使用します。To exit your ssh connection, use exit.

Curl を使用して HBase REST API を使用するUse HBase REST APIs using Curl

REST API のセキュリティは、 基本認証を通じて保護されています。The REST API is secured via basic authentication. 資格情報をサーバーに安全に送信するには、必ずセキュア HTTP (HTTPS) を使用して要求を行う必要があります。You shall always make requests by using Secure HTTP (HTTPS) to help ensure that your credentials are securely sent to the server.

  1. 使いやすさのために環境変数を開始します。Initiate environment variable for ease of use. 下のコマンドを編集して MYPASSWORD をクラスター ログイン パスワードに置き換えます。Edit the commands below by replacing MYPASSWORD with the cluster login password. MYCLUSTERNAME を HBase クラスターの名前に置き換えます。Replace MYCLUSTERNAME with the name of your HBase cluster. その後、これらのコマンドを入力します。Then enter the commands.

    export password='MYPASSWORD'
    export clustername=MYCLUSTERNAME
    
  2. 次のコマンドを使用して、既存の HBase テーブルを一覧表示します。Use the following command to list the existing HBase tables:

    curl -u admin:$password \
    -G https://$clustername.azurehdinsight.net/hbaserest/
    
  3. 次のコマンドを使用して、2 つの列ファミリを含む新しい HBase テーブルを作成します。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
    

    スキーマは、JSon 形式で提供されます。The schema is provided in the JSon format.

  4. 次のコマンドを使用して、一部のデータを挿入します。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
    

    -d スイッチで指定された値に base64 エンコードを使用する必要があります。You must base64 encode the values specified in the -d switch. この例では次のとおりです。In the example:

    • MTAwMA==:1000MTAwMA==: 1000

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

    • Sm9obiBEb2xl:John DoleSm9obiBEb2xl: John Dole

      false-row-key を使用すると、複数の (バッチ処理された) 値を挿入できます。false-row-key allows you to insert multiple (batched) values.

  5. 次のコマンドを使用して、1 行を取得します。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
    

HBase Rest の詳細については、「 Apache HBase reference guide (Apache HBase リファレンス ガイド)」をご覧ください。For more information about HBase Rest, see Apache HBase Reference Guide.

注意

Thrift は、HDInsight での HBase ではサポートされていません。Thrift is not supported by HBase in HDInsight.

Curl、または WebHCat を使用したその他の REST 通信を使用する場合は、HDInsight クラスター管理者のユーザー名とパスワードを指定して要求を認証する必要があります。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. また、サーバーへの要求の送信に使用する Uniform Resource Identifier (URI) にクラスター名を含める必要があります。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

次のような応答が返されます。You should receive a response similar to the following response:

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

クラスターの状態の確認Check cluster status

HDInsight の HBase には、クラスターを監視するための Web UI が付属します。HBase in HDInsight ships with a Web UI for monitoring clusters. この Web UI を使用すると、統計情報やリージョンに関する情報を要求できます。Using the Web UI, you can request statistics or information about regions.

HBase Master UI にアクセスするにはTo access the HBase Master UI

  1. https://CLUSTERNAME.azurehdinsight.net の Ambari Web UI にサインインします。この CLUSTERNAME は HBase クラスターの名前です。Sign into the Ambari Web UI at https://CLUSTERNAME.azurehdinsight.net where CLUSTERNAME is the name of your HBase cluster.

  2. 左側のメニューで [HBase] を選択します。Select HBase from the left menu.

  3. ページの上部にある [Quick links](クイック リンク) を選択し、アクティブな Zookeeper ノード リンクをポイントして、 [HBase Master UI] を選択します。Select Quick links on the top of the page, point to the active Zookeeper node link, and then select HBase Master UI. UI は別のブラウザー タブで開かれます。The UI is opened in another browser tab:

    HDInsight Apache HBase HMaster UI

    HBase Master UI には次のセクションがあります。The HBase Master UI contains the following sections:

    • リージョン サーバーregion servers
    • バックアップ マスターbackup masters
    • tablestables
    • タスクtasks
    • ソフトウェア属性software attributes

リソースのクリーンアップClean up resources

不整合を回避するために、クラスターを削除する前に HBase テーブルを無効にしておくことをお勧めします。To avoid inconsistencies, we recommend that you disable the HBase tables before you delete the cluster. HBase コマンド disable 'Contacts' を使用できます。You can use the HBase command disable 'Contacts'. このアプリケーションを引き続き使用しない場合は、次の手順で作成した HBase クラスターを削除します。If you're not going to continue to use this application, delete the HBase cluster that you created with the following steps:

  1. Azure Portal にサインインします。Sign in to the Azure portal.
  2. 上部の検索ボックスに「HDInsight」と入力します。In the Search box at the top, type HDInsight.
  3. [サービス] の下の [HDInsight クラスター] を選択します。Select HDInsight clusters under Services.
  4. 表示される HDInsight クラスターの一覧で、このチュートリアル用に作成したクラスターの横にある [...] をクリックします。In the list of HDInsight clusters that appears, click the ... next to the cluster that you created for this tutorial.
  5. [削除] をクリックします。Click Delete. [はい] をクリックします。Click Yes.

次の手順Next steps

このチュートリアルでは、Apache HBase クラスターの作成方法と、テーブルを作成してそのテーブルのデータを HBase シェルから表示する方法について学習しました。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. また、HBase テーブルのデータに対して Hive クエリを使用する方法と、HBase C# REST API を使用して HBase テーブルを作成し、テーブルからデータを取得する方法についても学習しました。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. 詳細については、次を参照してください。To learn more, see: