Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@777nancy

Kerberized Hadoop ClusterのHive metastoreにPrestoを接続

はじめに

扱っているデータの性質上、どうしてもオンプレミスでHadoop Clusterの運用を行っています。(クラウドがいい...)
今まではSpark, Hiveでバッチ処理をメインで行ってきましたが、最近インタラクティブにクエリを実行したいとの要望があり、
今更ながらKerberized Hadoop ClusterのHive metastoreにPrestoを接続します。

環境

今回の接続に使用した環境は下記です。

Kerberized Hadoop Cluster

サービス、ユーザ認証にKerberosを利用したHadoop Cluster
OS: CentOS 7.7
Hadoopディストリビューション: CDH6.2.1
master node: 3台
worker node: 6台

Presto

Presto: version 333(prestosql)
coordinator: 1台(master nodeのうち1台)
worker: 6台(worker nodeと同様)

前提条件

  • Kerberized Hadoop Clusterを構築済み
  • Prestoを導入済み
    • presto-cliが利用可能 

Hadoop ClusterのKerberosの設定はAmbariやCloudera Managerから簡単に可能です。
また、Prestoの導入もpresto-adminを利用することで、coordinator, workerをCLIで一元管理可能です。(GUIないのネック!)

KDCにPresto用のプリンシパルを登録、keytabの生成

Kerberized Hadoop Clusterで使用している、KDCにPrestoの設定を行います。

kadmin: addprinc -randkey presto@EXAMPLE.COM
kadmin: xst -k presto.keytab presto@EXAMPLE.COM

生成したpresto.keytabをprestoのcoordinator, workerの/etc/presto/presto.keytabに配置します。
(配置場所は任意の場所で問題ありません。)

krb5.confの設定(CentOS7のみ)

下記の設定を削除

renew_lifetime = 7d

ここでかなりハマりました。この設定をしないとCentOSではpresto-cliの接続でMessage stream modified (41)のエラーが発生します。

core-site.xmlの設定

impersonationを有効にするため、下記の設定を追加します。

<property>
  <name>hadoop.proxyuser.presto.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.presto.groups</name>
  <value>*</value>
</property>

Hadoop Clusterの管理にAmbariやCloudera Managerを使用してる場合はGUIで設定してください。

hive.propertiesの設定

下記の設定を追加します。

# Hive
hive.metastore.authentication.type=KERBEROS
hive.metastore.thrift.impersonation.enabled=true # prestosqlのみの設定, prestodbの方はなし
hive.metastore.service.principal=hive/_HOST@EXAMPLE.COM
hive.metastore.client.principal=presto@EXAMPLE.COM
hive.metastore.client.keytab=/etc/presto/presto.keytab

# HDFS
hive.hdfs.authentication.type=KERBEROS
hive.hdfs.impersonation.enabled=true
hive.hdfs.presto.principal=presto@EXAMPLE.COM
hive.hdfs.presto.keytab=/etc/presto/presto.keytab

設定したhive.propertiesをcoordinator, workerに配布し、Prestoを再起動します。

接続確認

presto-cliを利用して接続確認を行います。

./presto-cli --server {coordinatorのIPアドレス or ホスト名}:8080 --catalog hive --schema default --user {user}
presto:default> show schemas; # Hive上のデータベースが表示

--userで指定したuserは、Hive, HDFS上で適切な権限が付与されてている必要があります。

最後に

公式ドキュメントに従って、接続設定を行いました。
PrestoでKerberized Hadoop ClusterのHive metastoreの接続を解説しているサイトがほとんどなかったので、参考になれば幸いです。
また、Kerberized Hadoop ClusterのHive metastoreにPrestoを接続するだけであれば、Presto自体のKerberos, SSL/TLS設定は不要です。

参考

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
777nancy
最近はHadoopクラスタ関係を扱っています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?