如何配置 drill 以使用所有节点进行查询(通过创建多个碎片)

How to configure drill to use all the nodes for a query (by creating multiple fragements)

我在两个节点上使用 Drill (1.3)。说:

  1. 192.xxx.xxx.xxx
  2. 192.yyy.yyy.yyy

我尝试在 csv 文件(10 亿条记录)上查询(来自 192.xxx.xxx.xxx):

select count(*) from dfs.`home/impadmin/BiggerBoy.csv`

此外,我尝试在 Hive & Oracle 上加入查询 (from 192.xxx.xxx.xxx) :

select * from hive.testDB.`catalog_sales` x inner join oracle.ILABUSER.`customer_address` y on y.CA_ADDRESS_SK = x.CS_BILL_ADDR_SK group by  y.CA_CITY limit 100

每次我得到(来自 Drill UI):

Query Profile
STATE: COMPLETED

FOREMAN: 192.xxx.xxx.xxx

TOTAL FRAGMENTS: 1

为什么没有使用另一个节点。那么在这种情况下使用多个节点有什么好处。

Drill 会自行处理还是我需要配置一些东西?

如果有人能够获得多个片段,请分享您的用例。

假设您使用的是分布式文件系统,我从 this post 了解到本地文件系统插件 (dfs) 不适用于多个钻头。尽管引用的 post 主要解决了有关写入的问题,但它听起来适用于您有关读取的问题。

要将 Drill 配置为使用多个节点,请参阅 Installing Drill in Distributed Mode 下的小节。

查询分布取决于查询的复杂性。当规划器构建查询计划时,它将计划分成多个主要片段,并且通常它们之间存在某种分布。在单个节点中,您可以在同一个节点中拥有多个小片段 运行,例如,在 32 列机器上,您可以 运行 多达 23 个小片段,大约为 75%。在多个节点上,例如在 4 个节点上,每个节点可能 运行 23 个次要片段用于同一查询。

如果您在工头节点上有一个 运行 的根片段,Drill 无法拆分它。叶片段的分布取决于查询,并受可拆分输入的数量限制。如果您有一个不可拆分的文件,则查询计划将使用一个叶子。如果计划中有中间片段,则可以分发它。我无法详细了解如何将单个叶和中间片段的分布限制在一个节点上。

在查询配置文件中,当您单击根片段时,您只会看到单个次要片段,并且每个片段的主机名都与工头名称相同。如果单击查询配置文件中的多个主要片段之一,您会看到查询已分发到的不同主机名。