如何配置钻取以使用查询的所有节点(通过创建多个fragements)

时间:2015-11-27 07:49:08

标签: distributed apache-drill

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

  1. 192.xxx.xxx.xxx
  2. 192.yyy.yyy.yyy
  3. 我尝试在csv文件(1000万条记录)上查询(来自192.xxx.xxx.xxx ):

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

    另外,我尝试在Hive&上加入查询(来自192.xxx.xxx.xxx )。 Oracle

    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
    

    为什么不使用其他节点。那么在这种情况下使用多个节点的好处是什么呢。

    Dr Drill单独处理这个问题还是我需要配置一些东西?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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