presto集成kerberos以及访问集成了kerberos的hive集群

1、创建主体

注:

192.168.0.230 为单节点集群

192.168.4.50kdc服务器

192.168.0.9为客户端

1.1、Kdc服务器创建主体

# kadmin.local -q ‘addprinc -randkey presto’

#kadmin.local -q ‘addprinc -randkey presto/yjt’

1.2、创建秘钥文件

# kadmin.local -q ‘xst -norandkey -k presto.keytab presto presto/yjt hive/yjt nn/yjt’

上述的hive/yjt nn/yjt两个认证用户也需要添加到秘钥表,hive/yjt用于presto连接hive集群时使用,nn/yjt用户操作hdfs时使用

1.3、分发秘钥文件

# scp presto.keytab 192.168.0.230:/data1/hadoop/presto

如下操作在集群

# chmod 444 /data1/hadoop/presto/presto.keytab

1.4、生成keystore文件

presto主节点生成keystore

# keytool -genkeypair -alias localhost -keyalg RSA -keystore keystore.jks

输入密钥库口令:  

再次输入新口令:

您的名字与姓氏是什么?

  [Unknown]:  yjt

您的组织单位名称是什么?

  [Unknown]:  

您的组织名称是什么?

  [Unknown]:  

您所在的城市或区域名称是什么?

  [Unknown]:  

您所在的省//自治区名称是什么?

  [Unknown]:  

该单位的双字母国家/地区代码是什么?

  [Unknown]:  

CN=slave1, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?

  []:  y

输入 <localhost> 的密钥口令

    (如果和密钥库口令相同, 按回车):  

再次输入新口令:

注:上述的别名alias为当前的主机名,也可以使用localhost

2、修改presto配置文件

2.1、修改hive.properties

添加如下属性:

#配置Presto访问HiveMetastore服务的Kerberos信息,该段配置可以只存在PrestoCoordinator节点

hive.metastore.authentication.type=KERBEROS

hive.metastore.service.principal=hive/_HOST@HADOOP.COM

hive.metastore.client.principal=presto/yjt@HADOOP.COM

hive.metastore.client.keytab=/data1/hadoop/presto/presto.keytab

#配置Presto访问HDFSKerberos信息,改段配置可以只存在PrestoWorker节点

hive.hdfs.authentication.type=KERBEROS

hive.hdfs.impersonation.enabled=true

hive.hdfs.presto.principal=nn/_HOST@HADOOP.COM

hive.hdfs.presto.keytab=/data1/hadoop/presto/presto.keytab

2.1、修改jvm.properties

添加如下属性:

-Dsun.security.krb5.debug = true

-Dlog.enable-console = true

-Djava.security.krb5.conf=/etc/krb5.conf

2.2、修改config.properties

添加如下属性:

http-server.authentication.type=KERBEROS

http.server.authentication.krb5.service-name=presto

http.server.authentication.krb5.keytab=/data1/hadoop/presto/presto.keytab

http.authentication.krb5.config=/etc/krb5.conf

http-server.https.enabled=true

http-server.https.port=7778

http-server.https.keystore.path=/data1/hadoop/presto/keystore.jks

#http-server.https.keystore.path=/data1/hadoop/keystore/keystore

http-server.https.keystore.key=123456

注:上述的http-server.https.keystore.key值为创建keystore时输入的密码。

2.3、重启presto

# launcher restart

3、测试

$ presto --server https://yjt:7778 --krb5-config-path /etc/krb5.conf --krb5-principal presto/yjt --krb5-keytab-path /data1/hadoop/presto/presto.keytab --krb5-remote-service-name presto --keystore-path /data1/hadoop/keystore/keystore --keystore-password 123456 --catalog hive --schema default

原文地址:https://www.cnblogs.com/yjt1993/p/11769595.html