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には基本的に2つの部分があります。Pig インタープリターと言語、PigLatinです。PigスクリプトをPigLatinで記述し、Pigインタープリターを使用してそれらを処理します。Pigは私たちの生活をはるかに簡単にします。実際、いくつかのケースでは、それは本当に痛みになる可能性があります。
少し前に、Hadoopエコシステムのさまざまなツールの簡単な比較に関する記事を書きました。これは詳細な比較ではありませんが、開始するのに役立つこれらの各ツールの簡単な紹介です。(私の答えに追加するだけです。自己宣伝は意図されていません)
HiveとPigの両方のクエリは、内部でMapReduceジョブに変換されます。
HTH
yarn
たHadoopエコシステムに:(。
私は最近会社にHive Dataプラットフォームを実装しました。私は一人のチームだったので、一人称でそれを話すことができます。
次のオプションをベンチマークしました。
HBaseはマップのようなものです。キーを知っていれば、すぐに値を取得できます。しかし、Hbaseの整数キーの数が1000000から2000000の範囲にあることを知りたい場合は、Hbaseだけには適していません。
行全体で集計、ロールアップ、分析する必要があるデータがある場合は、Hiveを検討してください。
うまくいけば、これが役立ちます。
Hiveは実際に揺れています...わかっています。今から12か月間住んでいます... HBaseもそうです...
Hadoopは、単純なプログラミングモデルを使用して、コンピューターのクラスター全体で大規模なデータセットの分散処理を可能にするフレームワークです。
Hadoopには4つのメインモジュールがあります。
Hadoop Common:他のHadoopモジュールをサポートする一般的なユーティリティ。
Hadoop分散ファイルシステム(HDFS™):アプリケーションデータへの高スループットアクセスを提供する分散ファイルシステム。
Hadoop YARN:ジョブスケジューリングとクラスターリソース管理のためのフレームワーク。
Hadoop MapReduce:大きなデータセットを並列処理するためのYARNベースのシステム。
先に進む前に、3つの異なるタイプのデータがあることに注意してください。
構造化:構造化データには強力なスキーマがあり、スキーマは書き込みおよび読み取り操作中にチェックされます。たとえば、Oracle、MySQLサーバーなどのRDBMSシステム内のデータ。
非構造化:データには構造がなく、Webサーバーログ、電子メール、画像など、どのような形式でもかまいません。
半構造化:データは厳密に構造化されていませんが、構造化されています。例:XMLファイル。
処理するデータの種類に応じて、適切なテクノロジを選択する必要があります。
Hadoopの一部であるさらにいくつかのプロジェクト:
HBase™:大きなテーブルの構造化データストレージをサポートするスケーラブルな分散データベース。
Hive ™:データの要約とアドホッククエリを提供するデータウェアハウスインフラストラクチャ。
Pig™:並列計算のための高水準データフロー言語および実行フレームワーク。
HiveとPIGの比較については、この記事と、このSEの質問に関する他の投稿を参照してください。
HBASEはMap Reduceに置き換わるものではありません。HBaseはスケーラブルな分散データベースであり、Map Reduceはデータの分散処理のためのプログラミングモデルです。Map Reduceは、処理中にHBASEのデータに作用する場合があります。
あなたは使用することができますHIVE / HBaseのを構造化/半構造化データのためにとHadoopの地図でそれを処理削減します
SQOOPを使用して、従来のRDBMSデータベースOracle、SQL Serverなどから構造化データをインポートし、Hadoop Map Reduceで処理できます。
FLUMEを使用して、非構造化データを処理し、Hadoop Map Reduceで処理できます。
:見ていHadoopのユースケースを。
Hiveは、一定期間に収集されたデータの分析クエリに使用する必要があります。例:傾向を計算し、ウェブサイトのログを要約しますが、リアルタイムのクエリには使用できません。
HBaseは、ビッグデータのリアルタイムクエリに適しています。Facebookはそれをメッセージングとリアルタイム分析に使用します。
PIGは、データフローの構築、スケジュールされたジョブの実行、大量のデータのクランチ、データの集約/要約、および関係データベースシステムへの格納に使用できます。アドホック分析に適しています。
Hiveはアドホックデータ分析に使用できますが、PIGとは異なり、すべての非構造化データ形式をサポートすることはできません。
RDBMSを使用していて、使用するもの(全表スキャン、または索引アクセス)を選択する必要があるが、そのうちの1つだけを選択することを検討してください。
全表スキャンを選択した場合-ハイブを使用します。インデックスアクセスの場合-HBase。
HadoopとCassandra / HBaseの比較については、この投稿を参照してください。
基本的に、HBaseはスケーラビリティを備えた非常に高速な読み取りと書き込みを可能にします。どれほど高速でスケーラブルですか?Facebookはこれを使用して、ユーザーステータス、写真、チャットメッセージなどを管理します。HBaseは非常に高速で、Hive自体のデータストアとしてHBaseを使用するスタックがFacebookによって開発されている場合があります。
As As Hiveは、データウェアハウジングソリューションに似ています。SQLと同様の構文を使用して、Hiveコンテンツをクエリし、Map Reduceジョブを実行できます。高速なトランザクションシステムには理想的ではありません。
私は、ラムダアーキテクチャ処理のリアルタイムおよびバッチロードに取り組みました。センサーによる火災警報の送信の場合、または銀行取引の場合の詐欺検出の場合、迅速な決定を行う必要がある場合は、リアルタイム処理が必要です。バッチ処理は、BIシステムにフィードできるデータを要約するために必要です。
上記のアプリケーションにはHadoopエコシステムテクノロジーを使用しました。
リアルタイム処理
Apache Storm:ストリームデータ処理、ルールアプリケーション
HBase:リアルタイムダッシュボードを提供するためのデータストア
Hadoopのバッチ処理:大量のデータを処理します。360度の概要またはイベントへのコンテキストの追加。Pig、MR、Spark、Hive、Sharkなどのインターフェースまたはフレームワークがコンピューティングを支援します。このレイヤーには、Oozieが適切なオプションであるスケジューラが必要です。
イベント処理レイヤー
Apache Kafkaは、センサーからの高速イベントを消費する最初のレイヤーでした。Kafkaは、Linkedinコネクタを介して、リアルタイム分析とバッチ分析の両方のデータフローを提供します。
深く理解する
Hadoop
Hadoop
Apache
財団のオープンソースプロジェクトです。これはで書かれたフレームワークでJava
、もともとは2005年にDoug Cutingによって開発されました。Nutch
テキスト検索エンジンの配布をサポートするために作成されました。Hadoop
Google Map Reduce
およびGoogleファイルシステムテクノロジーを基盤として使用しています。
Hadoopの機能
Hadoop
低レイテンシではなく高スループット用です。これは、大量のデータを処理するバッチ操作です。したがって、応答時間は即時ではありません。RDBMS
。Hadoopのバージョン
Hadoop
利用可能なの2つのバージョンがあります:
Hadoop 1.0
2つの主要な部分があります。
1.データストレージフレームワーク
これは、Hadoop分散ファイルシステム(HDFS
)と呼ばれる汎用ファイルシステムです。
HDFS
スキーマレスです
データファイルを格納するだけで、これらのデータファイルはほぼすべての形式にすることができます。
考えられるのは、ファイルを元の形式にできるだけ近づけて保存することです。
これにより、ビジネスユニットと組織は、何を実装できるかについて過度に心配することなく、非常に必要な柔軟性と俊敏性を提供します。
2.データ処理フレームワーク
これは、当初Googleによってとして普及したシンプルな関数型プログラミングモデルMapReduce
です。
それは本質的に2つの機能を使用します:MAP
とREDUCE
データを処理するため。
「マッパー」は、キーと値のペアのセットを受け取り、中間データ(キーと値のペアの別のリスト)を生成します。
「リデューサー」は、この入力に基づいて出力データを生成します。
2つの機能は互いに分離して機能しているように見えるため、処理を高度に並列化し、フォールトトレランスとスケーラブルな方法で高度に分散させることができます。
Hadoop 1.0の制限
最初の制限は、MapReduce
プログラミングの専門知識の要件でした。
ログ分析、大規模データマイニングプロジェクトなどのタスクには適していますが、他の種類のプロジェクトにはほとんど適していません。
主要な制限の1つは、Hadoop 1.0
と緊密に計算的に結合されることでしたMapReduce
。これは、確立されたデータ管理ベンダーが2つの意見を残したことを意味します。
またはMapReduce
で実行できるように、機能を書き直します。Hadoop
からデータを抽出するHDFS
か、外部で処理しHadoop
ます。
データがHadoop
クラスターに出入りすることによりプロセスの非効率性が発生するため、実行可能なオプションはありませんでした。
Hadoop 2.0
でHadoop 2.0
、HDFS
引き続きデータストレージフレームワークです。
ただし、Y et A nother R esource N egotiater(YARN)と呼ばれる別個の新しいリソース管理フレームワークが追加されています。
自身を並列タスクに分割できるアプリケーションは、YARNでサポートされています。
YARNは、送信されたアプリケーションのサブタスクの割り当てを調整することで、アプリケーションの柔軟性、スケーラビリティ、および効率をさらに向上させます。
これは、ジョブトラッカーの代わりにアプリケーションマスターを配置し、新しいノードマネージャーによって管理されるリソースでアプリケーションを実行することで機能します。
ApplicationMasterは、あらゆるアプリケーションを実行できます。 MapReduce
。
つまり、バッチ処理だけでなく、リアルタイム処理もサポートしています。MapReduce
は唯一のデータ処理オプションではなくなりました。
Hadoopの利点
ネイティブのデータを格納します。データのキー入力またはデータの保存中に課される構造はありません。HDFS
スキーマレスです。構造が生データに課されるのは、後でデータを処理する必要があるときだけです。
スケーラブルです。Hadoop
は、並列に動作する数百の安価なサーバー全体に非常に大きなデータセットを格納して配布できます。
障害に対して回復力があります。Hadoop
耐障害性です。これは、データの複製をこまめに実行することを意味します。つまり、データが任意のノードに送信されるたびに、同じデータがクラスター内の他のノードにも複製されるため、ノードに障害が発生した場合でも、常に使用可能なデータの別のコピーが確実に存在します。
柔軟です。の主な利点の1つはHadoop
、構造化データ、非構造化データ、半構造化データなど、あらゆる種類のデータを処理できることです。また、Hadoop
「コードをデータに移動する」パラダイムにより、処理は非常に高速です。
Hadoopエコシステム
Hadoop
エコシステムのコンポーネントは次のとおりです。
HDFS:Hadoop
分散ファイルシステム。データファイルをできるだけ元のフォームにできるだけ近づけて保存するだけです。
HBase:これはHadoopのデータベースであり、とよく比較されますRDBMS
。大きなテーブルの構造化データストレージをサポートします。
Hive:standard ANSI SQL
と非常によく似た言語を使用して大規模なデータセットの分析を可能SQL
にしHadoop
ます。つまり、使い慣れた人なら誰でもクラスター上のデータにアクセスできるはずです。
Pig:理解しやすいデータフロー言語です。大規模なデータセットの分析に役立ちますHadoop
。Pig
スクリプトはインタープリターMapReduce
によって自動的にジョブに変換されPig
ます。
ZooKeeper:分散アプリケーションの調整サービスです。
Oozie:schedular
Apache Hadoop
ジョブを管理するワークフローシステムです。
Mahout:スケーラブルな機械学習およびデータマイニングライブラリです。
Chukwa:大規模分散システムを管理するためのデータ収集システムです。
Sqoop:Hadoop
リレーショナルデータベースなどの構造化データストアとの間でバルクデータを転送するために使用されます。
Ambari:これは、Hadoop
クラスターのプロビジョニング、管理、監視のためのWebベースのツールです。
ハイブ
Hive
は、で構造化データを処理するためのデータウェアハウスインフラストラクチャツールですHadoop
。Hadoop
ビッグデータをまとめるために上に常駐し、クエリと分析を容易にします。
ハイブは
リレーショナルデータベース
オンライントランザクション処理の設計(OLTP
)。
リアルタイムクエリと行レベルの更新のための言語。
Hiveの機能
データベースにスキーマを保存し、データを処理しますHDFS
。
それはのために設計されていOLAP
ます。
orをSQL
呼び出すための型言語を提供します。HiveQL
HQL
使いやすく、高速で、スケーラブルで拡張可能です。
Hiveアーキテクチャ
次のコンポーネントがHiveアーキテクチャに含まれています。
ユーザーインターフェイスは:Hive
あるdata warehouse
ユーザーとの間の相互作用を作成することができますインフラHDFS
。Hive
サポートするユーザーインターフェイスは、Hive Web UI、Hiveコマンドライン、およびHive HD Insight(Windows Serverの場合)です。
MetaStore:スキーマまたはテーブル、データベース、テーブル内の列、それらのデータ型、およびマッピングを格納するためにHive
それぞれdatabase
servers
を選択します。Metadata
HDFS
HiveQLプロセスエンジン:のスキーマ情報のクエリにHiveQL
似てSQL
いますMetastore
。これは、MapReduce
プログラムの従来のアプローチの置き換えの1つです。代わりに書き込むのMapReduce
ではJava
、我々はのためのクエリを書くことができますMapReduce
し、それを処理します。
実行エンジン: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は、MapreduceとHDFSの 2つと簡単に言えます。Mapreduceは処理が行われる場所であり、HDFSはデータが格納されるデータベースです。この構造はWORMプリンシパルに従いました。したがって、HDFSにデータを保存すると、変更を加えることはできません。これは、の創出につながっHBaseの、我々はまた、一度それを書いた後、データの変更を行うことができますNOSQL製品。
しかし、時間の経過とともに、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は比較できます。
これが私の数セントです:
Pig:ファイルを処理してデータをクリーニングする方が良い例:null値の削除、文字列の処理、不要な値Hive:クリーニングされたデータのクエリ用
Hive、Hbase、Pigを使用して、さまざまなプロジェクトでのリアルタイムの経験をしました。
ハイブは主に次の目的で使用されます。
履歴データの分析が必要な分析目的
特定の列に基づくビジネスレポートの生成
メタデータ情報とともにデータを効率的に管理する
バケットの概念を使用して頻繁に使用される特定の列のテーブルを結合する
パーティショニングの概念を使用した効率的な保存とクエリ
更新、削除などのトランザクション/行レベルの操作には役立ちません。
豚は主に以下のために使用されます:
膨大なデータの頻繁なデータ分析
巨大なデータの集計値/カウントを生成する
エンタープライズレベルの主要業績評価指標を非常に頻繁に生成する
Hbaseは主に使用されます:
データのリアルタイム処理用
複雑でネストされたスキーマを効率的に管理するため
リアルタイムのクエリとより高速な結果
カラムで簡単に拡張可能
更新、削除などのトランザクション/行レベルの操作に役立ちます。
この質問への短い答えは-
Hadoop-巨大なサイズのデータを格納し、従来のアプローチと比較して非常に少ない処理時間で非常に効率的に分散データを処理できるようにする分散ファイルシステムとプログラミングモデルを容易にするフレームワークです。
(HDFS-Hadoop分散ファイルシステム)(Map Reduce-分散処理のプログラミングモデル)
Hive-Hadoop分散ファイルシステムからデータを非常に人気のあるSQLのような方法で読み書きできるクエリ言語です。これにより、Hiveがサポートされていない非常に複雑なシナリオを除いて、Map-Reduceプログラムを作成する必要がなくなるため、プログラミングを行わない多くのバックグラウンドユーザーの生活が楽になります。
Hbase-カラムNoSQLデータベースです。Hbaseの基礎となるストレージレイヤーもHDFSです。このデータベースの最も重要なユースケースは、数百万の列を持つ数十億の行を格納できるようにすることです。Hbaseの低レイテンシー機能は、分散データを介したレコードへのより高速でランダムなアクセスに役立ちます。これは、Recommender Engineなどの複雑なプロジェクトで役立つようにするための非常に重要な機能です。また、レコードレベルのバージョン管理機能により、トランザクションデータを非常に効率的に保存できます(これにより、HDFSとHiveでレコードを更新する問題が解決されます)。
これが上記の3つの機能をすばやく理解するのに役立つことを願っています。
このスレッドは、特にHBaseとPigに対して特に正義を行っていないと思います。私はHadoopがビッグデータレイク実装のための分散型の復元力のあるファイルシステムの選択であると信じていますが、HBaseとHiveの間の選択は特によく分離されています。
同様に、多くのユースケースには、SQLに似たインターフェースまたはNo-SQLに似たインターフェースの特定の要件があります。HBaseの上にPhoenixがあれば、SQLのような機能は確かに実現可能ですが、パフォーマンス、サードパーティの統合、ダッシュボードの更新は一種の苦痛な体験です。ただし、水平スケーリングが必要なデータベースには最適です。
Pigは特に、計算やETLパイプライン処理などの非再帰的なバッチに適しています(どこかで、Sparkよりも快適な距離でパフォーマンスが向上します)。また、高レベルのデータフローの実装は、バッチクエリとスクリプトの優れた選択肢です。PigとHiveのどちらを選択するかは、クライアント側またはサーバー側のスクリプトの必要性、必要なファイル形式などにも影響します。Pigは、Hiveの場合には当てはまらないAvroファイル形式をサポートしています。「手続き型データフロー言語」と「宣言型データフロー言語」のどちらを選択するかも、豚と巣箱のどちらを選択するかを強く主張します。