MYSQL で HIVE メタストアをインストールして構成する方法
⚡ スマートサマリー
HiveメタストアはApache Hiveの背後にあるすべてのテーブル定義、列名、データ型を保存し、そのリポジトリをデフォルトのDerbyデータベースから移動します。 MySQL 複数のユーザーが同時に接続できるようにする機能です。
HIVE メタストアとは何ですか?
Hiveメタストアは、データに関連するメタデータ(列名、データ型、コメントなど)を格納するリポジトリです。 ApacheHive MySQL or PostgreSQL。この Hive メタストアは、リレーショナル データベース内のテーブルを使用して実装されます。
メタストアには行データ自体は保存されません。レコードはHDFS上に保持され、メタストアには各テーブルの場所と列名のみが記録されます。そのため、メタストアが失われてもデータではなくスキーマが失われることになります。
使用する理由 MySQL Hiveのメタストアとして
メタストアのバックエンドは選択肢の一つであり、Hiveの固定機能ではありません。また、出荷時のデフォルト設定は意図的に最小限に抑えられています。しかし、3つの制限があるため、ほとんどすべてのインストール環境でメタストアは使用されません。
- デフォルトでは、HiveにはメタストアとしてDerbyデータベースが付属しています。
- Derbyは一度に1人のアクティブユーザーしかサポートできません。
- Derbyは生産環境での使用は推奨されません。
したがって、ここでの解決策は
- MySQL バックエンドのメタストレージとして、複数のユーザーを同時にHiveに接続します。
- MySQL スタンドアロンメタストアに最適な選択肢です
Hive メタストアをインストールして構成する方法 MySQL データベース
以下の9つの手順は、HadoopとHiveが既にインストールされているマシン上で順番に実行されます。各手順の最後には、実際のターミナルまたはシェル出力のスクリーンショットが掲載されています。
ステップ1)インストール MySQL サーバー
このステップでは、XNUMX つのタスクを実行します。
- mysql-serverのインストール
- mysql-serverとそのプロセスの確認
使い方 sudo apt-get mysql-serverをインストールする コマンドでダウンロードできます MySQL サーバーをインストールします。 MySQL 下のスクリーンショットに示すように
インストールが成功したら、 MySQL 以下のスクリーンショットに示すように実行され、プロセスチェックによってサービスが稼働していることが確認されます。
ステップ2)インストール MySQL Java ボンジョイント
インストール MySQL Java コネクタ。これは Java 依存関係と接続目的のため、Hive は MySQL JDBC経由。次のスクリーンショットはパッケージのインストールを示しています。
ステップ 3) コネクタのソフトリンクを作成する
Hive lib ディレクトリにコネクタのソフトリンクを作成します。これは、 Java (NAIST) と MySQLそして、これによってドライバJARがHiveのクラスパスに追加されます。コマンドとその結果は以下のとおりです。
ステップ4)設定 MySQL Hiveのストレージ
その MySQL 次の図に示すように、Hiveユーザーを作成する前に、rootアカウントでシェルを開く必要があります。
- mysql –u root –p と入力し、続けてパスワードを入力してください。
- ここで、-u はルートユーザー名、-p はパスワードを表します。
- 上記のコマンドを入力した後、ユーザーは有効なパスワードを入力してEnterキーを押す必要があります。
- すると、 MySQL シェルモード
ステップ 5) ユーザー名とパスワードを作成する
ユーザー名とパスワードを作成する MySQL、そして権限を付与します。以下のスクリーンショットは、内部で実行されている 3 つのステートメントを示しています。 MySQL シェル。
以下に示すようにコマンドを実行する必要があります。
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8 2 番目のステートメントの結合形式は、GRANT から IDENTIFIED BY が削除されたため、解析されなくなりました。最初にアカウントを作成してから、そのアカウントに権限を付与し、ローカルホストホストとワイルドカードホストの両方に対して CREATE USER 行を繰り返します。
ステップ6)hive-site.xmlの設定
- ステップ 5 でユーザー名とパスワードを割り当てた後、 MySQL データベースにアクセスし、権限を付与します。
- ここでは、Hive でいくつかのプロパティを設定して、 MySQL データベース。
次のスクリーンショットに示すように、設定ファイルはHiveのconfディレクトリから開かれます。
以下のスクリーンショットは、4つのプロパティすべてが設定された完成ファイルを示しています。
上記のスクリーンショットから、以下のことがわかります。ここでは、確立するために必要な 4 つのプロパティを定義しています。 MySQL Hiveにおけるメタストアとして。
これらは次のとおりです。
- この物件は接続用です URLここでは、接続を定義します。URL このプロパティでは、JDBC接続文字列として機能し、メタストアの場所も表します。
- このプロパティは接続ドライバ名用です。ここでは、com.mysql.jdbc.Driver を値タグに指定する必要があります。
- このプロパティは、接続ユーザー名を定義するために使用されます。ここでは、ユーザー名として「hiveuser」を定義しました。
- このプロパティは接続パスワードを指定するために使用されます。ここでは、「hivepassword」をユーザーパスワードとして定義しています。
プロパティを hive-site.xml に配置したら、手動で保存 (Ctrl+S) してファイルを閉じます。このファイルを閉じた後、Hive テーブルを作成し、テーブルの詳細を確認する必要があります。 MySQL ストレージ。
このコードを hive-site.xml に配置します。
ハイブサイト.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> <description>metadata is stored in a MySQL server</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>MySQL JDBC driver class</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> <description>user name for connecting to mysql server</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> <description>password for connecting to mysql server</description> </property> </configuration>
上記の2つの値は、使用するコネクタのバージョンによって異なります。 MySQL Connector/J 8 ではドライバクラスの名前が com.mysql.cj.jdbc.Driver に変更され、明示的なポートと SSL 設定も必要となるため、最新の URL 通常は jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false と読み取れます。パスワードは平文で保存されているため、このファイルは Hive サービス アカウントのみが読み取れるようにする必要があります。
ステップ7) テーブルの作成
以下のHiveシェルに示すように、Hiveにテーブル「guru99」を作成します。
上記のスクリーンショットから、次のことがわかります。
- 「guru99」という名前のテーブルを作成し、2つの列名を設定します。
- 列名はデータ型とともに示されており、一方は整数型、もう一方は文字列型である。
次のステップでは、それがどこに保存されているかを確認します。 MySQL どうか。
ステップ8) MySQL シェルモード
まずメタストアデータベースが選択され、その後に続くテーブル一覧が以下に示されます。
上記のスクリーンショットから、次のことがわかります。
- まず、「use metastore」でデータベースを選択する必要があります。
- メタストアを選択したら、スクリーンショットに示すように「show tables」コマンドを使用して、そのメタストアに存在するテーブルを確認できます。
- Hiveで作成されたテーブルに対応するメタデータは、TBLSの下に保存されます。 MySQL データベース
- 「guru99」テーブルはHiveで作成されるため、対応するメタデータは MySQL TBLSの下で
ステップ 9) 「select * from TBLS」と入力します。
作成されたテーブルが存在するかどうかを確認します MySQL あるいはそうでない場合もあります。クエリとその結果は以下のスクリーンショットに示されています。
select * from TBLS と入力すると、Hive シェル モードで作成したテーブルが表示されます。
上記のスクリーンショットから、次のことがわかります。
- Hiveで作成されたテーブル名「guru99」は、 MySQL シェルモード
- これに加えて、上記のスクリーンショットに示されているように、テーブルの作成時間、アクセス時間、その他のプロパティなどの情報も提供されます。
schematoolを使用してHiveメタストアスキーマを初期化する方法
接続の createDatabaseIfNotExist フラグ URL 空のメタストアデータベースを作成しますが、Hive が内部に必要とする約 70 個のテーブルは作成しません。Hive 1.x 以降では、このジョブは schematool ユーティリティに属しており、スキップされます。ping これは、新しく構成されたメタストアが起動しない最も一般的な理由です。
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
このコマンドは、hive-site.xmlから同じ4つのプロパティを読み込み、hiveuserアカウントに接続し、Hiveのバージョンに一致するバンドルされたSQLスクリプトを実行します。実行が成功すると完了メッセージが表示され、その後はいつでも状態を確認できます。
$HIVE_HOME/bin/schematool -dbType mysql -info
以下のフラグは、メタストアスキーマのライフサイクル全体を網羅しています。
| オプション | 何それがありません |
|---|---|
| -dbType | バックエンドの名前を指定します(例:mysql、derby、postgres、oracle、mssql)。 |
| -initSchema | 現在のHiveバージョンのメタストアテーブルを作成します |
| -情報 | データベースに記録されているスキーマバージョンを報告します。 |
| -upgradeSchema | Hiveのアップグレード後に既存のスキーマを移行します |
| -検証 | スキーマをチェックし、不足しているテーブルやバージョンの不一致がないかを確認します。 |
初回起動前に知っておくべき関連プロパティが 1 つあります。hive.metastore.schema.verification が true の場合、Hive はスキーマ バージョンを比較します。 MySQL 自身のバージョンと照合し、不一致の場合は実行を拒否します。このチェックは安全対策なので、正しい対応はアップグレードを停止するのではなく実行することです。 MySQL バックエンドは、Hiveのインストールで使用されます。 Hiveをインストールする Ubuntu.
Hiveメタストアでよく発生するエラーとその解決方法
この段階で発生するほとんどの障害は、ごく少数のメッセージのうちのいずれかを生成し、それぞれがHive自体ではなく、その上の特定のステップを指し示しています。
| 症状 | 原因と解決策 |
|---|---|
| メタストアにバージョン情報が見つかりません | スキーマが作成されませんでした。接続で指定したデータベースに対して、-initSchema オプションを指定して schematool を実行してください。 URL |
| JDBCドライバのClassNotFoundException | コネクタJARがHive libディレクトリに存在しないか、Connector/J 8が使用中で、クラスがcom.mysql.cj.jdbc.Driverになっています。手順3のシンボリックリンクを再確認してください。 |
| ユーザーhiveuserのアクセスが拒否されました | 権限は1つのホストにのみ付与されています。localhostとワイルドカードホストの両方にアカウントを作成し、flush privilegesを実行してください。 |
| IDENTIFIED BY 付近に構文エラーがあります | MySQL 8. GRANT文からIDENTIFIED BYを削除しました。まずCREATE USERを発行し、その後GRANTを発行してください。 |
| 公開鍵の取得は許可されていません | Connector/J 8 はデフォルトで暗号化されていないハンドシェイクを拒否します。JDBC に useSSL=false と allowPublicKeyRetrieval=true を追加してください。 URL 信頼できるネットワーク上で |
| Hiveのアップグレード後にテーブルが欠落している | スキーマは依然として旧バージョンと一致しています。スキーマ検証を無効にする代わりに、-upgradeSchema オプションを指定して schematool を実行してください。 |
メタストアが確実に応答すると、記録されるテーブル定義は、以下で説明するステートメントを使用して作成されます。 Hiveでテーブルを作成、変更、削除する.









