web-dev-qa-db-ja.com

Hiveサービス、HiveServer2&MetaStoreサービス?

私はアーキテクチャの観点からHiveを理解しようとしています。そして、Hadoopに関するTomWhiteの本を参照しています。

Hiveに関して、Hive Serviceshiveserver2metastoreなどの用語に出くわしました。

以下の本の図を参照してください(Hadoop:決定的なガイド)。

Hiveアーキテクチャ:

enter image description here

MetaStore構成:

enter image description here

「ドライバー」とは何かを示すHiveアーキテクチャー:

enter image description here

私は以下を理解することができません:

1)Hiveアーキテクチャ図のHive Servicesとは何ですか? hiveserver2と言っても同じですか?

2)Hiveアーキテクチャ図のDriverとは何ですか?

3)MetaStoreとは何ですか(私は[〜#〜] not [〜#〜]メタストアデータベースを参照しています)。実行されるプロセスですか?もしそうなら、これはhiveserver2の一部ですか?図のように、MetaStoreはリモートにすることができるので、これがJVMプロセスの場合、どのコンポーネントに属しますか?

4)Hive service JVMMetaStore JVM Serverと表示されます。しかし、これらのコンポーネントはどこにインストールされますか?それらは「Hive」の「サーバー」側の一部ですか?

5)「Hiveアーキテクチャ」図で「Hiveサーバー」と表示されていますか?これは何ですか?これは、「Hive Server 1」、「HiveServer2」と呼ばれるものです。

誰かがこれを理解するのを助けることができますか?

7
CuriousMind

Hiveサービス

  • HiveServer2
  • Hiveメタストア
  • HCatalog + WebHcat
  • Beeline&Hive CLI
  • Thriftクライアント
  • ファイルシステム:: HDFSおよびS3などの他の互換性のあるファイルシステム
  • 実行エンジン:: MapReduce、Tez、Spark
  • Hive Web UI(Hive 2.xで追加)。たぶんTezまたはSpark UIですが、実際にはそうではありません

Driver

JDBC/ODBCまたはThriftインターフェースにはドライバーがあります。
クエリを解釈し、実行エンジンコードにコンパイルするプロセスもあります。私は個人的にそれをドライバーではなくインタプリタまたはコンパイラと呼んでいます

メタストアサーバー

HiveServer2の一部ではありません。これは文字通りRDBMS上で実行されるプロセスです(はい、Hive&Hadoopを実行するときにこれらが必要です)。

サポートされているリモートメタストアサーバー= Oracle、MySQL、Postgres
Embedded Metastore(本番環境には推奨されません)= Derby

Hive Wiki を参照してください

メタストアJVM

オレンジ色のボックスは、これらのサービスをドライバー(インタープリター)と同じJVMの一部として、またはリモートサーバーとしてデプロイできることを示しています。 wikiはこれらの設定について説明しています。

これは、HiveServer2クエリをMetaStoreクエリにマッピングするサイドカープロセスだと思います。たとえば、HiveQLをMySQLまたはPostgresからメタデータを読み取るプロセスにどのように変換しますか?

はい、サーバー側で実行できますが、フォールトトレランスとパフォーマンス上の理由から、これは推奨されるセットアップではありません。

HiveServer1は非推奨です 。気軽に読んでください。ただし、使用しないでください。

6
cricket_007

私の理解は:

Hive Services含まれるもの:HS2(thriftサーバーを呼び出す場合があります)、ドライバー、コンパイラー、実行エンジン。ただし、これら4つのコンポーネント(HS2、ドライバー、コンパイラー、実行エンジン)はすべてhiveserver2プロセスにあります。したがって、Hiveには3つのプロセスがあります。

  • HS2(hs2またはthriftサーバー、コンパイラ、実行エンジンを含む)
  • MetaStore
  • WebHCat
0
NiYanchun