【问题标题】:Apache Drill in distributed Mode分布式模式下的 Apache Drill
【发布时间】:2015-06-04 14:19:00
【问题描述】:
我开始探索演练,以满足我们在半结构化数据上运行 SQL 的要求。我已经用 zookeeper 设置了一个 4node 钻集群。对它的实际工作原理有几个问题,
-
当我使用 dfs(本地文件系统)以分布式模式运行 Drill 时,我在其中一个节点(比如 n1)上有一个 1GB Json 文件。我可以通过从任何节点(n1、n2、n3、n4)启动 sqlline 来运行查询,inspire 只有在 n1 上有日期。我的问题是
一个。查询是否在所有节点上执行?即,Drill 会通过将数据分发到其他节点 n2,n3n4 来并行化查询执行吗?
b.如果否,通过在所有节点 n2,n3,n4 上复制相同的文件将有助于利用 Drill 的 MPP 架构?
【问题讨论】:
标签:
apache
hive
mapr
apache-drill
【解决方案1】:
查询是否在所有节点上执行?
也许,节点必须运行 Drill,并且您要查询的数据必须在分布式文件系统上,例如 HDFS。 Drill 不分发文件。
运行 Drillbit 服务的节点(你安装 Drill 的地方)参与查询工作。只有出现在查询中的列才会从文件中加载。 Drill 尝试将查询中的任何过滤器推送到叶节点,以防止节点发送未通过过滤器的行。根据docs,Drill 在查询执行期间最大化数据局部性,而无需通过网络或节点之间移动数据。 Minor Fragments 部分讨论并行化。当片段中的记录数达到 100,000 时,Drill 会并行操作。
【解决方案2】:
Drill 根据元数据执行所有查询。因此,如果您的目标以分布式格式跨节点存储,则同样适用于 Drill。在其他情况下,它将仅在特定节点上运行。
考虑指向 RDBMS 源的钻取,然后它在一个节点上执行查询。