HBaseチュートリアル:HBaseの紹介とFacebookのケーススタディ



このHBaseチュートリアルブログでは、HBaseとその機能について紹介しています。また、HBaseの利点を理解するためのFacebookMes​​sengerのケーススタディについても説明します。

私たちが ブログ、HBaseはHadoopエコシステムの重要な部分です。それでは、HBaseチュートリアルを紹介します。ここでは、Apache HBaseを紹介し、次にFacebookMes​​sengerのケーススタディを紹介します。このHBaseチュートリアルブログでは、次のトピックについて説明します。

Apache HBaseチュートリアル:歴史

HBaseの歴史から始めて、HBaseが一定期間にわたってどのように進化してきたかを見てみましょう。





HBaseの歴史-HBaseチュートリアル-Edureka

  • Apache HBaseは、GoogleのBigTableをモデルにしています。これは、データを収集し、マップ、財務、地球などのさまざまなGoogleサービスのリクエストを処理するために使用されます。
  • Apache HBaseは、大規模でまばらなデータセットを処理していたPowerset for Natural LanguageSearch社によるプロジェクトとして始まりました。
  • Apache HBaseは、2007年2月に最初にリリースされました。2008年1月の後半、HBaseはApacheHadoopのサブプロジェクトになりました。
  • 2010年、HBaseはApacheのトップレベルプロジェクトになりました。

HBaseチュートリアル| NoSQLデータベース|エドゥレカ



Apache HBaseの歴史を知った後、Apache HBaseとは何か知りたいと思いますか?さらに進んで見てみましょう。

Apache HBaseチュートリアル:HBaseの概要

HBaseは、オープンソース、多次元、分散型、スケーラブルであり、 NoSQLデータベース Javaで書かれています。 HBaseは上で実行されます HDFS (Hadoop分散ファイルシステム)そしてHadoopにBigTableのような機能を提供します。これは、スパースデータセットの大規模なコレクションを格納するフォールトトレラントな方法を提供するように設計されています。

それ以来、HBaseは、巨大なデータセットに対してより高速な読み取り/書き込みアクセスを提供することにより、高スループットと低遅延を実現しています。したがって、HBaseは、大量のデータへの高速でランダムなアクセスを必要とするアプリケーションに最適です。



高速でランダムな読み取り/書き込みの要件を満たすために、圧縮、メモリ内操作、およびブルームフィルター(値がセットに存在するかどうかを示すデータ構造)を提供します。

例を通してそれを理解しましょう: ジェットエンジンは、圧力センサー、温度センサー、速度センサーなどのさまざまなセンサーからさまざまなタイプのデータを生成し、エンジンの状態を示します。これは、フライトの問題とステータスを理解するのに非常に役立ちます。連続エンジン操作は、フライトごとに500 GBのデータを生成し、1日あたり約30万のフライトがあります。そのため、このようなデータにほぼリアルタイムで適用されるEngine Analyticsを使用して、問題をプロアクティブに診断し、計画外のダウンタイムを減らすことができます。これには、大量のデータを保存するための分散環境が必要です。 高速ランダム読み取りおよび書き込み リアルタイム処理用。ここで、HBaseが救いの手を差し伸べます。 HBaseの読み取りと書き込みについては、次のブログで詳しく説明します。 HBaseアーキテクチャ

ご存知のとおり、HBaseはNoSQLデータベースです。したがって、HBaseについて詳しく理解する前に、まずNoSQLデータベースとそのタイプについて説明しましょう。

Apache HBaseチュートリアル:NoSQLデータベース

NoSQLは SQLだけでなく 。 NoSQLデータベースは、表形式以外のデータ、つまり扱いにくいリレーショナルデータベースを表現できるようにモデル化されています。データベース内のデータを表すためにさまざまな形式を使用するため、表現形式に基づいてさまざまなタイプのNoSQLデータベースがあります。ほとんどのNoSQLデータベースは、一貫性よりも可用性と速度を活用しています。それでは、先に進んで、さまざまなタイプのNoSQLデータベースとその表現形式について理解しましょう。

Key-Valueストア:

これは、キーと値を含むスキーマのないデータベースです。各キーは、バイトの配列である値を指し、文字列、BLOB、XMLなどにすることができます。ランボルギーニは鍵であり、ガヤルド、アヴェンタドール、ムルシエラゴ、レヴェントン、ディアブロ、フラカン、ヴェネノ、センテナリオなどの価値を示すことができます。

Key-Valueストアデータベース:Aerospike、Couchbase、Dynamo、FairCom c-treeACE、FoundationDB、HyperDex、MemcacheDB、MUMPS、Oracle NoSQL Database、OrientDB、Redis、Riak、Berkeley DB

使用事例

Key-Valueストアはサイズを適切に処理し、低レイテンシで読み取り/書き込み操作の一定のストリームを処理するのに適しています。これはそれらを完璧にしますユーザー設定とプロファイルストア、製品の推奨事項将来の顧客製品の推奨事項を推進するために小売業者のWebサイトで表示される最新のアイテム、顧客の買い物習慣にサービスを提供することで、顧客ごとにリアルタイムでカスタマイズされた広告やクーポンなどが得られます。

ドキュメント指向

同じキーと値のペアに従いますが、XML、JSON、BSONのように半構造化されています。これらの構造はドキュメントと見なされます。

ドキュメントベースのデータベース:Apache CouchDB、Clusterpoint、Couchbase、DocumentDB、HyperDex、IBM Domino、MarkLogic、MongoDB、OrientDB、Qizx、RethinkDB。

使用事例

ドキュメントは柔軟なスキーマをサポートしているため、高速な読み取り/書き込みとパーティション化により、Twitter、eコマースWebサイトなどのさまざまなサービスでユーザーデータベースを作成するのに適しています。

列指向:

このデータベースでは、データは行ではなく列にグループ化されたセルに格納されます。列は、スキーマ定義中または実行時に作成できる列ファミリーに論理的にグループ化されます。

これらのタイプのデータベースは、列に対応するすべてのセルを連続ディスクエントリとして格納するため、アクセスと検索がはるかに高速になります。

列ベースのデータベース:HBase、Accumulo、Cassandra、Druid、Vertica。

使用事例

巨大なストレージをサポートし、より高速な読み取り/書き込みアクセスを可能にします。これにより、列指向データベースは、eコマースWebサイト、Google Financeや株式市場データなどの金融システム、Googleマップなどに顧客の行動を保存するのに適しています。

グラフ指向:

これは、SQLとは異なり、完全に柔軟なグラフィカル表現です。これらのタイプのデータベースには、要件に応じて拡張できるエッジとノードが含まれているため、アドレスのスケーラビリティの問題を簡単に解決できます。

グラフベースのデータベース:AllegroGraph、ArangoDB、InfiniteGraph、Apache Giraph、MarkLogic、Neo4J、OrientDB、Virtuoso、Stardog。

使用事例

これは基本的に、不正検出、リアルタイムレコメンデーションエンジン(ほとんどの場合eコマース)、マスターデータ管理(MDM)、ネットワークおよびIT運用、IDおよびアクセス管理(IAM)などで使用されます。

HBaseとCassandraは、2つの有名な列指向データベースです。それでは、より高いレベルで話してみましょう。HBaseとCassandraのアーキテクチャと動作の違いを比較して理解しましょう。

HBaseチュートリアル:HBase VS Cassandra

  • HBaseはBigTable(Google)をモデルにしていますが、CassandraはFacebookが最初に開発したDynamoDB(Amazon)をベースにしています。
  • HBaseはHadoopインフラストラクチャ(HDFS、ZooKeeper)を活用し、Cassandraは個別に進化しましたが、必要に応じてHadoopとCassandraを組み合わせることができます。
  • HBaseには、HBase HMaster、ZooKeeper、NameNode、RegionSeversなどの相互に通信するいくつかのコンポーネントがあります。 Cassandraは単一ノードタイプですが、すべてのノードが等しく、すべての機能を実行します。どのノードも、単一障害点を取り除くコーディネーターになることができます。
  • HBaseは読み取り用に最適化されており、単一書き込みをサポートしているため、厳密な一貫性が得られます。 HBaseは範囲ベースのスキャンをサポートしているため、スキャンプロセスが高速化されます。一方、Cassandraは、結果整合性を維持する単一行の読み取りをサポートします。
  • Cassandraは範囲ベースの行スキャンをサポートしていないため、HBaseと比較してスキャンプロセスが遅くなります。
  • HBaseは、列ファミリーの行がRowKeyの順序で格納される順序付きパーティション化をサポートしますが、Casandraでは順序付けされたパーティション化が課題です。 RowKeyのパーティショニングにより、HBaseではCassandraと比較してスキャンプロセスが高速になります。
  • HBaseは読み取り負荷分散をサポートしていません。1つのRegionServerが読み取り要求を処理し、レプリカは障害が発生した場合にのみ使用されます。 Cassandraは読み取り負荷分散をサポートし、さまざまなノードから同じデータを読み取ることができます。これにより、一貫性が損なわれる可能性があります。
  • CAP(Consistency、Availability&Partition -Tolerance)では、HBaseは一貫性と可用性を維持し、Cassandraは可用性とPartition-Toleranceに重点を置いています。


それでは、深く掘り下げて、ApacheHBaseの人気を高める機能を理解しましょう。

Apache HBaseチュートリアル:HBaseの機能

Javaでランダムな文字列を生成する方法
  • アトミック読み取りおよび書き込み: 行レベルでは、HBaseはアトミックな読み取りと書き込みを提供します。これは、1回の読み取りまたは書き込みプロセス中に、他のすべてのプロセスが読み取りまたは書き込み操作を実行できなくなると説明できます。
  • 一貫した読み取りと書き込み: HBaseは、上記の機能により、一貫した読み取りと書き込みを提供します。
  • 線形およびモジュール式のスケーラビリティ: データセットはHDFSを介して分散されるため、さまざまなノード間で線形にスケーラブルであるだけでなく、さまざまなノード間で分割されるため、モジュール式にスケーラブルです。
  • テーブルの自動で構成可能なシャーディング: HBaseテーブルはクラスター全体に分散されており、これらのクラスターはリージョン全体に分散されています。これらの領域とクラスターは分割され、データが大きくなるにつれて再配布されます。
  • クライアントアクセス用の使いやすいJavaAPI: プログラムによるアクセスのための使いやすいJavaAPIを提供します。
  • ThriftゲートウェイとRESTフルWebサービス: また、Java以外のフロントエンド用のThriftおよびRESTAPIもサポートしています。
  • ブロックキャッシュとブルームフィルター: HBaseは、大量のクエリを最適化するためのブロックキャッシュとブルームフィルターをサポートしています。
  • 自動障害サポート: HDFSを備えたHBaseは、クラスター全体でWAL(先行書き込みログ)を提供し、自動障害サポートを提供します。
  • ソートされた行キー: 検索は行の範囲で行われるため、HBaseは行キーを辞書式順序で格納します。これらのソートされた行キーとタイムスタンプを使用して、最適化されたリクエストを作成できます。

このHBaseチュートリアルを進めて、HBaseを使用できるユースケースとシナリオを説明してから、HDFSとHBaseを比較します。

HBaseが最適なシナリオに注目してください。

HBaseチュートリアル:HBaseはどこで使用できますか?

  • 大規模なデータセット(数百万または数十億または行と列)があり、データに対する高速、ランダム、リアルタイムの読み取りおよび書き込みアクセスが必要な場合は、HBaseを使用する必要があります。
  • データセットはさまざまなクラスターに分散されており、データを処理するには高いスケーラビリティが必要です。
  • データはさまざまなデータソースから収集され、半構造化データまたは非構造化データ、あるいはすべての組み合わせです。 HBaseで簡単に処理できます。
  • 列指向のデータを保存したい。
  • データセットには多くのバージョンがあり、それらすべてを保存する必要があります。

Facebookメッセンジャーのケーススタディにジャンプする前に、HBaseとHDFSの違いを教えてください。

HBaseチュートリアル:HBase VS HDFS

HDFSはJavaベースの分散ファイルシステムであり、Hadoopクラスター内の複数のノードにまたがって大きなデータを保存できます。したがって、HDFSは、分散環境にデータを格納するための基盤となるストレージシステムです。 HDFSはファイルシステムですが、HBaseはデータベースです(NTFSやMySQLと同様)。

HDFSとHBaseはどちらも分散環境にあらゆる種類のデータ(構造化、半構造化、非構造化)を保存するため、HDFSファイルシステムとNoSQLデータベースであるHBaseの違いを見てみましょう。

  • HBaseは、大規模なデータセット内の少量のデータへの低遅延アクセスを提供し、HDFSは高遅延操作を提供します。
  • HBaseはランダムな読み取りと書き込みをサポートし、HDFSはWORM(Write once Read ManyまたはMultipletimes)をサポートします。
  • HDFSは基本的または主にMapReduceジョブを介してアクセスされ、HBaseはシェルコマンド、Java API、REST、Avro、またはThriftAPIを介してアクセスされます。

HDFSは、大規模なデータセットを分散環境に保存し、そのデータのバッチ処理を活用します。例えば。これは、eコマースWebサイトが、長期間(4〜5年以上)にわたって成長した分散環境に何百万もの顧客のデータを保存するのに役立ちます。次に、そのデータに対してバッチ処理を活用し、顧客の行動、パターン、要件を分析します。次に、会社はどのタイプの製品、顧客がどの月に購入したかを知ることができます。アーカイブされたデータを保存し、そのデータに対してバッチ処理を実行するのに役立ちます。

HBaseは、各列が一緒に格納される列指向の方法でデータを格納するのに対し、リアルタイム処理を利用して読み取りが高速になります。例えば。同様のeコマース環境では、何百万もの製品データが保存されます。そのため、数百万の製品の中から製品を検索すると、リクエストと検索のプロセスが最適化され、すぐに結果が生成されます(またはリアルタイムで言うことができます)。詳細 HBaseアーキテクチャの説明 、次のブログで取り上げます。

HBaseはHDFSを介して配布されるため、以下のFacebookメッセンジャーのケーススタディで説明するように、両方を組み合わせることで、カスタマイズされたソリューションで両方の利点を活用する絶好の機会が得られます。

HBaseチュートリアル:FacebookMes​​sengerのケーススタディ

Facebookメッセージングプラットフォーム 2010年11月にApacheCassandraからHBaseに移行しました。

Facebook Messengerは、メッセージ、電子メール、チャット、およびSMSをリアルタイムの会話に結合します。 Facebookは、これらのサービスのセットを処理するためのスケーラブルで堅牢なインフラストラクチャを構築しようとしていました。

当時、メッセージインフラストラクチャは、月に150億を超える個人間メッセージを送信する3億5,000万人を超えるユーザーを処理していました。チャットサービスは、月に1,200億を超えるメッセージを送信する3億人を超えるユーザーをサポートします。

使用状況を監視することにより、2つの一般的なデータパターンが出現したことがわかりました。

  • 不安定になる傾向がある時間データの短いセット
  • めったにアクセスされない、増え続けるデータセット

Facebookは、これら2つの使用パターンのストレージソリューションを見つけたいと考え、既存のメッセージインフラストラクチャに代わるものを見つけるための調査を開始しました。

2008年の初めに、彼らはオープンソースデータベース、つまりCassandraを使用しました。これは、InboxSearchのトラフィックを提供する本番環境にすでに存在する結果整合性のKey-Valueストアです。彼らのチームはMySQLデータベースの使用と管理について優れた知識を持っていたため、どちらかのテクノロジーを切り替えることは彼らにとって深刻な懸念事項でした。

彼らは、MySQL、Apache Cassandra、Apache HBase、およびその他のシステムのクラスターを評価するために、さまざまなフレームワークのテストに数週間を費やしました。彼らは最終的にHBaseを選択しました。

MySQLが大きなデータセットを効率的に処理できなかったため、インデックスとデータセットが大きくなると、パフォーマンスが低下しました。彼らは、Cassandraが新しいメッセージインフラストラクチャを調整するための難しいパターンを処理できないことに気づきました。

主な問題は次のとおりです。

  • さまざまなFacebookサービスから継続的に増加する大量のデータを保存します。
  • 高度な処理を活用できるデータベースが必要です。
  • 何百万ものリクエストに対応するには、高性能が必要です。
  • ストレージとパフォーマンスの一貫性を維持します。

図:Facebookメッセンジャーが直面する課題

これらすべての問題に対して、Facebookは解決策、つまりHBaseを考案しました。 Facebookは、そのさまざまな機能により、Facebookメッセンジャー、チャット、電子メールなどを提供するためにHBaseを採用しました。

HBaseは、Cassandraよりも単純な整合性モデルを使用して、このワークロードに対して非常に優れたスケーラビリティとパフォーマンスを備えています。彼らは、自動負荷分散とフェイルオーバー、圧縮サポート、サーバーごとの複数のシャードなどの要件の観点から、HBaseが最適であると判断しました。

HBaseで使用される基盤となるファイルシステムであるHDFSは、エンドツーエンドのチェックサム、レプリケーション、自動負荷リバランスなど、いくつかの必要な機能も提供しました。

図:FacebookメッセンジャーのソリューションとしてのHBase

彼らはHBaseを採用するにつれて、結果をHBase自体にコミットすることに焦点を合わせ、Apacheコミュニティと緊密に連携し始めました。

メッセージはSMS、チャット、メールなどのさまざまなソースからのデータを受け入れるため、ユーザーのメッセージのすべての意思決定を処理するアプリケーションサーバーを作成しました。他の多数のサービスとインターフェースします。添付ファイルはHaystack(HBaseで動作します)に保存されます。また、Apache ZooKeeperの上に、友人との関係、電子メールアカウントの検証、配信の決定、プライバシーの決定のために他のインフラストラクチャサービスと通信するユーザー検出サービスを作成しました。

Facebookチームは、これらの各サービスが堅牢で信頼性が高く、リアルタイムメッセージングシステムを処理するための優れたパフォーマンスを提供していることを確認するために多くの時間を費やしました。

このHBaseチュートリアルブログが参考になり、気に入っていただけたでしょうか。このブログでは、HBaseの基本とその機能について理解しました。私の次のブログで 、説明します HBaseのアーキテクチャ HBaseの動作により、高速でランダムな読み取り/書き込みに人気があります。

HBaseの基本を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaビッグデータHadoop認定トレーニングコースは、小売、ソーシャルメディア、航空、観光、金融の各ドメインでリアルタイムのユースケースを使用して、学習者がHDFS、Yarn、MapReduce、Pig、Hive、HBase、Oozie、Flume、Sqoopのエキスパートになるのに役立ちます。

質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。