创建Hive Catalog后show tables正常,查询时出现UnknownHostException错误
Apache Doris Hive Catalog查询报UnknownHostException问题排查
问题现象
创建Hive Catalog后,执行show tables等元数据命令正常,但执行查询语句时抛出java.net.UnknownHostException: xxxxx错误。具体复现步骤:
- 创建Hive Catalog:
CREATE CATALOG hive_catalog PROPERTIES ( 'type'='hms', 'hive.metastore.uris' = 'thrift://172.0.0.1:9083', 'hadoop.username' = 'hive' );
- 元数据命令正常执行:
switch hive_catalog; show databases; use my_hive_db_name; show tables;
可正常获取Hive数据库和表的元数据。
3. 查询语句报错:
select * from hive_catalog.my_hive_db_name.my_table_name;
报错信息:
java.net.UnknownHostException: xxxxx
原因分析
show tables等命令仅与**Hive Metastore(HMS)**交互,获取的是表的元数据信息(库名、表名、表结构等),不需要访问HDFS存储的实际数据文件,所以只要Doris能连接到HMS服务,就能正常返回结果。- 查询语句需要从HDFS读取实际数据文件,而HMS中存储的HDFS文件路径使用了主机名(比如
hdfs://xxxxx:9000/user/hive/warehouse/...),Doris集群的所有节点无法解析这个主机名xxxxx,因此抛出UnknownHostException。
解决方案
针对这个问题,有几种可行的解决方式:
在Doris所有节点配置主机名映射
在每个Doris节点的/etc/hosts文件中添加映射关系:<主机xxxxx对应的IP地址> xxxxx添加后重启Doris服务确保生效。
修改Hive的HDFS路径配置为IP地址
如果有权限修改Hive配置,可调整Hive的存储路径使用IP而非主机名,这样HMS返回的文件路径就是IP形式,Doris能直接访问。在Doris集群配置HDFS的nameservice(如果HDFS是HA集群)
如果HDFS是HA模式,确保Doris所有节点的core-site.xml和hdfs-site.xml中配置了正确的nameservice信息,并且能解析nameservice对应的所有节点主机名。
内容的提问来源于stack exchange,提问作者Young
相关产品推荐
相关产品推荐

