关于Trino连接phoenix5.x那些事

郑和泰
2023-12-01

关于Trino连接phoenix5.x那些事

1. 下载Trino包

trino-server-359.tar.gz

2.Trion部署环境

2.1 jdk

	Trino 需要 64 位版本的 Java 11,最低要求版本为 11.0.11。较早的补丁版本(例如 11.0.2)不起作用,较早的主要版本(例如 Java 8)也不起作用。

	官方建议使用[Azul Zulu](https://www.azul.com/downloads/zulu-community/) 作为 Trino 的 JDK,因为 Trino 已针对该发行版进行了测试。Zulu 也是[Trino Docker 镜像](https://hub.docker.com/r/trinodb/trino)使用的 JDK 。

	由于公司使用的是jdk1.8 ,为避免版本更新对集群现有项目的影响,故在各台服务器中添加新的用户,在新的用户中安装jdk11,并在该用户中配置jdk11环境变量。
	useradd trino
	tar -zxvf zulu11.48.21-ca-jdk11.0.11-linux_x64.tar.gz 
	mv zulu11.45.27-ca-jdk11.0.10-linux_x64 jdk11
	chown -R trino ./jdk11
	
	vim ~/.bash_profile
	
	export JAVA_HOME=/home/trino/jdk11
	export JRE_HOME=$JAVA_HOME/jre
	export PATH=$JAVA_HOME/bin:$PATH
	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar

	source ~/.bash_profile
	java -version

1.使用如下命令添加trino用户

	useradd trino 

2.上传tar包至服务器指定路径下

3.解压缩.tar.gz

tar -zxvf zulu11.48.21-ca-jdk11.0.11-linux_x64.tar.gz 

4.修改目录所有者及用户组

chown -R trino ./zulu11.48.21-ca-jdk11.0.11-linux_x64

5.配置环境变量

su trino

vim ~/.bash_profile
export JAVA_HOME=/home/presto/jdk11
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar

source ~/.bash_profile

6.使用以下命令验证jdk11是否安装成功

java -version

2.2.操作系统

  • 需要 64 位

  • 首选较新版本,尤其是在容器上运行时

  • 为运行 Trino 进程的用户提供足够的 ulimit。这些限制可能取决于您使用的特定 Linux 发行版。特定 Trino 实例所需的打开文件描述符的数量大致与集群中的机器数量成比例,乘以一些取决于工作负载的因素。我们推荐以下限制,通常可以在 中设置/etc/security/limits.conf

    trino soft nofile 131072
    trino hard nofile 131072
    

2.3.Python

  • version 2.6.x, 2.7.x, or 3.x

  • required by the bin/launcher script only

3.安装Trino

3.1 解压tar 包

tar -zxvf trino-server-359.tar.gz

3.2 创建etc目录

cd/home/trino/trino-server-359
mkdir etc

3.3 添加配置文件

每个 Trino 服务器都可以充当协调器和工作器,但让一台机器只执行协调工作可以在更大的集群上提供最佳性能。

config.properties 分为协调器配置和worker 配置

1.touch config.properties

以下是协调器的最小配置:

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.uri=http://example.net:8080

这是worker的最低配置:

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

或者,如果您要设置一台用作协调器和工作器的机器进行测试,请使用以下配置:

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.uri=http://example.net:8080

这些属性需要一些解释:

  • coordinator: 允许此 Trino 实例充当协调器,以便接受来自客户端的查询并管理查询执行。

  • node-scheduler.include-coordinator:允许在协调器上安排工作。对于较大的集群,协调器上的处理工作会影响查询性能,因为机器的资源无法用于调度、管理和监控查询执行的关键任务。

  • http-server.http.port: 指定 HTTP 服务器的端口。Trino 使用 HTTP 进行所有内部和外部通信。

  • query.max-memory:查询可能使用的最大分布式内存量。

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

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

  • discovery.uri:Trino 协调器有一个发现服务,所有节点都使用它来找到彼此。每个 Trino 实例在启动时向发现服务注册自己,并不断地心跳以保持其注册处于活动状态。发现服务与 Trino 共享 HTTP 服务器,因此使用相同的端口。替换example.net:8080以匹配 Trino 协调器的主机和端口。如果您在协调器上禁用了 HTTP,则 URI 方案必须是https,而不是http

2.touch jvm.config
-server
-Xmx16G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-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
3.touch node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/trino/data

上述属性描述如下:

  • node.environment: 环境名称。集群中的所有 Trino 节点必须具有相同的环境名称。名称必须以小写字母数字字符开头,并且只能包含小写字母数字或下划线 ( _) 字符。

  • node.id:此 Trino 安装的唯一标识符。这对于每个节点必须是唯一的。此标识符应在 Trino 重新启动或升级期间保持一致。如果在一台机器上运行多个 Trino 安装(即同一台机器上的多个节点),每个安装必须有一个唯一的标识符。标识符必须以字母数字字符开头,并且只能包含字母数字-、 或_ 字符。

  • node.data-dir:数据目录的位置(文件系统路径)。Trino 在这里存储日志和其他数据。

4.touch log.properties
io.trino=INFO

这将最低级别设置为INFO两个 io.trino.serverio.trino.plugin.hive。默认的最低级别是INFO,因此上面的例子实际上并没有改变任何东西。共有四个级别:DEBUGINFOWARNERROR

4.连接器phoenix

mkdir etc/catalog
cd etc/catalog

vim phoenix.properties

connector.name=phoenix
phoenix.connection-url=jdbc:phoenix:host1,host2,host3:2181:/hbase
phoenix.config.resources=/path/to/hbase-site.xml

Hadoop 资源文件的可选路径,例如hbase-site.xml用于加载自定义 Phoenix 客户端连接属性。

对于 HBase 2.x 和 Phoenix 5.x(5.1.0 或更高版本),请使用:

connector.name=phoenix5

5.启动Trino

bin/launcher run

6.使用dbeaver连接trino

6.1 下载trino jdbc驱动包

下载trino- jdbc -359.jar

将jar包添加到dbeaver驱动中

6.2 编辑连接

以下是用于创建连接的JDBC URL示例:
jdbc:trino://example.net:8080/phoenix/dw 

6.3连接trino

附:

https://trino.io/docs/current/installation/jdbc.html?highlight=jdbc

https://trino.io/docs/current/overview.html

 类似资料: