HadoopまたはHBaseまたはHiveを使用する利点は何ですか?
私の理解したところでは、HBase map-reduceの使用を避け、HDFSの上に列指向のストレージを持っています。 HiveはHadoopとHBaseのためのSQL風のインターフェースです。
HiveとPigの比較方法も知りたいのですが。
MapReduceは単なるコンピューティングフレームワークです。 HBaseとは関係ありません。そうは言っても、MapReduceジョブを書くことによって、HBaseとの間でデータを効率的に送受信することができます。あるいは、Javaなどの他のHBase APIを使用して順次プログラムを作成し、データを配置または取得することもできます。しかし、私たちは巨大な量のデータを扱うのにHadoop、HBaseなどを使っているので、それはあまり意味がありません。データが大きすぎる場合、通常の順次プログラムを使用することは非常に非効率的です。
あなたの質問の最初の部分に戻って、Hadoopは基本的に2つのことです:a分散ファイルシステム(HDFS)+ a計算処理フレームワーク(MapReduce)。他のすべてのFSと同様に、HDFSも私たちにストレージを提供しますが、(レプリケーションのために)高いスループットと低いデータ損失のリスクを伴うフォールトトレラントな方法です。しかし、FSであるため、HDFSはランダムな読み書きアクセスを持っていません。ここがHBaseの登場です。これは分散型でスケーラブルなビッグデータストアで、GoogleのBigTableをモデルにしています。データをキーと値のペアとして格納します。
ハイブに来る。既存のHadoopクラスターの上にデータウェアハウス機能を提供します。それに加えて、それはあなたがSQLバックグラウンドから来ている場合に備えて、あなたの仕事をより簡単にするSQLのようなインターフェースを提供します。 Hiveにテーブルを作成し、そこにデータを保存できます。それに加えて、既存のHBaseテーブルをHiveにマップして操作することもできます。
Pigは基本的にデータフロー言語なので、膨大な量のデータを非常に簡単かつ迅速に処理できます。 Pigには基本的に2つの部分があります。Pigインタプリタと言語、PigLatin 。あなたはPigLatinでPigスクリプトを書き、Pigインタプリタプロセスを使ってそれらを処理します。ブタは私たちの生活をずっと楽にします。そうでなければMapReduceを書くのはいつも簡単ではありません。実際、場合によっては、それは本当に痛みになることがあります。
私は Hadoopエコシステムのさまざまなツールの簡単な比較に関する記事 を書いていました。それは徹底的な比較ではありませんが、始めるのを助けることができるこれらのツールのそれぞれへの短いイントロです。 (私の答えに加えて。自己宣伝は意図していません)
HiveクエリとPigクエリの両方が、内部でMapReduceジョブに変換されます。
HTH
私は最近自分の会社でHive Dataプラットフォームを実装し、私が一人のチームだったので一人称で話すことができます。
私は以下のオプションをベンチマークしました。
HBaseはMapのようなものです。あなたが鍵を知っていれば、あなたは即座に価値を手に入れることができます。しかし、Hbaseの整数キーの数が1000000から2000000の間にあることを知りたい場合は、Hbaseだけには適していません。
集計、ロールアップ、行をまたいで分析するデータがある場合は、Hiveを検討します。
うまくいけば、これは役立ちます。
Hiveは実際には非常にうまく動いています...私は今、12ヶ月間住んでいます...HBase...
Hadoop は、単純なプログラミングモデルを使用して、複数のコンピュータにまたがる大きなデータセットを分散処理するためのフレームワークです。
Hadoopには4つの主要モジュールがあります。
Hadoop Common:他のHadoopモジュールをサポートする共通ユーティリティ。
Hadoop分散ファイルシステム(HDFS™):アプリケーションデータへの高スループットアクセスを提供する分散ファイルシステム。
HadoopYARN:ジョブスケジューリングとクラスタリソース管理のためのフレームワーク。
HadoopMapReduce:大規模データセットの並列処理のためのYARNベースのシステム。
先に進む前に、3種類のデータがあることに注意しましょう。
構造化:構造化データは強いスキーマを持ち、書き込みおよび読み取り操作中にスキーマがチェックされます。例えばOracle、MySQL ServerなどのRDBMSシステムのデータ.
非構造化:データは構造を持たず、Webサーバーのログ、電子メール、画像など、どのような形式でも構いません。
半構造化:データは厳密には構造化されていませんが、構造があります。例えばXMLファイル.
処理するデータの種類に応じて、適切なテクノロジを選択する必要があります。
Hadoopの一部である、さらにいくつかのプロジェクト。
HBase™:大規模テーブル用の構造化データストレージをサポートするスケーラブルな分散データベース。
Hive™:データの要約と特別な照会を提供するデータウェアハウスインフラストラクチャ。
Pig™:並列計算用の高水準データフロー言語と実行フレームワーク。
Hive Vs PIG比較はこちらで見つけることができます 記事 そしてこのSEで私の他の記事 質問 。
HBASEはMap Reduceに代わるものではありません。 HBaseはスケーラブルな分散データベースです。&Map Reduceは分散処理のためのプログラミングモデルです。データMap Reduceは処理中にHBASE内のデータに作用することがあります。
構造化/半構造化データにはHive/HBASEを使用して、Hadoop Map Reduceで処理することができます。
SQOOPを使用して、Oracle、SQL Serverなどの従来のRDBMSデータベースから構造化データをインポートし、それをHadoop Map Reduceで処理することができます。
Hadoop Map Reduceで非構造化データおよび処理を処理するには、FLUMEを使用できます。
ご覧ください。 Hadoopユースケース 。
Hiveは、一定期間にわたって収集されたデータの分析的な照会に使用する必要があります。例:傾向を計算し、ウェブサイトのログをまとめますが、リアルタイムのクエリには使用できません。
HBaseはビッグデータのリアルタイムクエリに適しています。 Facebookはメッセージングやリアルタイム分析にそれを使用します。
PIGは、データフローの構築、スケジュールされたジョブの実行、大量のデータの整理、それの集約/要約、および関係データベースシステムへの格納に使用できます。アドホック分析に適しています。
Hiveはアドホックデータ分析に使用できますが、PIGとは異なり、すべての非構造化データ形式をサポートすることはできません。
RDBMSを使用していて、使用するもの(全表スキャン、または索引アクセス)を選択する必要があることを検討してください。ただし、そのうちの1つだけです。
全表スキャンを選択した場合 - Hiveを使用してください。インデックスアクセスの場合 - HBase。
HadoopとCassandra/HBaseの比較については、こちらをお読みください post 。
基本的にHBaseはスケーラビリティを備えた本当に速い読み書きを可能にします。どれくらい速くそしてスケーラブル? Facebook ユーザーのステータス、写真、チャットメッセージなどを管理するためにそれを使用します。HBaseはとても高速なため、Hive自体のデータストアとしてHBaseを使用するためにFacebookによってスタックが開発されています。
As As Hiveはデータウェアハウスソリューションのようなものです。 SQLに似た構文を使用してHiveコンテンツを照会すると、Map Reduceジョブが生成されます。高速のトランザクションシステムには理想的ではありません。
私はLambdaアーキテクチャのリアルタイム処理とバッチロードの処理に取り組んでいました。センサーによる火災警報の送信または銀行取引の場合の不正検出の場合には、迅速な決定が必要とされる場合には、リアルタイム処理が必要とされる。 BIシステムにフィードできるデータをまとめるには、バッチ処理が必要です。
上記のアプリケーションにはHadoopエコシステムテクノロジを使用しました。
リアルタイム処理
Apache Storm:ストリームデータ処理、ルール適用
HBase:リアルタイムダッシュボード用のデータストア
バッチ処理 Hadoop:巨大なデータの塊をまとめます。 360度の概要またはイベントへのコンテキストの追加Pig、MR、Spark、Hive、Sharkなどのインターフェイスまたはフレームワークは、コンピューティングに役立ちます。この層はOozieが良い選択肢であるスケジューラを必要とします。
イベント処理層
Apache Kafkaは、センサーからの高速イベントを消費する最初の層でした。 Kafkaは、Linkedinコネクタを介してリアルタイム分析とバッチ分析の両方のデータフローを提供します。
深く理解する
Hadoop
Hadoop
はApache
財団のオープンソースプロジェクトです。これは、もともと2005年にDoug Cuttingによって開発されたJava
で書かれたフレームワークです。テキスト検索エンジンであるNutch
の配布をサポートするために作成されました。 Hadoop
は、GoogleのMap Reduce
とGoogle File System Technologiesを基盤として使用しています。
Hadoopの機能
Hadoop
は、低レイテンシではなく高スループット用です。大量のデータを処理するバッチ操作です。したがって、応答時間は即時ではありません。RDBMS
の代わりにはなりません。Hadoopのバージョン
利用可能なHadoop
には2つのバージョンがあります。
Hadoop 1.
それは2つの主要な部分があります:
1.データストレージフレームワーク
これはHadoop分散ファイルシステム(HDFS
)と呼ばれる汎用ファイルシステムです。
HDFS
はスキーマなしです
それは単にデータファイルを格納するだけであり、これらのデータファイルはほぼあらゆるフォーマットであり得る。
アイデアは、できるだけ元の形式に近いファイルを保存することです。
これにより、ビジネスユニットと組織は、実装可能なものに過度に心配することなく、必要な柔軟性と敏捷性を得ることができます。
2.データ処理フレームワーク
これは、Googleによって最初はMapReduce
として普及した単純な関数型プログラミングモデルです。
データを処理するために、基本的に2つの関数MAP
およびREDUCE
を使用します。
「マッパー」は、キーと値のペアのセットを受け取り、中間データ(別のキーと値のペアのリスト)を生成します。
次に、 "Reducers"がこの入力に作用して出力データを生成します。
この2つの機能は相互に独立して機能しているように見えるため、処理を高度に並列化し、フォールトトレランスとスケーラブルな方法で高度に分散させることができます。
Hadoop 1.0の制限
最初の制限はMapReduce
プログラミングの専門知識の要件でした。
ログ分析、大規模データマイニングプロジェクトなどのタスクには適していますが、他の種類のプロジェクトにはほとんど適していないバッチ処理のみをサポートしていました。
1つの大きな制限はHadoop 1.0
がMapReduce
と計算上密接に結び付いているということでした。
MapReduce
で実行できるように、それらの機能をHadoop
に書き換えるか、または
HDFS
からデータを抽出するか、Hadoop
の外部で処理します。
データがHadoop
クラスターの内外に移動されることによってプロセスが非効率になるため、どのオプションも実行可能ではありませんでした。
Hadoop 2.
Hadoop 2.0
では、HDFS
は引き続きデータストレージフレームワークです。
ただし、Y et A nother R esource _ n _)と呼ばれる新しい独立したリソース管理フレームワーク egotiater(YARN)が追加されました。
並列タスクに分割できるアプリケーションはすべて、YARNによってサポートされています。
YARNは、送信されたアプリケーションのサブタスクの割り当てを調整し、それによってアプリケーションの柔軟性、スケーラビリティ、および効率性をさらに高めます。
Job Trackerの代わりにApplication Masterを使用して、new Node Managerで管理されているリソースでアプリケーションを実行することで機能します。
ApplicationMasterはMapReduce
だけでなく、あらゆるアプリケーションを実行できます。
つまり、バッチ処理だけでなくリアルタイム処理もサポートされています。 MapReduce
は、もはや唯一のデータ処理オプションではありません。
Hadoopの利点
ネイティブからデータを保存します。データのキー入力やデータの保存中に課される構造はありません。 HDFS
はスキーマレスです。構造が生データに課されるのは、データを処理する必要があるときになって初めてです。
それはスケーラブルです。 Hadoop
は、並行して動作する何百もの安価なサーバーに、非常に大きなデータセットを格納して配布することができます。
失敗に対して回復力があります。 Hadoop
はフォールトトレランスです。つまり、データが任意のノードに送信されるたびに、同じデータがクラスタ内の他のノードにも複製されるため、ノードに障害が発生した場合に使用できるデータの別のコピーが必ず存在します。
それは柔軟です。 Hadoop
の主な利点の1つは、構造化データ、非構造化データ、または半構造化データなど、あらゆる種類のデータを処理できることです。また、 "コードをデータに移動する"パラダイムにより、Hadoop
の処理は非常に高速です。
Hadoopエコシステム
以下はHadoop
エコシステムのコンポーネントです。
HDFS:Hadoop
分散ファイルシステム。可能な限り元の形式にできるだけ近い場所にデータファイルを格納するだけです。
HBase:これはHadoopのデータベースで、RDBMS
とよく比較されます。大きなテーブル用の構造化データストレージをサポートします。
Hive:これは、標準のANSI SQL
に非常によく似た言語を使用して大きなデータセットの分析を可能にします。これは、SQL
を使う人なら誰でもHadoop
クラスター上のデータにアクセスできるはずです。
Pig:理解しやすいデータフロー言語です。それはHadoop
と並ぶ大規模なデータセットの分析に役立ちます。 Pig
スクリプトは、MapReduce
インタプリタによって自動的にPig
ジョブに変換されます。
ZooKeeper:分散アプリケーション向けの調整サービスです。
Oozie:Apacheのschedular
ジョブを管理するためのワークフローのHadoop
システムです。
Mahout:スケーラブルな機械学習とデータマイニングのライブラリです。
Chukwa:大規模分散システムを管理するためのデータ収集システムです。
Sqoop:Hadoop
とリレーショナルデータベースなどの構造化データストアの間でバルクデータを転送するために使用されます。
Ambari:これは、_ Hadoop
_クラスターをプロビジョニング、管理、および監視するためのWebベースのツールです。
ハイブ
Hive
は、Hadoop
内の構造化データを処理するためのデータウェアハウスインフラストラクチャツールです。それはビッグデータを要約するためにHadoop
の上に存在し、問い合わせと分析を容易にします。
巣箱はありません
リレーショナルデータベース
オンライン取引処理(OLTP
)のための設計。
リアルタイムの問い合わせと行レベルの更新のための言語。
ハイブの特長
スキーマをデータベースに格納し、処理したデータをHDFS
に格納します。
これはOLAP
用に設計されています。
それはSQL
またはHiveQL
と呼ばれる問い合わせのためのHQL
型言語を提供します。
それは、より家族的で、速く、スケーラブルで、そして拡張可能です。
ハイブアーキテクチャ
Hive Architectureには、以下のコンポーネントが含まれています。
ユーザーインターフェース:Hive
は、ユーザーとHDFS
の間の対話を作成できるdata warehouse
インフラストラクチャです。 Hive
がサポートするユーザーインターフェースは、Hive Web UI、Hiveコマンドライン、およびHive HD Insight(Windows Serverの場合)です。
MetaStore:Hive
はそれぞれのdatabase
_servers
を選択して、テーブル、データベース、テーブル内の列、それらのデータ型、およびMetadata
マッピングのスキーマまたはHDFS
を格納します。
HiveQL Process Engine:HiveQL
は、SQL
のスキーマ情報を照会するためのMetastore
と似ています。それはMapReduce
プログラムのための伝統的なアプローチの置き換えの一つです。 MapReduce
にJava
を書く代わりに、MapReduce
に対するクエリを書いて処理することができます。
Exceution Engine:HiveQL
プロセスエンジンとMapReduce
の結合部分はHive
実行エンジンです。実行エンジンはクエリを処理し、MapReduce results
と同じ結果を生成します。それはMapReduce
の風味を使います。
HDFSまたはHBase:Hadoop
分散ファイルシステムまたはHBase
は、ファイルシステムにデータを保存するためのデータ保存方法です。
まず最初に、HadoopがRDBMSの代わりとして作成されたことを明確にしておく必要があります。以前はRDBMSで多くの時間を要していた非常に速い速度で大量のデータを処理すること。
今2つの用語を知っているはずです。
構造化データ:これは、従来のRDBMSで使用していたデータで、明確に定義された構造に分割されています。
非構造化データ:これは理解するのに重要です。世界のデータの約80%が非構造化または半構造化です。これらは、そのままの形式のデータであり、RDMSを使用して処理することはできません。例:facebook、Twitterのデータ( http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html )。
そのため、ここ数年で大量のデータが生成され、そのデータはほとんど構造化されていなかったため、HADOOPが生まれました。これは主に、RDBMSを使用して実行不可能な時間を要する非常に大量のデータに使用されていました。それは多くの欠点を持っていました、それはそれがリアルタイムで比較的小さいデータのために使われることができなかったということです、しかし、彼らは新しいバージョンでその欠点を取り除くことに成功しました。
先に進む前に、以前のツールで問題が発生したときに新しいビッグデータツールが作成されることを伝えたいと思います。それで、あなたがそれが作成するのを見るであろうツールは前のツールの問題を克服するためにされました。
Hadoopは、単純に2つのこととして言えます。MapreduceおよびHDFS。 Mapreduceは処理が行われる場所であり、HDFSはデータが格納されるデータベースです。この構造は、WORMprincipalの後に続きます。つまり、1回の書き込みを複数回読み取ります。そのため、いったんHDFSにデータを格納すると、変更を加えることはできません。これによりHBASEが作成されました。NOSQL製品では、一度書き込んだ後でもデータを変更できます。
しかし、時間が経つにつれてHadoopには多くの欠点があり、そのためにHadoop構造上に異なる環境を作成したことがわかりました。 PIGとHiveは2つの一般的な例です。
Hiveは、SQLbackgroundを持つ人々のために作成されました。作成されたクエリは、HIVEQLという名前のSQLに似ています。 Hiveは、構造化データを完全に処理するように開発されました。使用されていないデータには使用されません。
一方、PIGには独自のクエリ言語、つまりPIG LATINがあります。structuredおよびunstructured dataの両方に使用できます。
Hiveを使用する時期とPIGを使用する時期の違いに移っても、PIGの設計者以外は誰にも言えないと思います。リンクをたどってください: https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html
このスレッドは、特にHBaseとPigを特に正当化していないと思います。 Hadoopは、ビッグデータレイク実装用の分散された復元力のあるファイルシステムの選択であると思いますが、HBaseとHiveの間の選択は特に明確に分離されています。
同様に、多くのユースケースには、SQLライクまたはNo-SQLライクなインターフェースの特定の要件があります。 PhoenixはHBaseの上にあるので、SQLのような機能は確かに達成できますが、パフォーマンス、サードパーティの統合、ダッシュボードの更新は一種の苦痛な経験です。ただし、水平スケーリングが必要なデータベースには最適な選択です。
Pigは、計算やETLパイプラインのような非再帰的バッチ(特に、Sparkを快適な距離で上回る場所)に最適です。また、高レベルのデータフローの実装は、バッチクエリとスクリプト作成に最適です。 PigとHiveの選択は、クライアント側またはサーバー側のスクリプトの必要性、必要なファイル形式などにも依存します。Pigは、Hiveの場合には当てはまらないAvroファイル形式をサポートします。 「手続き型データフロー言語」と「宣言型データフロー言語」の選択も、pigとHiveの選択の強力な議論です。
Pigでデータをクレンジングするのはとても簡単です。PigでデータをクレンジングしてからHiveでデータを処理し、後でそれをhdfsにアップロードするのが適切な方法です。
Pig:ファイルを処理してデータを消去することをお勧めします。例:null値の削除、文字列の取り扱い、不要な値
少し答えてみましょう。
Hadoopは他のすべてのツールで構成されるエコシステムです。したがって、Hadoopと比較することはできませんが、MapReduceと比較することはできます。
これが私の数セントです。
1.私たちは、txt、csvのようなフォームファイルフォーマットで大きなデータ(すなわち、構造、非構造および半構造データ)を格納するためにHadoopを使用しています。
2.データに円柱状の更新が必要な場合はHbaseツールを使用しています
3. Hiveの場合、Bigデータを構造化形式で保存し、それに加えてそのデータに対してAnalysisを提供します。
4.Pigは、Pigラテン言語を使用して任意の形式(構造、半構造、および非構造)のデータを分析するツールです。
Hive、HbaseおよびPig w.r.t.の使用さまざまなプロジェクトでの私の実時間経験。
Hiveは主に次の目的で使用されます。
履歴データを分析する必要がある場合の分析目的
特定の列に基づいてビジネスレポートを生成する
メタデータ情報とともにデータを効率的に管理する
バケットコンセプトを使用して頻繁に使用される特定の列でテーブルを結合する
分割概念を使用した効率的な格納と照会
更新、削除などのトランザクション/行レベルの操作には役立ちません。
豚は主に使用されています:
巨大データに関する頻繁なデータ分析
巨大データの集計値/集計数の生成
企業レベルの主要業績評価指標を非常に頻繁に生成する
Hbaseが主に使用されています。
データのリアルタイム処理用
複合スキーマおよびネストしたスキーマを効率的に管理するため
リアルタイムの問い合わせとより速い結果のために
列を使って簡単に拡張できる
更新、削除などのトランザクション/行レベルの操作に役立ちます。
この質問に対する短い答えは-
Hadoop-分散ファイルシステムとプログラミングモデルを容易にするフレームワークです。これにより、膨大なサイズのデータを格納し、従来のアプローチと比較して非常に効率的かつ非常に短い処理時間でデータを分散方式で処理できます。
(HDFS-Hadoop分散ファイルシステム)(Map Reduce-分散処理のプログラミングモデル)
Hive-非常に人気のあるSQLのような方法でHadoop分散ファイルシステムからデータを読み書きできるクエリ言語です。これにより、Hiveがサポートされていない非常に複雑なシナリオを除き、Map-Reduceプログラムを作成する必要がなくなるため、プログラミングを行っていない多くのバックグラウンドユーザーの生活が楽になりました。
Hbase-Columnar NoSQLデータベースです。 Hbaseの基礎となるストレージレイヤーもHDFSです。このデータベースの最も重要な使用例は、数十億行と数百万列を格納できることです。 Hbaseの低遅延機能は、分散データを介したレコードの高速でランダムなアクセスに役立ち、Recommender Engineなどの複雑なプロジェクトに役立つ非常に重要な機能です。また、レコードレベルのバージョン管理機能により、ユーザーはトランザクションデータを非常に効率的に保存できます(これにより、HDFSとHiveで記録を更新する問題が解決します)。
これが上記の3つの機能をすばやく理解するのに役立つことを願っています。