2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Databricksにおける外部Hive MetastoreをAzure SQL DatabaseにてローカルモードでSpark Configにて構築する方法

Last updated at Posted at 2021-07-23

概要

Databricksにおける外部Hive Metastoreを、Azure SQL DatabaseにてローカルモードでSpark Configにて構築する方法を共有します。

本手順はHive Metastoreのバージョンを0.13.0で構築する手順です。
databricksの内部Hive Metastoreのバージョンも0.13.0でした。

image.png

HD InsightのドキュメントにてAzure SQL DatabaseをHive Metastoreデータベースとして利用する際のサイジング方法が記載されており、DTUモデルのS2からスケールアップする方針がよいようです。
image.png
引用元:外部メタデータ ストアの使用 - Azure HDInsight | Microsoft Docs

Hive Metastoreのバージョンを2.3.7で構築したい場合には、下記の記事を参考にしてください。

検証環境

databricks runtime: 8.3.x-scala2.12
Python version: 3.8.8
pyspark version: 3.1.2.dev0

手順

1. Hive Metastoreデータベース(Azure SQL Database)を初期化するために、Azure SQL Databaseに対して、HiveのレポジトリからダウンロードしたDDL文を実行

image.png

下記をSparkConfに設定したクラスターにてデータベースを作成すると自動でHive Metastoreデータベースにテーブルが作成されるのですが、テーブル数が少なかったため利用しないこととしました。

spark.hadoop.javax.jdo.option.ConnectionDriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
spark.hadoop.javax.jdo.option.ConnectionURL jdbc:sqlserver://<サーバー名>.database.windows.net:1433;database=<データベース名>
spark.hadoop.javax.jdo.option.ConnectionUserName <アカウント名(例:adminuser@サーバー名)>
spark.hadoop.javax.jdo.option.ConnectionPassword <パスワード>

datanucleus.autoCreateSchema true
datanucleus.fixedDatastore false

image.png

spark.hadoop.javax.jdo.option.ConnectionDriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
spark.hadoop.javax.jdo.option.ConnectionURL jdbc:sqlserver://<サーバー名>.database.windows.net:1433;database=<データベース名>
spark.hadoop.javax.jdo.option.ConnectionUserName <アカウント名(例:adminuser@サーバー名)>
spark.hadoop.javax.jdo.option.ConnectionPassword <パスワード>

datanucleus.schema.autoCreateAll false
datanucleus.autoCreateSchema false
datanucleus.fixedDatastore true
datanucleus.connectionPool.minPoolSize  0
datanucleus.connectionPool.initialPoolSize 0
datanucleus.connectionPool.maxPoolSize 1
hive.stats.autogather false
mapred.reduce.tasks 100
hive.metastore.client.socket.timeout  3600
hadoop.tmp.dir /local_disk0/tmp
hive.metastore.client.connect.retry.delay 10
hive.metastore.failure.retries 30

image.png

クラスターのターミナルにてcat /databricks/hive/conf/hive-site.xmlにより確認できるDatabricksのデフォルトのプロパティを設定しております。
image.png

3. 起動したクラスターにてデータベースとテーブルが作成できることを確認

image.png

その他対応

1. Spark ConfigにDatabricksシークレットを設定

Hvie Metastoreデータベースへのパスワード等については、Databricksシークレットから設定できます。
image.png

下記のドキュメントにて説明されております。
image.png
引用元:シークレット - Azure Databricks - Workspace | Microsoft Docs

2. Hive Metastoreのパラメータについて

0.13.0を含む2以前のバージョンの場合には下記のドキュメントに記載されております。
image.png
引用元:AdminManual Metastore Administration - Apache Hive - Apache Software Foundation

3以降のバージョンの場合には下記のドキュメントに記載されております。
image.png
引用元:AdminManual Metastore 3.0 Administration - Apache Hive - Apache Software Foundation

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?