こんにちは、hbase と hadoop は初めてです。hbaseでhadoopを使用している理由がわかりませんでした。Hadoop がファイル システムであることは知っていますが、hadoop なしで hbase を使用できると読んだのに、なぜ Hadoop を使用しているのでしょうか。
どうも
8 に答える
Hadoop
は、マシンのクラスター全体で大量のデータを並列に保存および処理できるプラットフォームです。これは、データの保存や処理の内部について心配する必要がないバッチ処理システムです。
信頼性の高いデータストレージのための分散ファイルシステムであるHDFSだけでなく、マシンのクラスター全体で巨大なデータセットを並列に処理できる処理フレームワークであるMapReduceも提供します。
Hadoopの最大の利点の1つは、データの局所性を提供することです。つまり、膨大な量のデータを移動するにはコストがかかります。そのため、Hadoopは計算をデータに移動します。HdfsとMapReduceはどちらも、非常に大きなデータを処理するように高度に最適化されています。
HDFSは、データレプリケーションを通じて高可用性とフェイルオーバーを保証するため、何らかの大災害のためにクラスター内のいずれかのマシンがダウンした場合でも、データは安全で利用可能です。
一方、HBaseはNoSQL database
、分散型でスケーラブルなビッグデータストアと考えることができます。これは、「ランダムな読み取りと書き込みができない」などのHdfの落とし穴を克服するために使用されます。
Hbaseは、データへのランダムなリアルタイムの読み取り/書き込みアクセスが必要な場合に適しています。HbaseはGoogleの「BigTable」をモデルにしており、HdfsはGFS(Googleファイルシステム)をモデルにしています。
トップHdfでのみHbaseを使用する必要はありません。Hbaseは「S3」や「EBS」などの他の永続ストアで使用できます。詳細については、HadoopとHbaseについて知りたい場合は、それぞれのホームページ「hadoop.apache.org」と「hbase.apache.org」にアクセスしてください。
「Hadoop.The.Definitive.Guide」と「HBase.The.Definitive.Guide」について詳しく知りたい場合は、次の書籍を読むこともできます。
HDFS という名前の Hadoop 分散ファイル システムは、複数のジョブを提供します。実際、Hadoop は単なるファイル システムとは言えませんが、リソースも提供するため、データを簡単に管理できるマスター スレーブ アーキテクチャを提供することで、分散処理を実行できます。
HBase の問題については、HBase はクラスターを作成できず、独自のローカル ファイル システムを持っているため、HDFS を使用せずに HBase にリモート接続することはできません。
Hadoopの優れたイントロについては、このリンクを参照してください。
用語をより厳密な順序で並べてみます。
Hadoop は一連の統合テクノロジーです。
HDFS - 大規模なデータ処理用に特別に構築された分散ファイル システム
MapReduce - Map Reduce パラダイムを実装するフレームワーク分散ファイル システム。HDFS はその 1 つです。Amazon S3 などの他の DFS でも機能します。
HBase - DFS の上に構築された分散ソートされたキー値マップ。私の知る限り、HDFS は HBase と互換性のある DFS 実装のみです。HBase には、先行書き込みログを書き込むための追加機能が必要です。たとえば、Amazon の s3 を介した DFS はサポートしていません。
HBase は Hadoop なしで使用できます。HBase をスタンドアロン モードで実行すると、ローカル ファイル システムが使用されます。
Hadoop は、冗長性があり、非常に大きなサイズに拡張できる分散ファイル システムです。Hadoop で任意のデータベースを実行できない理由は、HDFS が追加専用のファイル システムであり、POSIX に準拠していないためです。ほとんどの SQL データベースでは、既存のファイルを検索して変更する機能が必要です。
HBase は、HDFS の制限を考慮して設計されています。CouchDB は追加専用のファイル形式も使用するため、理論的には HDFS で実行するように移植できます。
Hadoop は 2 つの主要コンポーネントで構成されます。
- HDFS。
- マップ削減。
両方の説明は次のとおりです。
HDFS は、一連のノードにデータを分散することにより、(レプリケーションを使用して) 高いフォールト トレランスを備えた信頼性の高いストレージを提供するファイル システムです。これは、NameNode (ファイル システムに関するメタデータが格納される場所) と datanodes (これらは複数の場合があります。実際の分散データが格納される場所です) の 2 つのコンポーネントで構成されます。
Map-Reduce は、「Job-Tracker」と「Task-Tracker」と呼ばれる 2 種類の Java デーモンのセットです。通常、ジョブ トラッカー デーモンは実行されるジョブを制御しますが、タスク トラッカー デーモンはデータが分散されているデータ ノード上で実行されるデーモンであり、ユーザーによって提供されるプログラム実行ロジックを計算できます。対応するデータノード内のデータに固有。
したがって、要約すると、HDFS はストレージ コンポーネントであり、Map-Reduce は実行コンポーネントです。
一方、HBase は再び 2 つのコンポーネントで構成されます。
HMaster- これもメタデータで構成されています。
RegionServers - これらは、HDFS クラスター内のデータベース関連データを保存および計算するために、HDFS クラスター内のデータ ノード上で実行される別のデーモン セットです (データである HDFS のコア機能を活用するために、これを HDFS に保存します)。レプリケーションとフォールト トレランス)。
HDFS 上で実行される Map-Reduce Daemon と Hbase-RegionServer Daemon の違いは、Map-Reduce Daemon は Map-Reduce(Aggregation) タイプのジョブのみを実行するのに対し、Hbase-RegionServer デーモンは次のような DataBase 関連の機能を実行することです。読む、書くなど。
その唯一の目的は、読み取りの配布と速度です。Hbase で何が起こるかというと、行キーの割り当てによってデータが自動的に「シャーディング」(パーティション化) されます。ソートされたバイナリを取得するため、インテリジェントな行キーを選択することが重要です。「分割された」データのサブセットは、リージョン サーバーと呼ばれるものに分割されることに注意してください。クラスター内の各マシンに複数のリージョン サーバーを配置できます。マルチノードの Hadoop クラスターにデータを分散しない場合、複数のマシンの処理能力を利用して、それぞれのデータのサブセットを並行して検索し、クライアントのクエリ アプリケーションに結果を返すことはできません。お役に立てれば。
注意すべき点は、ACID プロパティはまだ HBase でサポートされていないことです。HBase は行レベルで原子性をサポートします。MVCC の実装を読むようにしてください。
また、RDBMS における LSM と B+ ツリーについてもお読みください。