CentOS 部署Trino 集成Hive Elasticsearch
前提条件
-
64位CentOS操作系统
-
调整用户的文件描述符的大小。官网推荐以下限制,通常可以在
/etc/security/limits.conf
中设置:trino soft nofile 131072 trino hard nofile 131072
-
64位JDK17.0.3+
-
建议在操作系统层面禁用交换空间
操作步骤
采用单个节点即是协调器又是Worker的部署方式。
部署服务端
# 新建用户组与用户
groupadd trino -g 1000;
useradd -g trino -u 1000 trino;
# 创建对应的文件夹
mkdir -p /home/trino/software
mkdir -p /opt/software/trino
mkdir -p /opt/software/trino/logs
mkdir -p /data01/trino_demo1
# 将安装包解压出来与创建软链接
tar -zxvf /opt/software_package/jdk-17_linux-x64_bin.tar.gz -C /opt/software/trino/
tar -zxvf /opt/software_package/trino-server-418.tar.gz -C /opt/software/trino/
ln -nsf /opt/software/trino/jdk-17.0.7 /home/trino/software/java
ln -nsf /opt/software/trino/trino-server-418 /home/trino/software/trino-server
ln -nsf /opt/software/trino/logs /home/trino/logs
# 配置trino用户JDK
vim /home/trino/.bashrc
export JAVA_HOME=/home/trino/software/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
source /home/trino/.bashrc
# 配置trino--文件的填充内容见下文配置说明章节
mkdir -p /opt/software/trino/trino-server-418/etc
mkdir -p /opt/software/trino/trino-server-418/etc/catalog
vim /opt/software/trino/trino-server-418/etc/node.properties
vim /opt/software/trino/trino-server-418/etc/jvm.config
vim /opt/software/trino/trino-server-418/etc/config.properties
vim /opt/software/trino/trino-server-418/etc/log.properties
vim /opt/software/trino/trino-server-418/etc/catalog/hive.properties
vim /opt/software/trino/trino-server-418/etc/catalog/elasticsearch.properties
chown -R trino:trino /home/trino;
chown -R trino:trino /opt/software/trino;
chown -R trino:trino /data01/trino_demo1;
# 启动TrinoServer
su - trino
sh software/trino-server/bin/launcher start
# 检查启动日志
less /data01/trino_demo1/var/log/launcher.log
less /data01/trino_demo1/var/log/server.log
部署Cli客户端
su - trino
# 为Cli客户端jar增加执行权限
chmod +x /opt/software/trino/trino-cli-418-executable.jar
# 创建软链接执行
ln -nsf /opt/software/trino/trino-cli-418-executable.jar /home/trino/software/trino-cli
cd /home/trino/software/
# 启动客户端 --server是coordinator的地址
./trino-cli --server http://190.168.1.1:9999
# 查询连接器目录 catalogs
show catalogs;
# 指定连接器启动
./trino-cli --server http://190.168.1.1:9999 --catalog hive
./trino-cli --server http://190.168.1.1:9999 --catalog hive --schema testdb
# 查询 catalog(hive)下的schemas
show schemas from hive;
配置说明
配置trino服务端
在安装目录内创建一个etc
目录。这里面有以下配置:
-
node.properties
:节点的环境配置node.environment=trino_demo1 node.id=ffffffff-ffff-ffff-ffff-ffffffffffff # 不支持多目录 node.data-dir=/data01/trino_demo1
上述属性描述如下:
node.environment
: 环境的名称。一个集群中的所有Trino节点必须有相同的环境名称。该名称必须以小写字母、数字字符开始,并且只包含小写字母、数字或下划线(_
)字符。node.id
: 这个Trino安装的唯一标识符。这对每个节点都必须是唯一的。这个标识符在Trino的重启或升级中应保持一致。如果在一台机器上运行多个Trino安装(即同一台机器上的多个节点),每个安装必须有一个唯一的标识符。该标识符必须以字母、数字字符开始,并且只包含字母数字、-
或_
字符。node.data-dir
: 数据目录的位置(文件系统路径)。Trino在这里存储日志和其他数据。
-
jvm.config
:Java虚拟机的命令行选项,官网推荐配置:-DHADOOP_USER_NAME=bigdata -server -Xmx16G -XX:InitialRAMPercentage=80 -XX:MaxRAMPercentage=80 -XX:G1HeapRegionSize=32M -XX:+ExplicitGCInvokesConcurrent -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:ReservedCodeCacheSize=512M -XX:PerMethodRecompilationCutoff=10000 -XX:PerBytecodeRecompilationCutoff=10000 -Djdk.attach.allowAttachSelf=true -Djdk.nio.maxCachedBufferSize=2000000 -XX:+UnlockDiagnosticVMOptions -XX:+UseAESCTRIntrinsics # Disable Preventive GC for performance reasons (JDK-8293861) -XX:-G1UsePreventiveGC
Xmx
的大小建议使用占总可用内存的70%到85%的数值- 建议在生产集群中使用超过32GB的大内存分配。
-
config.properties
:Trino服务配置文件。coordinator=true node-scheduler.include-coordinator=true http-server.http.port=9999 discovery.uri=http://190.168.1.1:9999
每台Trino服务器都可以作为coordinator和worker。
一个集群需要包括一个coordinator,将一台机器专门用于只执行协调工作,在更大的集群上提供最佳性能。并行化是通过使用许多worker来实现的。
属性说明
coordinator
: 允许这个Trino实例作为一个coordinator,所以要接受客户的查询并管理查询的执行。node-scheduler.include-coordinator
: 允许在coordinator上进行工作调度。对于较大的集群,在coordinator上处理工作会影响查询性能,因为机器的资源无法用于调度、管理和监控查询执行的关键任务。http-server.http.port
: 指定HTTP服务器的端口。Trino使用HTTP进行所有通信,包括内部和外部。discovery.uri
: Trino coordinator有一个发现服务,所有节点都用它来寻找对方。每个Trino实例在启动时向发现服务注册,并不断地心跳以保持其注册的有效性。发现服务与Trino共享HTTP服务器,因此使用相同的端口。替换example.net:8080
以匹配Trinocoordinator的主机和端口。如果你在coordinator上禁用了HTTP,URI方案必须是https
,而不是http
。
-
log.properties
:日志配置文件io.trino=INFO io.trino.server.PluginManager=DEBUG com.ning.http.client=WARN
允许为命名的日志记录器层次设置最小日志级别。每个日志记录器都有一个名字,通常是使用该日志记录器的类的完全合格名称。记录仪有一个基于名称中的点的层次结构,就像Java包。
这将为
io.trino.server
和io.trino.plugin.hive
设置最小级别为INFO
。默认的最小级别是INFO
。有四个级别:DEBUG
、INFO
、WARN
和ERROR
。 -
catalog
:连接器目录,连接器的配置文件存放地址
Hive连接器
- Hive连接器需要一个Hive元存储服务(HMS),或者Hive元存储的兼容实现,比如AWS Glue Data Catalog。
- 支持Apache Hadoop HDFS 2.x和3.x。
- 协调者和所有工作者都必须有对Hive元存储和存储系统的网络访问。
- 使用Thrift协议访问Hive元存储。
- 集成架设在高可用的HDFS集群的Hive时,需要拥有hdfs集群的配置文件
core-site.xml
,hdfs-site.xml
。通过hive.config.resources
属性来引用你的HDFS配置文件
hive.properties
配置文件:
connector.name=hive
hive.metastore.uri=thrift://190.168.1.1:9083,thrift://190.168.1.2:9083
hive.config.resources=/home/trino/software/trino-server/etc/hadoop/core-site.xml,/home/trino/software/trino-server/etc/hadoop/hdfs-site.xml
# 可选
hive.allow-add-column=true
hive.allow-drop-column=true
hive.allow-drop-table=true
hive.allow-rename-table=true
hive.allow-comment-table=true
hive.allow-comment-column=true
hive.allow-rename-column=true
Elasticsearch连接器
- 版本要求:(Elasticsearch 6.6.0 or later) or OpenSearch (1.1.0 or later) 。
elasticsearch.properties
配置文件:
connector.name=elasticsearch
elasticsearch.host=190.168.1.1,190.168.1.2,190.168.1.3
elasticsearch.port=9200
elasticsearch.default-schema-name=default