これは一種の素朴な質問ですが、私はNoSQLパラダイムは初めてであり、それについてあまり知りません。だから誰かが私にHBaseとHadoopの違いを明確に理解するのを手伝ってくれるなら、あるいは私が違いを理解するのに役立つかもしれないいくつかの指針を与えれば。
今まで、私はいくつかの研究とaccを行いました。私の理解では、HadoopはHDFSの生のデータチャンク(ファイル)で動作するフレームワークを提供し、HBaseはHadoop上のデータベースエンジンであり、基本的に生データチャンクではなく構造化データで動作します。 Hbaseは、SQLと同様にHDFS上に論理層を提供します。それが正しいか?
Plsは私を修正すること自由に感じます。
ありがとう。
Hadoopは基本的にFS(Hadoop分散ファイルシステム)、計算フレームワーク(MapReduce)、および管理ブリッジ(Yet Another Resource Negotiator)の3つです。 HDFSでは、大量のデータを分散(読み取り/書き込みアクセスの高速化)および冗長化(可用性の向上)で保存できます。 MapReduceを使用すると、この巨大なデータを分散された並列の方法で処理できます。ただし、MapReduceはHDFSだけに限定されません。 FSであるHDFSには、ランダムな読み取り/書き込み機能がありません。順次データアクセスに適しています。そして、これがHBaseの出番です。これは、Hadoopクラスター上で実行され、データへのランダムなリアルタイム読み取り/書き込みアクセスを提供するNoSQLデータベースです。
構造化データと非構造化データの両方をHadoopに保存でき、HBaseにも保存できます。どちらも、シェルや他のAPIなど、データにアクセスするための複数のメカニズムを提供します。また、HBaseはデータをキー/値のペアとして列状に保存し、HDFSはデータをフラットファイルとして保存します。両方のシステムの顕著な特徴のいくつかは次のとおりです。
Hadoop
HBase
Hadoopはオフラインのバッチ処理に最適ですが、リアルタイムのニーズがある場合はHBaseが使用されます。
類似の比較は、MySQLとExt4の間です。
Apache Hadoop プロジェクトには4つの主要モジュールが含まれます
HBaseは、大きなテーブルの構造化データストレージをサポートするスケーラブルな分散データベースです。 Bigtable
がGoogle File Systemが提供する分散データストレージを活用するように、Apache HBaseはHadoopとHDFSの上にBigtableのような機能を提供します。
HBaseを使用する場合:
しかし、HBaseにはいくつかの制限があります
要約:
キーによるデータの読み込み、キー(または範囲)によるデータの検索、キーによるデータの提供、キーによるデータのクエリ、またはスキーマに適合しない行ごとのデータを保存する場合は、HBaseを検討してください。
cloudera ブログのHBaseの「する」と「しない」をご覧ください。
Hadoopは分散ファイルシステム、つまりHDFSを使用してビッグデータを保存しますが、HDFSには特定の制限があり、これらの制限を克服するために、HBase、Cassandra、MongodbなどのNoSQLデータベースが存在しました。
Hadoopはバッチ処理のみを実行でき、データはシーケンシャルな方法でのみアクセスされます。つまり、最も単純なジョブであっても、データセット全体を検索する必要があります。処理されると、巨大なデータセットは別の巨大なデータセットになり、これも順次処理する必要があります。この時点で、単一の時間単位でデータの任意のポイントにアクセスするための新しいソリューションが必要です(ランダムアクセス)。
他のすべてのファイルシステムと同様に、HDFSはストレージを提供しますが、フォールトトレラントな方法で、高いスループットとデータ損失のリスクの低減(レプリケーションのため)が、HDFSはファイルシステムであるため、ランダムな読み取りおよび書き込みアクセスがありません。これがHBaseが登場する場所です。 GoogleのBigTableをモデルにした、分散型のスケーラブルなビッグデータストアです。 Cassandraは、hbaseに多少似ています。
注:
DataNode(collocated Region Servers)およびHBaseとHadoop HDFSの両方を持つクラスター内のNameNodeのようなHDFSデーモン(緑色で強調表示)を確認します
HDFSは、大きなファイルの保存に適した分散ファイルシステムです。ファイル内の個々のレコードを高速で検索することはできません。
HBaseは、HDFSの上に構築され、大きなテーブルの高速レコード検索(および更新)を提供します。これは、概念的な混乱のポイントになる場合があります。 HBaseは、高速検索用にHDFSに存在するインデックス付き「StoreFiles」にデータを内部的に配置します。
これはどのように見えますか?
さて、インフラストラクチャレベルでは、クラスター内の各軟膏マシンには以下のデーモンがあります
ルックアップでどのくらい高速ですか?
HBaseは、次のデータモデルを使用して、基になるストレージとしてHDFS(場合によっては他の分散ファイルシステムも)で高速ルックアップを実現します。
テーブル
行
行
列ファミリー
列修飾子
細胞
タイムスタンプ
クライアント読み取り要求フロー:
上の写真のメタテーブルとは何ですか?
すべての情報の後、HBaseの読み取りフローは、これらのエンティティに触れるルックアップ用です。
- 最初に、スキャナーはブロックキャッシュ-読み取りキャッシュで行セルを探します。最近読み込まれたキー値はここにキャッシュされ、メモリが必要になると、最近使用されたものは削除されます。
- 次に、スキャナーはMemStore、つまり最新の書き込みを含むメモリ内の書き込みキャッシュを調べます。
- スキャナーがMemStoreおよびブロックキャッシュ内のすべての行セルを検出しない場合、HBaseはブロックキャッシュインデックスとブルームフィルターを使用してロードしますHFilesターゲット行セルが含まれる可能性のあるメモリに。
ソースと詳細:
参照: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop
Hadoopは、いくつかのサブシステムの一般的な名前です。1)HDFS。冗長性などを考慮してマシンのクラスター全体にデータを分散する分散ファイルシステム2)Map Reduce。 HDFS上のジョブ管理システム-HDFSに保存されたデータを処理するmap-reduce(およびその他のタイプ)ジョブを管理します。
基本的には、オフラインシステムを意味します。データをHDFSに保存し、ジョブを実行して処理できます。
一方、列ベースのデータベースのHBase。 HDFSをストレージとして使用します。これは、backup\redundency\etcを処理しますが、「オンラインストア」です。つまり、特定の行や行などを照会して、即時値を取得できます。