目次:
ビデオ: 7-3-5 Scala类的成员属性访问权限 2024
HBase (Hadoopデータベース)は、GoogleのBigTableのJava実装です。 GoogleはBigTableを「疎、分散、永続的な多次元ソートマップ」と定義しています。 「これはかなり簡潔な定義ですが、複雑な面では少しだと思います。 BigTableの複雑さを少し壊すために、次に各属性の議論があります。
Hbaseはまばらです
あなたが推測したように、BigTable分散データストレージシステムは、大きなデータの要求を満たすように設計されています。現在、大きなデータアプリケーションには大量のデータが格納されますが、大きなデータコンテンツには可変性があります。次の図に示すように、顧客の連絡先情報を格納している会社のデータベースに従来のテーブルがあるとします。
<!顧客ID名 | ミドルネーム | 電子メールアドレス | 番地 | 00001 Smith | John |
---|---|---|---|---|---|
Timothy | 1 Hadoop Lane、NY 11111 | Doe | Jane | NULL | |
NULL | 7 HBase Ave、CA 22222 | 企業または個人は、顧客または構成員のそれぞれについて完全なデータ記録を要求することができる。良い例は、適切なケアを提供するためにすべての連絡先情報を必要とするあなたの医者です。他の企業や個人は、部分的な連絡先情報のみを要求する場合もあり、時間の経過とともにその情報を習得する必要がある場合もあります。 | <!例えば、顧客サービス会社は、サービス要求のために電話または電子メールメッセージを処理することができる。顧客は、サービス会社にすべての連絡先情報を提供するかどうかを選択する場合と選択しない場合があります。しかし、時間の経過とともに相互作用するたびに、企業はより良いサービスを提供できるようにクライアントの詳細を知ることができます。たとえば、積極的なサービスアラートを発行します。 | この文脈では、 | 疎の |
は、行内のフィールドが空でもNULLでもかまいませんが、HBaseがぎこちなく停止することはありません。 HBaseは、たとえばJane Doeのミドルネームと電子メールアドレスを(まだ)知っていないという事実を処理できます。
<! - 3 - >別の例としては、衛星画像を保存するためのデータベースです。 GoogleがBigTable技術を使用して地球の衛星画像を保存することが判明しました。ほぼすべての場合、画像が保存されるたびにメタデータも保存されます。
メタデータは、画像が野外から捕捉された場合、画像の住所または緯度および経度のみを含むことができる。メタデータはコンテンツ内で可変であるため、一部のフィールドはNULLになります。これは問題ありません。両方の例において、収集されるデータセットは、特に第2の例において、非常に大きくなる可能性がある。イメージデータベースは、ほとんどの場合、テラバイト単位で測定されるか、時にはペタバイト単位で測定されます。 HBaseは大きなデータを保存するように設計されていますが、無駄なデータレコードを無償で保存するために設計されています。大規模なデータアプリケーションを使用している場合、この懸念事項は重要です。 100万行以上のいくつかのNULLレコードを保存するのは無駄ですが、その廃棄物が数千万行を超えると想像してみてください! ありがたいことに、これはGoogleのデザイナーとHBaseコミュニティにとって重要な考慮事項でした。スパースデータは、高価なストレージスペースを浪費することなくサポートされています。
それはそこで終わらない。スキーマレスのデータストアの能力を考えてみましょう。表は、古典的なカスタマーコンタクトテーブルを示しています。企業がこれらのテーブルを設計するとき、彼らは保存したいものを前もって知っています。つまり、スキーマは固定されています。情報の最初のバイトがテーブルに格納される前に定義されています。
時間の経過とともに、顧客に新しいフィールドが必要な場合はどうなりますか? Twitterのハンドルや新しい携帯電話番号はどうですか?あなたは、もはやあなたのために働いていないスキーマで一見固執しています。
HBaseはこの問題も解決します。データを持たないときにフィールドをスキップするだけでなく、フィールド(またはHBase内の
カラム
)を動的に追加することもできますスキーマを再設計したり操作を中断したりする必要はありません。
したがって、HBaseはスキーマレスのデータストアと考えることができます。つまり、それは流動的です。スキーマを追加、削除、変更することができます。 HBaseは分散され、永続的です。 BigTableは分散型永続データストアです。
永続的な
は、BigTableに保存したデータ(およびHBase、その問題について)は、プログラムやセッションが終了した後も永続的に保持されることを意味します。それはかなり単純です - 永続的な意味はそれが続くことを意味しますが、データがどのように保持されるかについてもう少し時間をかけて考える必要があります。 GoogleはBigTableの論文で、Google File SystemまたはGFSと呼ばれる分散ファイルシステムについて説明しました。 HBaseはオープンソースでBigTableを実装しているのと同じように、HDFSはGFSのオープンソース実装です。 デフォルトでは、HBaseはHDFSを利用してデータをディスクストレージに保存します。 HBaseでは他の分散データストアも使用できますが、HBaseのインストールの大部分はHDFSを活用しています。これはHBaseが "Hadoop Database"であることを考えると理にかなっています。ちょっと、名前に組み込まれています。
HDFSは、HadoopだけでなくHBaseのキーとなる技術です。 HBaseはHDFSにデータを保存することにより、信頼性、可用性、シームレスなスケーラビリティ、高性能などを、コスト効率の高い分散型サーバで提供します。
マップ
( 連想配列 とも呼ばれます)は、基本から出発して、キーと値のペアの抽象コレクションです。キーはユニークです。この定義は、HBaseのデータモデルがさまざまな方法で記述されることがよくあるため、HBaseの理解には不可欠です。多くの場合、列指向のストアとしては不完全です。 HBaseは、各キーが一意であるキー値データストアで、HBaseデータストア内に最大で1回しか存在しません。さらに、マップはソートされ、多次元である。これらのキーはHBaseに格納され、バイトレキシコン順にソートされます。各値は複数のバージョンを持つことができ、データモデルは多次元になります。デフォルトでは、データバージョンはタイムスタンプで実装されます。