sql >> データベース >  >> NoSQL >> HBase

Clouderaオペレーショナルデータベースアプリケーション開発の概念

    Clouderaオペレーショナルデータベースは、Cloudera Data Platform(CDP)の3つの異なるフォームファクタで利用できるようになりました。

    Cloudera Operational Databaseを初めて使用する場合は、このブログ投稿を参照してください。そして、ここのドキュメントをチェックしてください。

    このブログ投稿では、ClouderaOperationalDatabaseのアプリケーションの開発に関連するApacheHBaseとApachePhoenixの概念について説明します。

    ただし、最初に、これらはClouderaOperationalDatabaseを開発者が利用できるさまざまなフォームファクタです。

    パブリッククラウド:

    • CDPデータハブ運用データベーステンプレート
    • マネージドdbPaaSソリューションであるClouderaオペレーショナルデータベース(COD)エクスペリエンス

    オンプレミス:

    • CDPプライベートクラウドベース

    さまざまなフォームファクタにより、オンプレミス、パブリッククラウド、またはその両方で実行できるアプリケーションを開発できます。

    Cloudera Operational Databaseは、ApacheHBaseとApachePhoenixを利用しています。 Cloudera Operational Databaseでは、ストレージインフラストラクチャを提供するHDFSやS3を備えたデータストアとしてApacheHBaseを使用します。ネイティブのApacheHBaseアプリケーションの1つを使用してアプリケーションを開発するか、データアクセスにApachePhoenixを使用するかを選択できます。 Apache Phoenixは、プログラムによるANSISQLインターフェイスを提供するSQLレイヤーです。 Apache HBase上で動作し、標準のSQLクエリを使用してデータを処理できるようにします。 (DMLステートメントは標準SQLではありません)。

    多くの開発者は、構造化照会言語(SQL)を使用してデータベースに格納されているデータにアクセスすることを好み、ClouderaOperationalDatabaseのApachePhoenixはこれを実現するのに役立ちます。データベース管理者または開発者であれば、Javaコードを混乱させることなく、ApachePhoenixを使用してすぐにクエリの記述を開始できます。

    運用データベースにデータを保存してアクセスするには、次のいずれかを実行できます。

    ネイティブのApacheHBaseクライアントAPIを使用して、HBaseのデータを操作します。

    • Java用のHBaseAPIを使用する
    • HBaseRESTサーバーを使用する

    HueHBaseアプリを使用してデータにアクセスすることもできます。このアプリは、ApacheHBaseに保存されているデータにアクセスするために使用できるコンソールです。

    または、ApachePhoenixドライバーの1つでApachePhoenixを使用して、ApacheHBaseに保存されているデータを操作します。

    • ApachePhoenix用のJDBCドライバーを使用する
    • ApachePhoenix用のODBCドライバーを使用する
    • ApachePhoenix用のPythonドライバーを使用する

    アプリケーション開発に必要なApacheHBaseとApachePhoenixの概念を見てみましょう。

    名前空間

    名前空間は、リレーショナルデータベースシステムのデータベースに類似したテーブルの論理グループです。

    テーブルと行

    1つ以上の列修飾子が行を構成します。 1つ以上の行がテーブルを構成します。各行は、行キーで識別できます。アプリケーションを作成する場合、一意の行キーを使用して1つの行または一連の行にアクセスできます。

    列ファミリー

    テーブル作成時に、それらが相互にどのように関連しているかに基づいて定義された列ファミリー。列ファミリには、値を格納できる列修飾子を含めることができます。列修飾子は、単に列と呼ばれることもあり、列ファミリーに編成されます。カラムファミリーは、ストレージ内に一緒に配置されています。

    列ファミリーはデータを垂直に分割します。一連の列修飾子にアクセスするユースケースがある場合、列ファミリーをパーティション化すると、読み取るストアファイルの数が減り、読み取りパフォーマンスが向上します。 2つ以上の列ファミリーに同時にアクセスする場合は、パーティション分割を回避する必要があります。

    圧縮とエンコードは、列ファミリーレベルで適用されます。列ファミリーごとにデータ型を宣言する必要はなく、列ファミリーには複数のデータ型のデータを含めることができます。

    ApacheHBaseテーブルの構成

    Apache HBaseテーブルは、1つ以上の列ファミリーで構成されており、複数のリージョンに分割されている場合があります。各リージョンの各列ファミリーのデータは、HDFSまたはS3やADLSなどのオブジェクトストレージにある複数のHFileに保存されます。

    各リージョンは、開始行キーと終了行キーの間の特定のキースペース範囲内に行を格納します。行キーはリージョンに固有であり、2つのリージョンが重複することはありません。リージョンは、一度に1つのRegionServerによって提供され、行内の一貫性を保証します。

    Apache HBaseリージョンの分割とマージの詳細については、次のブログ投稿を参照してください:https://blog.cloudera.com/apache-hbase-region-splitting-and-merging/

    ApacheHBaseデータレイアウト

    Apache HBaseは、タイムスタンプに基づいて列修飾子(CQ)と呼ばれる基本的なストレージユニットのバージョンが複数存在する可能性があるため、オンライントランザクション処理(OLTP)のユースケースに優れています。各列修飾子バージョンの一意の値は個別に保存されます。列ファミリーには任意の数のセルを含めることができ、それらは完全にランダムで、各行に異なるデータ型、数値、および名前を持つことができます。列ファミリーには任意の数のセルを格納できますが、1つの列ファミリーの列修飾子は、他の列ファミリーの列修飾子とは別に格納されることに注意してください。

    Apache HBaseがマルチバージョン同時実行制御(MVCC)を実行する方法に興味がある場合は、次のブログ投稿を読むことができます:https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and。

    アパッチフェニックステーブル

    Apache Phoenixテーブルは、Apache HBaseテーブルと1:1の関係にあります。 CREATETABLEなどのApachePhoenixDDLステートメントを使用して新しいテーブルを作成するか、VIEWステートメントを使用して既存のApacheHBaseテーブルにビューを作成するかを選択できます。

    Apache Phoenix DDLステートメントを使用して、Apache HBaseテーブルのコンテンツを作成、削除、または変更します。多くの場合、ApacheHBaseネイティブAPIを使用してApachePhoenixテーブルを直接変更できる場合があります。これはClouderaOperationalDatabaseではサポートされておらず、エラー、一貫性のないインデックス、誤ったクエリ結果、場合によってはデータの破損が発生します。

    データの取り込み

    Apache Phoenix SQLステートメントを使用して、Cloudera Operational Database(COD)にデータを取り込むことができます。 CODは、他のClouderaDataPlatformサービスとも緊密に統合されています。次のリンクで、一部のデータ取り込み機能の使用方法を確認できます。

    • SparkまたはHiveをApacheHBaseと一緒に使用して、データを取り込みます。 HBase-Sparkコネクタを使用できます。また、HBaseにデータをインポートする方法のリストを参照してください。HBaseにデータをインポートします。
    • SparkまたはHiveをApachePhoenixと一緒に使用して、データを取り込みます。 Phoenix-SparkおよびPhoenix-Hiveコネクタを使用できます。 「ApachePhoenix-Sparkコネクタについて」および「ApachePhoenix-Hiveコネクタについて」を参照してください。
    • Cloudera DataFlow(Apache NiFi)を使用してデータを取り込みます。 CDPパブリッククラウドでのApacheHBaseへのデータの取り込みを参照してください。
    • Cloudera Data Engineering(Spark)を使用してデータを取り込みます。 Clouderaオペレーショナルデータベース–フェニックスを使用したClouderaデータエンジニアリングを参照してください。

    ApachePhoenixDMLコマンド

    UPSERTやDELETEなどのApachePhoenixDMLコマンドを使用できます。使用するDMLコマンドがApachePhoenixでサポートされていることを確認してください。詳細については、ApachePhoenixの文法リファレンスを参照してください。

    データにアクセスするための色相ユーザーインターフェース

    Hueは、ClouderaOperationalDatabaseに保存されているデータを操作できるWebベースのインタラクティブSQLエディターです。 Cloudera Operational DatabaseサービスでHueを使用する方法の詳細については、Cloudera OperationalDatabaseHueアクセスを参照してください。

    DataHubとCODでのアプリケーションの実行

    Cloudera Operational Databaseは、ApachePhoenixを使用してこれらのサポートされている言語で記述されたアプリケーションをサポートします。 Java用のネイティブHBaseAPIを使用してApacheHBaseアプリケーションを開発することもできます。アプリケーションの開発と、次のいくつかのブログ投稿で使用できるいくつかのサンプルアプリケーションについて詳しく説明します。

    Cloudera Operational Database(COD)エクスペリエンスにより、ユーザーインターフェイスからクライアント接続情報に簡単にアクセスできます。詳細については、CODに対してアプリケーションをコンパイルするためのクライアント接続情報を参照してください。詳細については、「ApachePhoenixを使用したデータの保存とアクセス」を参照してください。

    CDP Private Cloud Baseでは、ApacheKnoxを介してPhoenixQuery Server(PQS)に接続する場合、またはクラスター内の次の場所にあるJDBCドライバーとPhoenixクライアントJARを使用する場合に、ApacheKnoxユーザーインターフェイスからこの情報を見つけることができます。フェニックスゲートウェイの役割を持つノード/opt/ cloudera / parcels / CDH / lib/phoenix。

    結論

    次の投稿では、開発に関する考慮事項と、サンプルアプリケーションを含むアプリケーションの構築について説明します。

    次のリンクで、DataHubのClouderaOperationalDatabaseおよびClouderaOperationalDatabaseエクスペリエンスdbPaaSソリューションの既存のサンプルアプリケーションとドキュメントを確認できます。

    • Clouderaオペレーショナルデータベースエクスペリエンスの概要
    • Clouderaオペレーショナルデータベースのクイックスタート
    • オペレーショナルデータベースデータハブテンプレート入門
    • Cloudera DataScienceWorkbenchと運用データベースを使用した機械学習アプリケーションの構築

    1. ファイルストレージとしてのMongoDB

    2. node.jsを使用してElastiCacheクラスターに接続する方法

    3. MongoDBNOW集約変数

    4. ImportError:redisという名前のモジュールがありません