presto对接TDH5.2.4版本
Presto是什么?
Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。
Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。
它可以做什么?
Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。
Presto以分析师的需求作为目标,他们期望响应时间小于1秒到几分钟。 Presto终结了数据分析的两难选择,要么使用速度快的昂贵的商业方案,要么使用消耗大量硬件的慢速的“免费”方案。
TDH中和presto一样的组件叫做inceptor,是星环科技的sql查询引擎
由于inceptor上层程序连接,时不时会掉线,针对这个问题,现在通过presto进行数据查询
以下给出presto的配置对接步骤:
需要的包如下:
jdk1.8.0_241
presto-server-0.173.tar.gz
presto-cli-0.161-executable.jar
1.各节点: 创建 presto 用户,设置密码。
useradd presto passwd presto mkdir -p /opt/presto/data chown -R presto:presto /opt/presto/data
2.修改用户资源(root 用户)
各节点:修改用户可用资源配置。主要涉及: 用户最大可用的进程数、进程
能够打开文件的最大数目。
vi /etc/security/limits.conf
* soft noproc 10240 * hard noproc 10240 * soft nofile 10240 * hard nofile 10240
不同服务器的文件名有差异,本文以 90-nproc.conf 为例。
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 10240
配置完成后,需重新登陆服务器查验。
su - presto ulimit -u ulimit -n
3.准备程序
各节点: 上传 JDK 和 Presto 程序包,并解压。
tar -vxf jdk-8u111-linux-x64.tar.gz -C /opt/presto
tar -vxf presto-server-0.173.tar.gz -C /opt/presto
4.配置环境变量
各节点: 配置 presto 用户的 Java 环境变量。
vi /home/presto/.bash_profile
export JAVA_HOME=/opt/presto/jdk1.8.0_111
export PATH=$PATH:$JAVA_HOME/bin
source /home/presto/.bash_profile
java -version
配置 Presto
5.配置 JVM
各节点: 新建 presto-server-0.173/etc 目录, 在该目录下新建、配置 jvm.conf
ig 文件。
mkdir /opt/presto/presto-server-0.173/etc
vi /opt/presto/presto-server-0.173/etc/jvm.config
-server -Xmx32G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -DHADOOP_USER_NAME=hdfs
6.配置日志级别
各节点: 新建、 配置 log.propertis。
vi /opt/presto/presto-server-0.173/etc/log.propertis
com.facebook.presto=INFO
7.配置节点属性
各节点: 新建、配置 node.properties(获取 node.id, 每个节点的 node.id 须不
一样)。
uuidgen
vi /opt/presto/presto-server-0.173/etc/node.properties
# presto 名称, 同一集群必须相同 node.environment=production # presto 节点唯一标识, 执行命令 uuidgen 读取 node.id=ffffffff-ffff-ffff-ffff-ffffffffffff # 日志目录、 计算临时存储目录, presto 用户有读写权限 node.data-dir=/opt/presto/data
配置属性
各节点: 新建、配置 config.properties。
vi /opt/presto/presto-server-0.173/etc/config.properties
coordinator 节点
coordinator=true # 是否复用为 worker 节点, false 为否。默认为 false node-scheduler.include-coordinator=false # 本节点 presto 服务端口号 http-server.http.port=8888 # query.max-memory-per-node * worker 节点的个数 query.max-memory=54GB query.max-memory-per-node=18GB discovery-server.enabled=true # 本节点、 端口号 discovery.uri=http://coordinator 节点 ip:8888
worker 节点
coordinator=false # 本节点 presto 服务端口号 http-server.http.port=8888 # query.max-memory-per-node * worker 节点的个数 query.max-memory=54GB query.max-memory-per-node=18GB # Presto 中 coordinator 所在节点,以及其端口号 discovery.uri=http://coordinator 节点 ip:8888
8.配置 hive 连接信息
各节点: 创建 catalog 子目录, 在该目录新建、 配置 hive.properties。
mkdir /opt/presto/presto-server-0.173/etc/catalog
vi /opt/presto/presto-server-0.173/etc/catalog/hive.properties
1 connector.name=hive-hadoop2 2 hive.metastore.uri=thrift://198.28.1.82:9083 3 hive.config.resources=/opt/presto/core-site.xml,/opt/presto/hdfs-site.xml 4 5 hive.metastore.authentication.type=KERBEROS 6 hive.metastore.service.principal=hive/ht-28-tdh82@TDH 7 hive.metastore.client.principal=hive@TDH 8 hive.metastore.client.keytab=/opt/presto/inceptor.keytab 9 10 hive.hdfs.authentication.type=KERBEROS 11 #hive.hdfs.impersonation.enable=true 12 hive.hdfs.presto.principal= hive@TDH 13 hive.hdfs.presto.keytab=/opt/presto/inceptor.keytab
注意hive.metastore.service.principal=hive/ht-28-tdh82@TDH 一定要加上hosname,这是与开源hive不同的地方
注意#hive.hdfs.impersonation.enable=true 需要注释这行,否则会有错误:
以上就是presto的配置流程
各节点:启动 Presto 服务。
/opt/presto/presto-server-0.173/bin/launcher start
通过 Presto 客户端,访问 Hive 数据进行验证。
上传客户端,授权。 示例如下,其中 default 为数据库名称。
chmod +x presto-cli-0.161-executable.jar
./presto-cli-0.161-executable.jar --server coordinator 节点 ip:8888 --catalog hive --schema default
执行该语句后, 可在 Presto Shell 中执行:
presto> show tables;
作者:少帅
出处:少帅的博客--http://www.cnblogs.com/wang3680
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但请保留该声明。
支付宝 微信