Hadoop、HBase、またはHiveを使用する利点は何ですか?
私の理解では、HBaseはmap-reduceの使用を避け、HDFSの上に列指向のストレージを備えています。Hiveは、 HadoopおよびHBase用のSQLのようなインターフェースです。
また、 HiveとPigの比較についても知りたいです。
Hadoop、HBase、またはHiveを使用する利点は何ですか?
私の理解では、HBaseはmap-reduceの使用を避け、HDFSの上に列指向のストレージを備えています。Hiveは、 HadoopおよびHBase用のSQLのようなインターフェースです。
また、 HiveとPigの比較についても知りたいです。
MapReduce は単なるコンピューティング フレームワークです。HBase は関係ありません。つまり、MapReduce ジョブを作成することで、HBase との間でデータを効率的に送受信できます。または、Java などの他の HBase API を使用してシーケンシャル プログラムを作成し、データを配置またはフェッチすることもできます。しかし、Hadoop や HBase などを使用して膨大な量のデータを処理しているため、あまり意味がありません。データが大きすぎる場合、通常の逐次プログラムを使用しても非常に非効率的です。
質問の最初の部分に戻ると、Hadoop は基本的に 2 つのものです。分散ファイル システム (HDFS) +計算または処理フレームワーク (MapReduce)です。他のすべての FS と同様に、HDFS もストレージを提供しますが、フォールト トレラントな方法でスループットが高く、データ損失のリスクが低くなります (レプリケーションによる)。ただし、FS であるため、HDFS にはランダムな読み取りおよび書き込みアクセスがありません。ここで、HBase の出番です。Google の BigTable をモデルにした分散型のスケーラブルなビッグ データ ストアです。データをキーと値のペアとして保存します。
ハイブに来ています。これは、既存の Hadoop クラスター上にデータウェアハウス機能を提供します。それに加えて、SQL のバックグラウンドを持っている場合に備えて、作業を容易にするSQL のようなインターフェイスを提供します。Hive でテーブルを作成し、そこにデータを格納できます。それに加えて、既存の HBase テーブルを Hive にマップして操作することもできます。
Pig は基本的に、膨大な量のデータを非常に簡単かつ迅速に処理できるデータフロー言語です。Pig には基本的に、Pig Interpreterと言語のPigLatinの 2 つの部分があります。Pig スクリプトを PigLatin で記述し、Pig インタープリターを使用してそれらを処理します。Pig は私たちの生活をとても楽にしてくれます。実際、場合によっては本当に苦痛になることもあります。
少し前に、Hadoop エコシステムのさまざまなツールの簡単な比較に関する記事を書きました。これは詳細な比較ではありませんが、開始するのに役立つこれらの各ツールの簡単な紹介です。(私の答えに追加するだけです。自己宣伝は意図されていません)
Hive と Pig の両方のクエリは、内部で MapReduce ジョブに変換されます。
HTH
私は最近、自分の会社に Hive Data プラットフォームを実装しました。私は 1 人のチームだったので、直接話すことができます。
次のオプションをベンチマークしました。
HBaseはマップのようなものです。キーがわかれば、すぐに値を取得できます。ただし、Hbase の整数キーが 1000000 から 2000000 の間でいくつあるかを知りたい場合は、Hbaseだけでは適切ではありません。
行全体で集計、ロールアップ、分析する必要があるデータがある場合は、Hiveを検討してください。
うまくいけば、これが役に立ちます。
Hiveは実際に優れています ...12 か月間使用してきました... HBaseも同様です ...
RDBMS を使用していて、何を使用するか (フル テーブル スキャンまたはインデックス アクセス) を選択する必要があるとしますが、そのうちの 1 つだけです。
フル テーブル スキャンを選択する場合は、ハイブを使用します。インデックス アクセスの場合 - HBase。
Hadoop と Cassandra/HBase の比較については、この投稿をお読みください。
基本的に、HBase はスケーラビリティを備えた非常に高速な読み取りと書き込みを可能にします。どれくらい速くてスケーラブルですか? Facebookはそれを使用して、ユーザー ステータス、写真、チャット メッセージなどを管理します。HBase は非常に高速で、Facebook によって Hive 自体のデータ ストアとして HBase を使用するスタックが開発されることがあります。
As Hive はデータ ウェアハウジング ソリューションに似ています。SQL に似た構文を使用して、Hive コンテンツをクエリし、Map Reduce ジョブにすることができます。高速なトランザクション システムには適していません。
まず、HadoopがRDBMSのより高速な代替手段として作成されたことを明確にする必要があります。以前は RDBMS では多くの時間がかかっていた大量のデータを非常に高速に処理する。
ここで、次の 2 つの用語を知っておく必要があります。
構造化データ: これは、従来の RDBMS で使用されていたデータであり、明確に定義された構造に分割されています。
非構造化データ: 世界のデータの約 80% が非構造化または半構造化されていることを理解することが重要です。これらは未加工のデータであり、RDMS を使用して処理することはできません。例:フェイスブック、ツイッターのデータ。( http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html )。
そのため、ここ数年で大量のデータが生成され、そのほとんどが構造化されていないデータが HADOOP を生み出しました。これは主に、RDBMS を使用すると実行不可能な時間がかかる非常に大量のデータに使用されました。リアルタイムで比較的小さなデータに使用できないという多くの欠点がありましたが、新しいバージョンではその欠点を取り除くことができました。
先に進む前に、以前のツールで障害が発生した場合に、新しいビッグ データ ツールが作成されることをお伝えしたいと思います。したがって、作成されたどのツールも、以前のツールの問題を克服するために行われています。
Hadoopは、単純にMapreduceとHDFSの 2 つに分類できます。Mapreduce は処理が行われる場所であり、HDFS はデータが格納されるデータベースです。この構造はWORMの原則に従いました。したがって、データを HDFS に保存すると、変更を加えることができなくなります。これは、データを一度書き込んだ後でもデータを変更できる NOSQL 製品である HBASEの作成につながりました。
しかし、時間が経つにつれて、Hadoop には多くの障害があることがわかり、そのために Hadoop 構造上に別の環境を作成しました。PIG と HIVE は 2 つの一般的な例です。
HIVEは、 SQLの背景を持つ人々のために作成されました。記述されたクエリは、 HIVEQLという名前の SQL に似ています。HIVE は、完全に構造化されたデータを処理するために開発されました。ustructured データには使用されません。
一方、 PIGには独自のクエリ言語、つまりPIG LATINがあります。構造化データと非構造化データの両方に使用できます。
HIVE をいつ使うか、PIG をいつ使うかという違いに移ると、PIG のアーキテクト以外には誰も言えないと思います。リンクに従ってください: https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html
短い言葉で答えてみましょう。
Hadoop は、他のすべてのツールで構成されるエコシステムです。したがって、Hadoop を比較することはできませんが、MapReduce を比較することはできます。
ここに私の数セントがあります:
Hive、Hbase、Pig の使用は、さまざまなプロジェクトでのリアルタイムの経験に基づいています。
ハイブは主に次の目的で使用されます。
履歴データの分析を行う必要がある分析目的
特定の列に基づくビジネス レポートの生成
データをメタデータ情報と合わせて効率的に管理
バケット化の概念を使用して、頻繁に使用される特定の列でテーブルを結合する
パーティショニングの概念を使用した効率的な保存とクエリ
更新、削除などのトランザクション/行レベルの操作には役立ちません。
Pig は主に次の目的で使用されます。
膨大なデータの頻繁なデータ分析
膨大なデータの集計値/カウントの生成
エンタープライズ レベルの主要業績評価指標を頻繁に生成する
Hbase は主に使用されます。
データのリアルタイム処理用
複雑でネストされたスキーマを効率的に管理するため
リアルタイムのクエリと迅速な結果のために
列による簡単なスケーラビリティ
更新、削除などのトランザクション/行レベルの操作に役立ちます。