Apache Drill 无法从 HDFS 读取文件(资源错误:无法创建模式树)
Posted
技术标签:
【中文标题】Apache Drill 无法从 HDFS 读取文件(资源错误:无法创建模式树)【英文标题】:Apache Drill unable to read files from HDFS (Resource error: Failed to create schema tree) 【发布时间】:2017-08-23 16:23:52 【问题描述】:在我们的 HDFS 集群的一个边缘节点上设置 Drill 后,我无法读取任何 hdfs 文件。我可以从本地文件中查询数据(只要它们在具有 777 权限的文件夹中),但是从 hdfs 查询数据失败并出现以下错误:
错误:资源错误:创建架构树失败。
[错误 ID:d9f7908c-6c3b-49c0-a11e-71c004d27f46 on 服务器名称:31010](状态=,代码=0)
查询:
0: jdbc:drill:zk=local> select * from hdfs.`/names/city.parquet` limit 2;
从本地文件查询可以正常工作:
0: jdbc:drill:zk=local> select * from dfs.`/tmp/city.parquet` limit 2;
我的 HDFS 设置类似于 DFS 设置,除了连接 URL 是服务器地址而不是 file:///
我在网上找不到任何有关此钻孔错误的信息。
【问题讨论】:
您在钻头日志中看到任何信息吗?您可以使用 $DRILL_CONF/logback.xml 启用 DEBUG 级别的日志记录。您还启用了模拟和身份验证吗?请同时包含您的 Drill-override.conf 和存储插件定义。 【参考方案1】:“..在边缘节点之一上..”
Drill-bits 也可以在 Hadoop 集群的数据节点上运行,而不仅仅是在边缘节点上。这将有助于数据局部性。
现在,出现您看到的错误,看起来您的一个钻头可能已关闭,或者您的工头节点(您连接的那个)无法连接到其他节点。
如果您可以提供更多信息,例如您的集群中有多少钻头,这将进一步提供帮助。
一个好的起点应该是,检查:
select * from sys.drillbits;
这将告诉您哪些节点已启动/已关闭。
【讨论】:
我在嵌入式模式下运行drill,所以我只在其中一个节点上安装了它。运行该查询也会返回相同的错误:错误:资源错误:无法创建架构树。【参考方案2】:在您的 Apache Drill 的 conf 目录中,您需要将以下行添加到您的 Drill-override.conf 文件中
drill.exec:
cluster-id: "drillbits1",
zk.connect: "localhost:2181",
sys.store.provider.local.path="/mypath"
在这里,您需要提供系统路径来代替“/mypath”,drill 将在其中保存存储插件。
https://community.mapr.com/thread/20905-re-help-with-error-resource-error-failed-to-create-schema-tree 您可以查看上面的链接。
【讨论】:
以上是关于Apache Drill 无法从 HDFS 读取文件(资源错误:无法创建模式树)的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 apache Drill 1.2 配置 postgreSQL JDBC 驱动程序
快速 Hadoop 分析(Cloudera Impala vs Spark/Shark vs Apache Drill)