Hiveは、ビジネスで広く使用されているビッグデータ分析ツールであり、ビッグデータを初めて使用する場合は、開始するのに最適な場所です。 このApacheHiveのレッスンでは、Apache Hiveの基本、Hiveが必要な理由、その機能、およびその他の知っておくべきすべてのことについて説明します。
まず、ApacheHiveが構築されているHadoopフレームワークを理解しましょう。
Apache Hadoopの
ApacheHadoopは無料で オープンソースの ギガバイトからペタバイトまでのサイズの大きなデータセットを保存および処理するためのプラットフォーム。 Hadoopを使用すると、XNUMX台の大型コンピューターでデータを保存および分析する必要がなく、多数のコンピューターをクラスター化して膨大なデータセットを並行して分析できます。
MapReduceとHadoop分散ファイルシステムは、次のXNUMXつのコンポーネントです。
- MapReduce – MapReduceは、コモディティハードウェアクラスター上の大量の組織化、半構造化、および非構造化データを処理するための並列プログラミング手法です。
- HDFS – HDFS(Hadoop分散ファイルシステム)は、データを保存および処理するHadoopフレームワークコンポーネントです。 これは、標準のハードウェアで実行されるフォールトトレラントなファイルシステムです。
Sqoop、Pig、Hiveなど、Hadoopエコシステムのさまざまなサブプロジェクト(ツール)を使用して、Hadoopモジュールを支援します。
- ハイブ – Hiveは、MapReduce計算を実行するSQLスタイルのスクリプトを作成するためのフレームワークです。
- 豚 – Pigは、MapReduceプロセスのスクリプトを作成するために使用できる手続き型プログラミング言語です。
- スクープ – Sqoopは、HDFSとRDBMSの間でデータをインポートおよびエクスポートするためのツールです。
何ですか ApacheHive?
ApacheHiveはオープンソースです データウェアハウス Apache Hadoop分散ファイルシステム(HDFS)またはApache HBaseなどの他のデータストレージシステムに直接保存されている巨大なデータセットを読み取り、書き込み、および管理するためのプログラム。
SQL開発者は、Hiveを使用して、通常のSQLステートメントに相当するデータクエリおよび分析用のHiveクエリ言語(HQL)ステートメントを作成できます。 これは、長いJavaコードを学習して記述する必要をなくすことにより、MapReduceプログラミングを容易にするために作成されました。 代わりに、HQLでクエリを作成すると、Hiveがマップを作成し、関数を減らします。
Apache HiveのSQLに似たインターフェースは、アドホック検索を実行し、Hadoopデータを要約し、分析するためのゴールドスタンダードになりました。 クラウドに含まれる場合 コンピューティングネットワーク、このソリューションは特に費用対効果が高く、スケーラブルです。そのため、NetflixやAmazonを含む多くの企業が、ApacheHiveの開発と改善を続けています。
歴史
Facebookにいる間、JoydeepSenSarmaとAshishThusooはApacheHiveを共同作成しました。 彼らは両方とも、Hadoopを最大限に活用するには、かなり複雑なJavaMap-Reduceタスクを作成する必要があることを認識していました。 彼らは、急速に拡大しているエンジニアリングチームと分析チームに、会社全体でHadoopを活用するために必要なスキルを教育することはできないだろうと認識していました。 エンジニアやアナリストは、SQLをユーザーインターフェイスとして頻繁に利用していました。
SQLは分析のニーズの大部分を満たすことができますが、開発者はHadoopのプログラマビリティを組み込むことも意図していました。 Apache Hiveは、次のXNUMXつの目的から生まれました。SQLベースの宣言型言語であり、SQLが十分でない場合に開発者が独自のスクリプトやプログラムを取り込むこともできます。
また、データ駆動型組織の構築を容易にするために、社内のすべてのデータセットに関する一元化されたメタデータ(Hadoopベース)を保持するために開発されました。
Apache Hiveはどのように機能しますか?
簡単に言うと、Apache Hiveは、HiveQL(SQLのような)言語で記述された入力プログラムをXNUMXつ以上のJava MapReduce、Tez、またはSparkタスクに変換します。 (これらの実行エンジンはすべてHadoop YARNと互換性があります。)その後、Apache HiveはデータをHadoop分散ファイルシステムHDFSのテーブルに配置し、クラスター上でタスクを実行して回答を取得します。
且つ
Apache Hiveテーブルは、リレーショナルデータベースのテーブルが編成されるのと同じ方法で配置され、データユニットのサイズは大きいものから小さいものまでさまざまです。 データベースは、部門に分割されたテーブルで構成されており、さらにバケットに分割されています。 HiveQL(Hive Query Language)は、変更または追加できるデータにアクセスするために使用されます。 テーブルデータは各データベース内でシリアル化され、各テーブルには独自のHDFSディレクトリがあります。
アーキテクチャ
次に、Hiveアーキテクチャの最も重要な側面について説明します。 ApacheHiveのコンポーネントは次のとおりです。
メタストア —構造や場所など、各テーブルに関する情報を追跡します。 パーティションのメタデータも同様にHiveに含まれています。 これにより、ドライバーはクラスター全体に分散しているさまざまなデータセットの進行状況を追跡できます。 データは従来のRDBMS形式で保存されます。 Hiveメタデータは、ドライバーがデータを追跡するために非常に重要です。 バックアップサーバーは定期的にデータを複製するため、データが失われた場合にデータを回復できます。
ドライバ – HiveQLステートメントは、コントローラーとして機能するドライバーによって受信されます。 セッションを確立することにより、ドライバーはステートメントの実行を開始します。 エグゼクティブの寿命と進捗状況を追跡します。 HiveQLステートメントの実行中に、ドライバーは必要なメタデータを保存します。 また、Reduceプロセスに続くデータまたはクエリ結果の収集ポイントとしても機能します。
コンパイラ –HiveQLクエリのコンパイルを実行します。 これで、クエリが実行プランに変換されます。 タスクは計画にリストされています。 また、クエリによって変換された結果を取得するためにMapReduceが実行する必要のある手順も含まれています。 クエリは、Hiveのコンパイラ(AST)によって抽象構文ツリーに変換されます。 互換性とコンパイル時の障害(DAG)をチェックした後、ASTを有向非巡回グラフに変換します。
オプティマイザ –実行プランにさまざまな変更を加えることでDAGを最適化します。 変換を組み合わせて、結合のパイプラインを単一の結合に変えるなど、効率を向上させます。 速度を向上させるために、オプティマイザーは、削減操作を実行する前にデータに変換を適用するなどのアクティビティを分割する場合があります。
執行者 –エグゼキュータは、コンパイルと最適化が終了したときにタスクを実行します。 ジョブはエグゼキュータによってパイプライン化されます。
CLI、UI、およびThrift Server –コマンドラインインターフェイス(CLI)は、外部ユーザーがHiveと通信できるようにするユーザーインターフェイスです。 JDBCまたはODBCプロトコルと同様のHiveの節約サーバーにより、外部クライアントはネットワークを介してHiveと通信できます。
セキュリティ
Apache Hiveは、クライアント/サーバー相互認証にKerberosを使用するHadoopセキュリティと統合されています。 HDFSは、Apache Hiveで新しく生成されたファイルのアクセス許可を指示し、ユーザー、グループなどによる承認を可能にします。
主な特徴
- Hiveは外部テーブルをサポートしているため、HDFSに保存せずにデータを処理できます。
- また、テーブルレベルでのデータのセグメンテーションが可能になり、速度が向上します。
- Apache Hiveは、Hadoopの低レベルのインターフェースのニーズをうまく満たします。
- Hiveを使用すると、データの要約、クエリ、および分析が簡単になります。
- HiveQLにはプログラミングスキルは必要ありません。 SQLクエリを簡単に理解するだけで十分です。
- Hiveを使用して、データ分析のためのアドホッククエリを実行することもできます。
- スケーラブルで、使い慣れており、適応性があります。
- HiveQLにはプログラミングスキルは必要ありません。 SQLクエリを簡単に理解するだけで十分です。
福利厚生
Apache Hiveは、XNUMX日の終わりのレポート、毎日のトランザクション評価、アドホック検索、およびデータ分析を可能にします。 Apache Hiveが提供する包括的な洞察は、競争上の大きな利点をもたらし、市場の需要への対応を容易にします。
このような情報をすぐに利用できることの利点のいくつかを次に示します。
- 使いやすさ – SQLに似た言語であるため、データのクエリは簡単に理解できます。
- 加速されたデータ挿入 — Apache Hiveはテーブルタイプまたはスキーマ定義を検証せずにスキーマを読み取るため、データを読み取って解析し、データベースの内部形式でディスクにシリアル化する必要はありません。 対照的に、従来のデータベースでは、データを追加するたびにデータを検証する必要があります。
- 優れたスケーラビリティ、柔軟性、および費用対効果 –データはHDFSに保存されるため、Apache Hiveは数百ペタバイトのデータを保持でき、通常のデータベースよりもはるかにスケーラブルなオプションになります。 クラウドベースのHadoopサービスとしてのApacheHiveを使用すると、顧客は仮想サーバーをすばやくスピンアップおよびスピンダウンして、変化するワークロードに対応できます。
- 幅広い作業能力 –大規模なデータセットは、100,000時間あたり最大XNUMXのクエリを処理できます。
制限事項
- 一般に、ApacheHiveクエリのレイテンシーは非常に高くなります。
- サブクエリのサポートは制限されています。
- リアルタイムクエリと行レベルの変更は、ApacheHiveでは使用できません。
- マテリアライズド・ビューはサポートされていません。
- ハイブでは、更新および削除アクションはサポートされていません。
- OLTP(オンライン移行プロセス)は対象外です。
ApacheHiveの使用を開始する
Apache Hiveは、ワークフローを簡素化および合理化する強力なHadoopパートナーです。 Apache Hiveを最大限に活用するには、シームレスな統合が不可欠です。 最初のステップはに行くことです ウェブサイト.
1.安定リリースからのインストールハイブ
まず、ApacheダウンロードミラーのXNUMXつからHiveの最新の安定したリリースをダウンロードします(を参照)。 ハイブリリース)。 次に、tarballを解凍する必要があります。 これにより、hive-xyz(xyzはリリース番号)というサブフォルダーが作成されます。
インストールディレクトリを指すように環境変数HIVE_HOMEを設定します。
最後に、$ HIVE_HOME/binを PATH
:
2.ハイブの実行
HiveはHadoopを使用しているため、次のようになります。
- パスにHadoopが含まれている必要がありますまたは
3.DLLの操作
ハイブテーブルの作成
XNUMXつの列を持つpokesという名前のテーブルを生成します。最初の列は整数で、XNUMX番目の列は文字列です。
テーブルを閲覧する
すべてのテーブルの一覧表示
テーブルの変更と削除
テーブル名を変更したり、列を追加または置換したりできます。
REPLACE COLUMNSは、データではなくテーブルの構造のみを変更しながら、既存のすべての列を置き換えることに注意してください。 テーブルではネイティブSerDeを使用する必要があります。 REPLACE COLUMNSを使用して、テーブルのスキーマから列を削除することもできます。
テーブルを落とす
Apache Hiveには、公式Webサイトにアクセスして学ぶことができる多くの追加の操作と機能があります。
まとめ
Hive定義は、ApacheHadoop上に構築された巨大なデータセットのクエリと分析のためのデータプログラムインターフェイスです。 これは主にHiveの広範なデータ用に設計されており、使いやすいため、専門家は他のプログラム、ツール、ソフトウェアよりも選択します。
このチュートリアルがApacheHiveのキックスタートに役立ち、ワークフローをより効率的にするのに役立つことを願っています。 コメントで教えてください。
コメントを残す