You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Trino+Hive+Minio执行建Schema SQL遇SSL异常求助

Trino+Hive Metastore+Minio SSL异常排查建议

问题场景

执行以下SQL时触发SSL异常:

create schema minio.ukhd
with (location = 's3a://bronze/ukhd');

报错核心信息:

Unable to execute HTTP request: Unsupported or unrecognized SSL message

完整堆栈片段:

org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [65536]: Query failed (#20240627_164652_00000_wnvna): Unable to execute HTTP request: Unsupported or unrecognized SSL message
    at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
    ...
    Caused by: javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
    ...

环境配置说明

  • Minio使用正规CA签发证书,已通过Dockerfile将证书导入Trino和Hive的Java信任库:
RUN mkdir /opt/trino
RUN mkdir /opt/trino/certs

COPY public.crt /opt/trino/certs/public.crt
RUN $JAVA_HOME/bin/keytool -import -trustcacerts -alias miniocert -file /opt/trino/certs/public.crt -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt
  • Trino config.properties 关键配置:
coordinator=true
node-scheduler.include-coordinator=true

http-server.https.enabled=true
http-server.https.port=8443
http-server.http.port=8080
http-server.https.keystore.path=/usr/lib/jvm/jdk-jdk-22.0.1+8/lib/security/cacerts
http-server.https.keystore.key=changeit
discovery.uri=http://trino:8080

log.path=/var/log/trino/server.log
http-server.log.path=/var/log/trino/http-request.log
  • Hive metastore-site.xml SSL相关配置:
<property>
 <name>hive.server2.use.SSL</name>
 <value>true</value>
</property>

<property>
 <name>hive.server2.ssl.keystore.path</name>
 <value>/usr/local/openjdk-8/lib/security/cacerts</value>
</property>

<property>
 <name>hive.server2.ssl.keystore.password</name>
 <value>changeit</value>
</property>

<property>
 <name>hive.metastore.ssl.truststore.path</name>
 <value>/usr/local/openjdk-8/lib/security/cacerts</value>
</property>

<property>
 <name>hive.metastore.ssl.truststore.password</name>
<value>changeit</value>
</property>
  • 部署信息:Docker环境,镜像版本为minio:latest(450)、apache/hive:4.0.0、trinodb/trino:latest、mysql:8.0.28;依赖库版本hadoop-aws-3.3.0.jar、aws-java-sdk-bundle-1.12.750.jar

排查方向建议

  • 确认Minio连接协议与端口匹配:该报错通常是SSL层收到非SSL消息,核心原因是Trino/Hive尝试用HTTPS连接Minio的HTTP端口,或反之。检查Minio端口映射:默认SSL端口9001、HTTP端口9000,确认Trino的Minio catalog配置中endpoint是否指定了正确的协议和端口(如https://minio:9001而非http://minio:9000)。
  • 验证证书导入有效性:分别进入Trino和Hive的Docker容器,执行keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit | grep miniocert,确认证书成功导入对应Java环境的信任库。注意Trino用JDK22、Hive用OpenJDK8,需检查各自$JAVA_HOME路径下的cacerts文件。
  • 检查Trino Minio Catalog配置:确认catalog配置文件(如minio.properties)中SSL参数正确,示例:
    hive.s3.ssl.enabled=true
    hive.s3.endpoint=https://minio:9001
    hive.s3.path-style-access=true
    
    排查是否存在hive.s3.ssl.enabled=false这类冲突参数。
  • 配置Hive Metastore与Minio的SSL连接:在Hive的core-site.xml中添加S3相关SSL参数:
    <property>
        <name>fs.s3a.connection.ssl.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>fs.s3a.endpoint</name>
        <value>https://minio:9001</value>
    </property>
    
    确保Hive的S3客户端指向Minio的SSL端口和协议。
  • 测试Minio证书信任性:在Trino容器内执行curl -v https://minio:9001,验证证书是否能被正常信任,排查证书链缺失或证书本身的问题。
  • 检查网络与端口连通性:确认Docker容器间端口映射正确,Minio的SSL端口在容器网络中可达,无防火墙或网络策略拦截;同时排查容器内是否存在端口冲突导致服务未监听预期端口。
  • 排查SDK版本兼容性:当前hadoop-aws-3.3.0与aws-java-sdk-bundle-1.12.750可能存在版本不匹配,尝试使用官方推荐的组合(如hadoop-aws 3.3.0对应aws-java-sdk-bundle 1.11.901),避免版本冲突引发的SSL握手异常。

内容的提问来源于stack exchange,提问作者Joe Ingle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:10:12