HBaseは、Hadoop分散ファイル・システム(HDFS)上で実行される列指向の非リレーショナル・データベース管理システムです。 HBaseは、多くのビッグデータのお客様事例で一般的なスパース・データのセットを格納するフォールト・トレラントな方法を提供します。 これは、リアルタイムのデータ処理や、大量のデータへのランダムな読み取り/書き込み権限によくあっています。
リレーショナル・データベース・システムとは異なり、HBaseはSQLのような構造化クエリ言語をサポートしていません。実際、HBaseはリレーショナル・データ・ストアではまったくありません。 HBaseアプリケーションは、一般的なApache MapReduceアプリケーションと同じようにJava™で記述されています。 HBaseは、Apache Avro、REST、およびThriftでのアプリケーションの作成をサポートしています。
HBaseシステムは、線形にスケーリングするよう設計されています。 これは、従来のデータベースと同じように、行と列を持つ標準テーブルのセットで構成されています。 各テーブルには主キーとして定義された要素が必要であり、HBaseテーブルへのすべてのアクセス試行ではこの主キーを使用する必要があります。
Avroは、コンポーネントとして、数値、バイナリー・データ、文字列、さらに、 配列、マップ、列挙、レコードなど、いくつかの複雑なタイプなどのような、プリミティブ・データ型の豊富なセットをサポートしています。 データの並べ替え順序を定義することもできます。
HBaseは、高性能の調整をZooKeeperに依存しています。 ZooKeeperはHBaseに組み込まれていますが、本番クラスターを実行している場合は、HBaseクラスターと統合された専用のZooKeeperクラスターを用意することをお勧めします。
HBaseは、ビッグデータのバッチ処理用のクエリエンジンであるHiveとうまく連携して、フォールト・トレラントなビッグデータ・アプリケーションを実現します。
HBase列は、オブジェクトの属性を表します。テーブルが環境内のサーバーからの診断ログを格納している場合、各行はログ・レコードである可能性があり、 一般的な列は、ログ・レコードが書き込まれたときのタイム・スタンプ、またはレコードが作成されたサーバー名である可能性があります。
HBaseでは、列ファミリーの要素がすべて一緒に格納されるように、多くの属性を列ファミリーにグループ化できます。 これは、特定の行のすべての列が一緒に格納される行指向のリレーショナル・データベースとは異なります。 HBaseでは、テーブル・スキーマを事前定義し、列ファミリーを指定する必要があります。 ただし、新しい列はいつでもファミリーに追加できるため、スキーマは柔軟になり、変化するアプリケーション要件に適応できるようになります。
HDFSにNameNodeとスレーブ・ノードがあり、MapReduceにJobTrackerスレーブとTaskTrackerスレーブがあるように、HBaseも同様の概念に基づいて構築されています。 HBaseでは、マスター・ノードがクラスターを管理し、リージョン・サーバーがテーブルの一部を格納し、データに対して作業を実行します。 同様に、NameNode HBaseの可用性がマスター・ノードの損失にも敏感であるため、HDFSにはいくつかの企業に懸念があります。
IBMビッグデータの専門家との無料の1対1の電話をスケジュールして、Apache Hadoopエコシステム全体にデータサイエンスと機械学習を拡張する方法をご覧ください。