我是靠谱客的博主 深情月饼,这篇文章主要介绍presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装,现在分享给大家,希望可以做个参考。

presto基于kerberos访问hive的安装

注意事项:

1.安装的presto0.223最新版是需要jdk1.8的,但是hadoop的jdk是1.7.所以新建presto的用户。安装jdk1.8到presto用户环境下。让presto在presto用户下执行。

2.presto的用户组需要添加hadoop,否则找不到presto服务的keytab文件。

3.ncmp安装hive_client会自动安装一次mysql,但是如果需要在主机运行指定的mysql.那么主机不能安装hive _client.但是presto的coordinator需要配置hive.client.所以不要在没有安装hive_client客户端主机下。将presto的coordinator安装到这台主机下。

安装presto过程:

1. 新建presto用户

1.1切换root权限/或者在有sudo权限的普通用户下新建presto

sudo useradd presto

1.2presto用户添加到hadoop组

sudo usermod -a -G hadoop presto

1.4查看用户是否添加成功

[外链图片转存失败(img-bVXDgXgC-1565246366293)(presto基于kerberos访问hive的安装.assets/1565165682227.png)]

1.3修改用户密码

[外链图片转存失败(img-XPDmTIPf-1565246366295)(presto基于kerberos访问hive的安装.assets/1565165575878.png)]

1.5添加sudo权限

[外链图片转存失败(img-KMWz5w6G-1565246366296)(presto基于kerberos访问hive的安装.assets/1565165725158.png)]

root权限下,修改/etc/sudoers文件。

添加presto ALL=(ALL) NOPASSWD: ALL

2. 安装1.8jdk(切换到presto用户)

2.1上传jdk,解压tar包(),(这里我把jdk安装到了/home/presto。presto的家目录)

[外链图片转存失败(img-U8UTdcIa-1565246366298)(presto基于kerberos访问hive的安装.assets/1565165809360.png)]

tar -xvzf jdk-8u221-linux-x64.tar.gz -C ~/

[外链图片转存失败(img-8FdFwcpM-1565246366299)(presto基于kerberos访问hive的安装.assets/1565165881238.png)]

2.2配置用户的环境属性

vi .bashrc

[外链图片转存失败(img-uFoLaVqE-1565246366300)(presto基于kerberos访问hive的安装.assets/1565166013308.png)]

export JAVA_HOME=/home/presto/jdk1.8.0_221
export PATH=.: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

2.2.1使文件生效

source .bashrc

2.2.2查看jdk是否安装成功

[外链图片转存失败(img-h5HhYE1s-1565246366302)(presto基于kerberos访问hive的安装.assets/1565166176404.png)]

java -version

3. 安装presto

3.1下载presto-server-0.223.tar.gz上传到/home/presto

[外链图片转存失败(img-FKURVo46-1565246366303)(presto基于kerberos访问hive的安装.assets/1565167274597.png)]

3.2解压的路径(我是在/opt下创建module/目录,赋权chmod 777 /opt/module/,其实可以直接解压到/home/presto/目录下更好)

3.3解压完成

tar -xvzf ./presto-server-0.223.tar.gz -C /opt/module/

[外链图片转存失败(img-gr9ZeGey-1565246366304)(presto基于kerberos访问hive的安装.assets/1565167679930.png)]

3.4presto解压目录下,新建./etc/目录**。

mkdir ./etc

[外链图片转存失败(img-g3I5zbSF-1565246366307)(presto基于kerberos访问hive的安装.assets/1565168018469.png)]

注意(此文件夹下放置的是presto的配置文件。重要)

3.5***4大配置文件***


Node Properties

复制代码
1
2
3
4
node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/presto/data

新建etc/node.properties

  • node.environment=production presto的环境名,一个presto集群的所有的节点环境名需要相同
  • node.id=ffffffff-ffff-ffff-ffff-ffffffffffff 每个节点唯一标识符。每个运行presto节点的只要保证node.id不同就行
  • node.data-dir=/var/presto/data 日志和数据存储的位置。可以默认不变。

[外链图片转存失败(img-Qc6Hy2dB-1565246366307)(presto基于kerberos访问hive的安装.assets/1565168808723.png)]


JVM Config

复制代码
1
2
3
4
5
6
7
8
9
-server -Xmx16G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError

etc/jvm.config文件是启动java虚拟机的命令行的选项,因为文件不能被shell解释,所有注意不能使用空格和其他特殊的字符


Config Properties

etc/config.properties文件是presto节点的配置信息,非常重要。由于一个presto的节点可以单纯作为coordinator或者作为worker又或者同时作为coordinator和worker

最小的coordinator的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080

最小的worker的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery.uri=http://example.net:8080

只有单节点或者测试presto的可以采用下列的配置

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 query.max-memory=5GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080
  • coordinator 允许这个节点作为presto的协调器coordinator.作用在于从客户端接受请求并执行查询

  • node-scheduler.include-coordinator 允许调度任务在这个协调器上。

  • http-server.http.port presto节点内外部的通讯的节点。这里这里需要查找8080端口是否被占用,这里我设置为8081

  • query.max-memory 查询可以用到的最大的分布式内存容量,默认就行。

  • query.max-memory-per-node 查询可以在任何一台机器上使用的最大用户内存默认

  • query.max-total-memory-per-node 查询可以在任何一台机器上使用的最大用户和系统内存,其中系统内存是在执行期间由读取器、写入器和网络缓冲区等使用的内存,默认

  • discovery.uri presto集群向coordinator 注册自己节点的信息


Log Levels

/etc/log.properties日志配置

复制代码
1
2
com.facebook.presto=INFO

4. 运行presto命令

后台启动服务

复制代码
1
2
bin/launcher start

前台启动服务

复制代码
1
2
bin/launcher run

查看presto是否启动成功

[外链图片转存失败(img-lqMVFmDY-1565246366308)(presto基于kerberos访问hive的安装.assets/1565227602852.png)]

kerberos认证

1. Coordinator Kerberos Authentication

coordinator协调器认证目的是为了coordinator可以通过https能够进行kerberos认证

1.1 MIT Kerberos Configuration

无需对此项更改 /etc/krb5.conf,使用集群已经配置好的信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[libdefaults] renew_lifetime = 7d forwardable = true default_realm = NEWLAND.COM ticket_lifetime = 24h dns_lookup_realm = false dns_lookup_kdc = false default_ccache_name = /tmp/krb5cc_%{uid} #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 [domain_realm] NEWLAND.COM = NEWLAND.COM [logging] default = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log kdc = FILE:/var/log/krb5kdc.log [realms] NEWLAND.COM = { admin_server = ncmp246 kdc = ncmp246 }

1.2 Kerberos Principals and Keytab Files

presto coordinator 协调器需要有kerberos实体,用于连接presto coordinator

复制代码
1
2
3
4
5
sudo kadmin.local addprinc -randkey presto/ncmp247@NEWLAND.COM ktadd -k /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM

1.3 Java Cryptography Extension Policy Files

Java加密扩展策略文件Java运行时环境附带的策略文件限制了可以使用的加密密钥的强度。

US_export_policy.jar和local_policy.jar放置到$JAVA_HOME/jre/lib/security目录下

复制代码
1
2
3
cd $JAVA_HOME/jre/lib/security

[外链图片转存失败(img-N9Rgkk7P-1565246366309)(presto基于kerberos访问hive的安装.assets/1565230133442.png)]

1.4 Java Keystore File for TLS

通过https访问presto coordinator使用kerberos认证的时候需要在coordinator 上创建一个Java keystore File

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd ~ keytool -genkeypair -alias presto -keyalg RSA -keystore keystore.jks Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: presto-coordinator.example.com What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=presto-coordinator.example.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes Enter key password for <presto> (RETURN if same as keystore password):

验证密钥存储文件的密码,并使用keytool查看其内容

复制代码
1
2
3
keytool -list -v -keystore ~/presto.jks

1.5 config.properties

Kerberos身份验证是在协调器节点的配置中配置的。属性文件。下面列出了需要添加的条目

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
http-server.authentication.type=KERBEROS http.server.authentication.krb5.service-name=presto http.server.authentication.krb5.service-hostname=presto.example.com http.server.authentication.krb5.keytab=/etc/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=/etc/presto_keystore.jks http-server.https.keystore.key=keystore_password
  • http-server.authentication.type Presto协调器的身份验证类型。必须设置为KERBEROS
  • http.server.authentication.krb5.service-name Presto协调器的Kerberos服务名称。必须匹配Kerberos主体
  • http.server.authentication.krb5.keytab 用于验证Kerberos主体的keytab的位置。
  • http.authentication.krb5.config Kerberos配置文件的位置。
  • http-server.https.enabled 为Presto协调器启用HTTPS访问。应该设置为true PRESTO-CLI是使用https访问的协调器
  • http-server.https.port HTTPS服务器端口
  • http-server.https.keystore.path 用于保护TLS的Java密钥存储文件的位置
  • http-server.https.keystore.key 密钥存储库的密码。这必须与创建密钥存储库时指定的密码匹配,刚才Java Keystore File for TLS步骤中配置的密码

1.6 Kerberos Verification

复制代码
1
2
3
4
$ kinit -kt /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM $ klist

2. hive security connector

etc/catalog/hive.config创建hive连接器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#基于hadoop2.x的配置 #连接器名/hive.metastore的地址/端口 connector.name=hive-hadoop2 hive.metastore.uri=thrift://10.1.8.247:9083 #namenode高可用 hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml #Hive Metastore Thrift Service Authentication hive.metastore.authentication.type=KERBEROS hive.metastore.service.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.keytab=/etc/security/keytabs/hive.service.keytab #Hdfs Authentication hive.hdfs.authentication.type=KERBEROS hive.hdfs.presto.principal=nn/ncmp247@NEWLAND.COM hive.hdfs.presto.keytab=/etc/security/keytabs/nn.service.keytab #hdfs导线加密 hive.hdfs.wire-encryption.enabled=true
  • connector.name=hive-hadoop2默认 基于hadoop2.X版本
  • hive.metastore.uri Hive的URI(s)将使用Thrift协议连接到
  • hive.config.resources hadoop 核心配置文件路径,为了高可用HA
  • hive.metastore.authentication.type hive 元数据验证类型 KERBEROS or NONE
  • hive.metastore.service.principal hive元数据kerberos服务实体名
  • hive.metastore.client.principal hive_cli客户端kerberos服务实体名
  • hive.metastore.client.keytab hive_cli客户端kerberos服务实体的keytab路径
  • hive.hdfs.authentication.type HDFS身份验证类型。可能的值是NONE或KERBEROS
  • hive.hdfs.presto.principal Presto在连接到HDFS时将使用的Kerberos主体。
  • hive.hdfs.presto.keytab HDFS客户端keytab位置

3.重新启动presto服务

bin/launcher start

命令行接口(command line interface)

下载presto-cli-0.223-executable.jar

复制代码
1
2
3
mv presto-cli-0.223-executable.jar presto

赋予执行权限

复制代码
1
2
3
chmod 770 presto

运行presto,在ncmp247机器上,执行下面命令即可,或者history | grep presto去查找历史记录

复制代码
1
2
3
presto --server ncmp247:8081 --catalog hive --schema default

[外链图片转存失败(img-c1IO1WUq-1565246366309)(presto基于kerberos访问hive的安装.assets/1565244507739.png)]

presto基于kerberos访问hive的安装

注意事项:

1.安装的presto0.223最新版是需要jdk1.8的,但是hadoop的jdk是1.7.所以新建presto的用户。安装jdk1.8到presto用户环境下。让presto在presto用户下执行。

2.presto的用户组需要添加hadoop,否则找不到presto服务的keytab文件。

3.ncmp安装hive_client会自动安装一次mysql,但是如果需要在主机运行指定的mysql.那么主机不能安装hive _client.但是presto的coordinator需要配置hive.client.所以不要在没有安装hive_client客户端主机下。将presto的coordinator安装到这台主机下。

安装presto过程:

1. 新建presto用户

1.1切换root权限/或者在有sudo权限的普通用户下新建presto

sudo useradd presto

1.2presto用户添加到hadoop组

sudo usermod -a -G hadoop presto

1.4查看用户是否添加成功

[外链图片转存失败(img-iROnor8E-1565246367492)(presto基于kerberos访问hive的安装.assets/1565165682227.png)]

1.3修改用户密码

[外链图片转存失败(img-vzPBi0G6-1565246367492)(presto基于kerberos访问hive的安装.assets/1565165575878.png)]

1.5添加sudo权限

[外链图片转存失败(img-Lqf7am2Q-1565246367493)(presto基于kerberos访问hive的安装.assets/1565165725158.png)]

root权限下,修改/etc/sudoers文件。

添加presto ALL=(ALL) NOPASSWD: ALL

2. 安装1.8jdk(切换到presto用户)

2.1上传jdk,解压tar包(),(这里我把jdk安装到了/home/presto。presto的家目录)

[外链图片转存失败(img-cREev4Nu-1565246367494)(presto基于kerberos访问hive的安装.assets/1565165809360.png)]

tar -xvzf jdk-8u221-linux-x64.tar.gz -C ~/

[外链图片转存失败(img-A5Z3WN4s-1565246367495)(presto基于kerberos访问hive的安装.assets/1565165881238.png)]

2.2配置用户的环境属性

vi .bashrc

[外链图片转存失败(img-KmBjyadJ-1565246367496)(presto基于kerberos访问hive的安装.assets/1565166013308.png)]

export JAVA_HOME=/home/presto/jdk1.8.0_221
export PATH=.: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

2.2.1使文件生效

source .bashrc

2.2.2查看jdk是否安装成功

[外链图片转存失败(img-pKmXVZU9-1565246367496)(presto基于kerberos访问hive的安装.assets/1565166176404.png)]

java -version

3. 安装presto

3.1下载presto-server-0.223.tar.gz上传到/home/presto

[外链图片转存失败(img-wcMa6FRF-1565246367497)(presto基于kerberos访问hive的安装.assets/1565167274597.png)]

3.2解压的路径(我是在/opt下创建module/目录,赋权chmod 777 /opt/module/,其实可以直接解压到/home/presto/目录下更好)

3.3解压完成

tar -xvzf ./presto-server-0.223.tar.gz -C /opt/module/

[外链图片转存失败(img-aFQYe6yH-1565246367497)(presto基于kerberos访问hive的安装.assets/1565167679930.png)]

3.4presto解压目录下,新建./etc/目录**。

mkdir ./etc

[外链图片转存失败(img-5yyr5UBt-1565246367498)(presto基于kerberos访问hive的安装.assets/1565168018469.png)]

注意(此文件夹下放置的是presto的配置文件。重要)

3.5***4大配置文件***


Node Properties

复制代码
1
2
3
4
node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/presto/data

新建etc/node.properties

  • node.environment=production presto的环境名,一个presto集群的所有的节点环境名需要相同
  • node.id=ffffffff-ffff-ffff-ffff-ffffffffffff 每个节点唯一标识符。每个运行presto节点的只要保证node.id不同就行
  • node.data-dir=/var/presto/data 日志和数据存储的位置。可以默认不变。

[外链图片转存失败(img-IPqrqHBF-1565246367498)(presto基于kerberos访问hive的安装.assets/1565168808723.png)]


JVM Config

复制代码
1
2
3
4
5
6
7
8
9
-server -Xmx16G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError

etc/jvm.config文件是启动java虚拟机的命令行的选项,因为文件不能被shell解释,所有注意不能使用空格和其他特殊的字符


Config Properties

etc/config.properties文件是presto节点的配置信息,非常重要。由于一个presto的节点可以单纯作为coordinator或者作为worker又或者同时作为coordinator和worker

最小的coordinator的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080

最小的worker的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery.uri=http://example.net:8080

只有单节点或者测试presto的可以采用下列的配置

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 query.max-memory=5GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080
  • coordinator 允许这个节点作为presto的协调器coordinator.作用在于从客户端接受请求并执行查询

  • node-scheduler.include-coordinator 允许调度任务在这个协调器上。

  • http-server.http.port presto节点内外部的通讯的节点。这里这里需要查找8080端口是否被占用,这里我设置为8081

  • query.max-memory 查询可以用到的最大的分布式内存容量,默认就行。

  • query.max-memory-per-node 查询可以在任何一台机器上使用的最大用户内存默认

  • query.max-total-memory-per-node 查询可以在任何一台机器上使用的最大用户和系统内存,其中系统内存是在执行期间由读取器、写入器和网络缓冲区等使用的内存,默认

  • discovery.uri presto集群向coordinator 注册自己节点的信息


Log Levels

/etc/log.properties日志配置

复制代码
1
2
com.facebook.presto=INFO

4. 运行presto命令

后台启动服务

复制代码
1
2
bin/launcher start

前台启动服务

复制代码
1
2
bin/launcher run

查看presto是否启动成功

[外链图片转存失败(img-VpHh1h9r-1565246367499)(presto基于kerberos访问hive的安装.assets/1565227602852.png)]

kerberos认证

1. Coordinator Kerberos Authentication

coordinator协调器认证目的是为了coordinator可以通过https能够进行kerberos认证

1.1 MIT Kerberos Configuration

无需对此项更改 /etc/krb5.conf,使用集群已经配置好的信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[libdefaults] renew_lifetime = 7d forwardable = true default_realm = NEWLAND.COM ticket_lifetime = 24h dns_lookup_realm = false dns_lookup_kdc = false default_ccache_name = /tmp/krb5cc_%{uid} #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 [domain_realm] NEWLAND.COM = NEWLAND.COM [logging] default = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log kdc = FILE:/var/log/krb5kdc.log [realms] NEWLAND.COM = { admin_server = ncmp246 kdc = ncmp246 }

1.2 Kerberos Principals and Keytab Files

presto coordinator 协调器需要有kerberos实体,用于连接presto coordinator

复制代码
1
2
3
4
5
sudo kadmin.local addprinc -randkey presto/ncmp247@NEWLAND.COM ktadd -k /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM

1.3 Java Cryptography Extension Policy Files

Java加密扩展策略文件Java运行时环境附带的策略文件限制了可以使用的加密密钥的强度。

US_export_policy.jar和local_policy.jar放置到$JAVA_HOME/jre/lib/security目录下

复制代码
1
2
3
cd $JAVA_HOME/jre/lib/security

[外链图片转存失败(img-iiNzpY2O-1565246367499)(presto基于kerberos访问hive的安装.assets/1565230133442.png)]

1.4 Java Keystore File for TLS

通过https访问presto coordinator使用kerberos认证的时候需要在coordinator 上创建一个Java keystore File

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd ~ keytool -genkeypair -alias presto -keyalg RSA -keystore keystore.jks Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: presto-coordinator.example.com What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=presto-coordinator.example.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes Enter key password for <presto> (RETURN if same as keystore password):

验证密钥存储文件的密码,并使用keytool查看其内容

复制代码
1
2
3
keytool -list -v -keystore ~/presto.jks

1.5 config.properties

Kerberos身份验证是在协调器节点的配置中配置的。属性文件。下面列出了需要添加的条目

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
http-server.authentication.type=KERBEROS http.server.authentication.krb5.service-name=presto http.server.authentication.krb5.service-hostname=presto.example.com http.server.authentication.krb5.keytab=/etc/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=/etc/presto_keystore.jks http-server.https.keystore.key=keystore_password
  • http-server.authentication.type Presto协调器的身份验证类型。必须设置为KERBEROS
  • http.server.authentication.krb5.service-name Presto协调器的Kerberos服务名称。必须匹配Kerberos主体
  • http.server.authentication.krb5.keytab 用于验证Kerberos主体的keytab的位置。
  • http.authentication.krb5.config Kerberos配置文件的位置。
  • http-server.https.enabled 为Presto协调器启用HTTPS访问。应该设置为true PRESTO-CLI是使用https访问的协调器
  • http-server.https.port HTTPS服务器端口
  • http-server.https.keystore.path 用于保护TLS的Java密钥存储文件的位置
  • http-server.https.keystore.key 密钥存储库的密码。这必须与创建密钥存储库时指定的密码匹配,刚才Java Keystore File for TLS步骤中配置的密码

1.6 Kerberos Verification

复制代码
1
2
3
4
$ kinit -kt /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM $ klist

2. hive security connector

etc/catalog/hive.config创建hive连接器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#基于hadoop2.x的配置 #连接器名/hive.metastore的地址/端口 connector.name=hive-hadoop2 hive.metastore.uri=thrift://10.1.8.247:9083 #namenode高可用 hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml #Hive Metastore Thrift Service Authentication hive.metastore.authentication.type=KERBEROS hive.metastore.service.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.keytab=/etc/security/keytabs/hive.service.keytab #Hdfs Authentication hive.hdfs.authentication.type=KERBEROS hive.hdfs.presto.principal=nn/ncmp247@NEWLAND.COM hive.hdfs.presto.keytab=/etc/security/keytabs/nn.service.keytab #hdfs导线加密 hive.hdfs.wire-encryption.enabled=true
  • connector.name=hive-hadoop2默认 基于hadoop2.X版本
  • hive.metastore.uri Hive的URI(s)将使用Thrift协议连接到
  • hive.config.resources hadoop 核心配置文件路径,为了高可用HA
  • hive.metastore.authentication.type hive 元数据验证类型 KERBEROS or NONE
  • hive.metastore.service.principal hive元数据kerberos服务实体名
  • hive.metastore.client.principal hive_cli客户端kerberos服务实体名
  • hive.metastore.client.keytab hive_cli客户端kerberos服务实体的keytab路径
  • hive.hdfs.authentication.type HDFS身份验证类型。可能的值是NONE或KERBEROS
  • hive.hdfs.presto.principal Presto在连接到HDFS时将使用的Kerberos主体。
  • hive.hdfs.presto.keytab HDFS客户端keytab位置

3.重新启动presto服务

bin/launcher start

命令行接口(command line interface)

下载presto-cli-0.223-executable.jar

复制代码
1
2
3
mv presto-cli-0.223-executable.jar presto

赋予执行权限

复制代码
1
2
3
chmod 770 presto

运行presto,在ncmp247机器上,执行下面命令即可,或者history | grep presto去查找历史记录

复制代码
1
2
3
presto --server ncmp247:8081 --catalog hive --schema default

[外链图片转存失败(img-OBR2qFBg-1565246367500)(presto基于kerberos访问hive的安装.assets/1565244507739.png)]

presto基于kerberos访问hive的安装

注意事项:

1.安装的presto0.223最新版是需要jdk1.8的,但是hadoop的jdk是1.7.所以新建presto的用户。安装jdk1.8到presto用户环境下。让presto在presto用户下执行。

2.presto的用户组需要添加hadoop,否则找不到presto服务的keytab文件。

3.ncmp安装hive_client会自动安装一次mysql,但是如果需要在主机运行指定的mysql.那么主机不能安装hive _client.但是presto的coordinator需要配置hive.client.所以不要在没有安装hive_client客户端主机下。将presto的coordinator安装到这台主机下。

安装presto过程:

1. 新建presto用户

1.1切换root权限/或者在有sudo权限的普通用户下新建presto

sudo useradd presto

1.2presto用户添加到hadoop组

sudo usermod -a -G hadoop presto

1.4查看用户是否添加成功

[外链图片转存失败(img-iaBXNepf-1565246367676)(presto基于kerberos访问hive的安装.assets/1565165682227.png)]

1.3修改用户密码

[外链图片转存失败(img-bdSKvJMu-1565246367677)(presto基于kerberos访问hive的安装.assets/1565165575878.png)]

1.5添加sudo权限

[外链图片转存失败(img-p5SsI9Md-1565246367678)(presto基于kerberos访问hive的安装.assets/1565165725158.png)]

root权限下,修改/etc/sudoers文件。

添加presto ALL=(ALL) NOPASSWD: ALL

2. 安装1.8jdk(切换到presto用户)

2.1上传jdk,解压tar包(),(这里我把jdk安装到了/home/presto。presto的家目录)

[外链图片转存失败(img-dLgpR4Ni-1565246367678)(presto基于kerberos访问hive的安装.assets/1565165809360.png)]

tar -xvzf jdk-8u221-linux-x64.tar.gz -C ~/

[外链图片转存失败(img-XL7kevno-1565246367679)(presto基于kerberos访问hive的安装.assets/1565165881238.png)]

2.2配置用户的环境属性

vi .bashrc

[外链图片转存失败(img-E6C4cP5t-1565246367679)(presto基于kerberos访问hive的安装.assets/1565166013308.png)]

export JAVA_HOME=/home/presto/jdk1.8.0_221
export PATH=.: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

2.2.1使文件生效

source .bashrc

2.2.2查看jdk是否安装成功

[外链图片转存失败(img-O1d96TdD-1565246367680)(presto基于kerberos访问hive的安装.assets/1565166176404.png)]

java -version

3. 安装presto

3.1下载presto-server-0.223.tar.gz上传到/home/presto

[外链图片转存失败(img-8FhkZSmE-1565246367680)(presto基于kerberos访问hive的安装.assets/1565167274597.png)]

3.2解压的路径(我是在/opt下创建module/目录,赋权chmod 777 /opt/module/,其实可以直接解压到/home/presto/目录下更好)

3.3解压完成

tar -xvzf ./presto-server-0.223.tar.gz -C /opt/module/

[外链图片转存失败(img-AYcZuR5l-1565246367681)(presto基于kerberos访问hive的安装.assets/1565167679930.png)]

3.4presto解压目录下,新建./etc/目录**。

mkdir ./etc

[外链图片转存失败(img-43zwbmaC-1565246367682)(presto基于kerberos访问hive的安装.assets/1565168018469.png)]

注意(此文件夹下放置的是presto的配置文件。重要)

3.5***4大配置文件***


Node Properties

复制代码
1
2
3
4
node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/presto/data

新建etc/node.properties

  • node.environment=production presto的环境名,一个presto集群的所有的节点环境名需要相同
  • node.id=ffffffff-ffff-ffff-ffff-ffffffffffff 每个节点唯一标识符。每个运行presto节点的只要保证node.id不同就行
  • node.data-dir=/var/presto/data 日志和数据存储的位置。可以默认不变。

[外链图片转存失败(img-bDUE32rX-1565246367682)(presto基于kerberos访问hive的安装.assets/1565168808723.png)]


JVM Config

复制代码
1
2
3
4
5
6
7
8
9
-server -Xmx16G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError

etc/jvm.config文件是启动java虚拟机的命令行的选项,因为文件不能被shell解释,所有注意不能使用空格和其他特殊的字符


Config Properties

etc/config.properties文件是presto节点的配置信息,非常重要。由于一个presto的节点可以单纯作为coordinator或者作为worker又或者同时作为coordinator和worker

最小的coordinator的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080

最小的worker的配置如下。可以直接copy

复制代码
1
2
3
4
5
6
7
coordinator=false http-server.http.port=8080 query.max-memory=50GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery.uri=http://example.net:8080

只有单节点或者测试presto的可以采用下列的配置

复制代码
1
2
3
4
5
6
7
8
9
coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 query.max-memory=5GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://example.net:8080
  • coordinator 允许这个节点作为presto的协调器coordinator.作用在于从客户端接受请求并执行查询

  • node-scheduler.include-coordinator 允许调度任务在这个协调器上。

  • http-server.http.port presto节点内外部的通讯的节点。这里这里需要查找8080端口是否被占用,这里我设置为8081

  • query.max-memory 查询可以用到的最大的分布式内存容量,默认就行。

  • query.max-memory-per-node 查询可以在任何一台机器上使用的最大用户内存默认

  • query.max-total-memory-per-node 查询可以在任何一台机器上使用的最大用户和系统内存,其中系统内存是在执行期间由读取器、写入器和网络缓冲区等使用的内存,默认

  • discovery.uri presto集群向coordinator 注册自己节点的信息


Log Levels

/etc/log.properties日志配置

复制代码
1
2
com.facebook.presto=INFO

4. 运行presto命令

后台启动服务

复制代码
1
2
bin/launcher start

前台启动服务

复制代码
1
2
bin/launcher run

查看presto是否启动成功

[外链图片转存失败(img-dmSNd7hh-1565246367683)(presto基于kerberos访问hive的安装.assets/1565227602852.png)]

kerberos认证

1. Coordinator Kerberos Authentication

coordinator协调器认证目的是为了coordinator可以通过https能够进行kerberos认证

1.1 MIT Kerberos Configuration

无需对此项更改 /etc/krb5.conf,使用集群已经配置好的信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[libdefaults] renew_lifetime = 7d forwardable = true default_realm = NEWLAND.COM ticket_lifetime = 24h dns_lookup_realm = false dns_lookup_kdc = false default_ccache_name = /tmp/krb5cc_%{uid} #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5 [domain_realm] NEWLAND.COM = NEWLAND.COM [logging] default = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log kdc = FILE:/var/log/krb5kdc.log [realms] NEWLAND.COM = { admin_server = ncmp246 kdc = ncmp246 }

1.2 Kerberos Principals and Keytab Files

presto coordinator 协调器需要有kerberos实体,用于连接presto coordinator

复制代码
1
2
3
4
5
sudo kadmin.local addprinc -randkey presto/ncmp247@NEWLAND.COM ktadd -k /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM

1.3 Java Cryptography Extension Policy Files

Java加密扩展策略文件Java运行时环境附带的策略文件限制了可以使用的加密密钥的强度。

US_export_policy.jar和local_policy.jar放置到$JAVA_HOME/jre/lib/security目录下

复制代码
1
2
3
cd $JAVA_HOME/jre/lib/security

[外链图片转存失败(img-eA9tkAa2-1565246367684)(presto基于kerberos访问hive的安装.assets/1565230133442.png)]

1.4 Java Keystore File for TLS

通过https访问presto coordinator使用kerberos认证的时候需要在coordinator 上创建一个Java keystore File

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd ~ keytool -genkeypair -alias presto -keyalg RSA -keystore keystore.jks Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: presto-coordinator.example.com What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=presto-coordinator.example.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes Enter key password for <presto> (RETURN if same as keystore password):

验证密钥存储文件的密码,并使用keytool查看其内容

复制代码
1
2
3
keytool -list -v -keystore ~/presto.jks

1.5 config.properties

Kerberos身份验证是在协调器节点的配置中配置的。属性文件。下面列出了需要添加的条目

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
http-server.authentication.type=KERBEROS http.server.authentication.krb5.service-name=presto http.server.authentication.krb5.service-hostname=presto.example.com http.server.authentication.krb5.keytab=/etc/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=/etc/presto_keystore.jks http-server.https.keystore.key=keystore_password
  • http-server.authentication.type Presto协调器的身份验证类型。必须设置为KERBEROS
  • http.server.authentication.krb5.service-name Presto协调器的Kerberos服务名称。必须匹配Kerberos主体
  • http.server.authentication.krb5.keytab 用于验证Kerberos主体的keytab的位置。
  • http.authentication.krb5.config Kerberos配置文件的位置。
  • http-server.https.enabled 为Presto协调器启用HTTPS访问。应该设置为true PRESTO-CLI是使用https访问的协调器
  • http-server.https.port HTTPS服务器端口
  • http-server.https.keystore.path 用于保护TLS的Java密钥存储文件的位置
  • http-server.https.keystore.key 密钥存储库的密码。这必须与创建密钥存储库时指定的密码匹配,刚才Java Keystore File for TLS步骤中配置的密码

1.6 Kerberos Verification

复制代码
1
2
3
4
$ kinit -kt /etc/presto/presto.keytab presto/ncmp247@NEWLAND.COM $ klist

2. hive security connector

etc/catalog/hive.config创建hive连接器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#基于hadoop2.x的配置 #连接器名/hive.metastore的地址/端口 connector.name=hive-hadoop2 hive.metastore.uri=thrift://10.1.8.247:9083 #namenode高可用 hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml #Hive Metastore Thrift Service Authentication hive.metastore.authentication.type=KERBEROS hive.metastore.service.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.principal=hive/ncmp247@NEWLAND.COM hive.metastore.client.keytab=/etc/security/keytabs/hive.service.keytab #Hdfs Authentication hive.hdfs.authentication.type=KERBEROS hive.hdfs.presto.principal=nn/ncmp247@NEWLAND.COM hive.hdfs.presto.keytab=/etc/security/keytabs/nn.service.keytab #hdfs导线加密 hive.hdfs.wire-encryption.enabled=true
  • connector.name=hive-hadoop2默认 基于hadoop2.X版本
  • hive.metastore.uri Hive的URI(s)将使用Thrift协议连接到
  • hive.config.resources hadoop 核心配置文件路径,为了高可用HA
  • hive.metastore.authentication.type hive 元数据验证类型 KERBEROS or NONE
  • hive.metastore.service.principal hive元数据kerberos服务实体名
  • hive.metastore.client.principal hive_cli客户端kerberos服务实体名
  • hive.metastore.client.keytab hive_cli客户端kerberos服务实体的keytab路径
  • hive.hdfs.authentication.type HDFS身份验证类型。可能的值是NONE或KERBEROS
  • hive.hdfs.presto.principal Presto在连接到HDFS时将使用的Kerberos主体。
  • hive.hdfs.presto.keytab HDFS客户端keytab位置

3.重新启动presto服务

bin/launcher start

命令行接口(command line interface)

下载presto-cli-0.223-executable.jar

复制代码
1
2
3
mv presto-cli-0.223-executable.jar presto

赋予执行权限

复制代码
1
2
3
chmod 770 presto

运行presto,在ncmp247机器上,执行下面命令即可,或者history | grep presto去查找历史记录

复制代码
1
2
3
presto --server ncmp247:8081 --catalog hive --schema default

[外链图片转存失败(img-NAcE1zvs-1565246367684)(presto基于kerberos访问hive的安装.assets/1565244507739.png)]

最后

以上就是深情月饼最近收集整理的关于presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装presto基于kerberos访问hive的安装的全部内容,更多相关presto基于kerberos访问hive内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(113)

评论列表共有 0 条评论

立即
投稿
返回
顶部