Configure Drill

Configure Drill Introduction

本节简要描述如下键钻配置任务,并提供连接配置过程:node

  • 内存配置apache

  • 多组用户配置并发

  • 性能和功能配置函数

  • 查询配置文件数据存储配置性能

内存配置 测试

使用钻时,您须要提供足够的内存钻单独或在运行时其余工做负载集群。在下一节中, “配置钻记忆” 描述如何为钻集群配置钻内存集群。ui

多租户配置 操作系统

您能够为多租户集群配置资源或共享一个Drillbit在一个集群中。线程

性能和功能配置 code

您还能够修改选项对性能或功能。例如,更改默认的存储格式是一个典型的功能变化。ctanging的默认存储格式是典型的改变函数。CTAS声明默认存储格式是Parquet。使用一个配置选项,您能够修改钻存储的输出数据用CSV或JSON格式。这个部分,“配置选项介绍”总结了你能够配置的许多选项。

查询配置文件数据存储配置

为了不问题使用Web控制台,您须要配置管理员PStore

←配置钻 配置钻内存→

配置钻内存

2016年2月6日
您能够配置的直接分配的内存数量分配给Drillbit查询处理的任何钻集群,多用户组或者单用户。 的默认内存Drillbit是 8G,但16G更好,或者更高,这取决于工做负载。Drillbit分配查询操做不能超过直接内存的总量这个限制。

钻机使用Java直接内存和执行操做在内存中时表现良好,而不是存储在磁盘上的操做。钻不写入磁盘,除非绝对必要,不像MapReduce,在每一个阶段全部工做都写入磁盘。

JVM的堆内存并不限制直接可用的Drillbit内存。钻的堆内存一般是设定在4-8G(默认值是4),它应该足够了,由于钻避免数据坐在堆内存。

1.5的钻头,钻使用一个新的分配器,提升操做员的使用直接存储器和更准确地跟踪内存使用。 因为这一变化,操做符(在查询中,成功地在之前版本)可能没有足够的内存,致使失败的查询和内存不足错误而不是溢出到磁盘上。

planner.memory.max_query_memory_per_node系统选项值集直接分配最大容许的内存给每一个查询操做符在一个节点上。若是一个查询计划包含多个运营商,他们都分享这个内存。用短的操做符运行查询时若是遇到内存问题,增长这个选项的值。若是您在增长内存以后继续遇到内存问题,你也能够减小planner.width.max_per_node选项的值选择减小每一个节点级别的并行性。然而,这可能会增长一个查询所需的时间来完成。

修改Drillbit记忆

您能够修改内存中的每一个Drillbit节点集群。修改内存Drillbit,启动Drillbit脚本,编辑 XX:MaxDirectMemorySize参数, drill-env.sh,位于 < drill_installation_directory > / conf.

请注意 
若是XX:MaxDirectMemorySize没有设置,限制取决于可用的系统内存的数量。

在您编辑< drill_installation_directory > / conf / drill-env.sh以后,在节点上从新启动Drillbit。

关于Drillbit启动脚本

drill-env.sh 文件包含如下选项:

DRILL_MAX_DIRECT_MEMORY="8G"
DRILL_MAX_HEAP="4G"

export DRILL_JAVA_OPTS="-Xms1G -Xmx$DRILL_MAX_HEAP -XX:MaxDirectMemorySize=$DRILL_MAX_DIRECT_MEMORY -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=1G -ea"
  • DRILL_MAX_DIRECT_MEMORY 是Java直接内存限制每一个节点。

  • DRILL_MAX_HEAP是JVM堆的最大理论限制JVM每一个节点。

  • Xmx是为Java虚拟机(JVM)指定的最大内存分配池。

  • Xms指定初始内存分配池。

若是性能是一个问题,用-Dbounds = false代替-ea flag,如如下示例所示:

export DRILL_JAVA_OPTS="-Xms1G -Xmx$DRILL_MAX_HEAP -XX:MaxDirectMemorySize=$DRILL_MAX_DIRECT_MEMORY -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=1G -Dbounds=false"

←配置钻的介绍 配置一个多租户集群→

Configuring a Multitenant Cluster

Configuring a Multitenant Cluster Introduction

钻支持多个用户共享一个Drillbit和运行Drillbits分开在不一样的集群中的节点。钻一般沿着其余工做负载,包括如下:

  • Mapreduce

  • Yarn

  • HBase

  • Hive和Pig

  • Spark

为使用与钻头和其余工做负载您须要计划和配置下面的源:

  • 内存

  • CPU

  • 磁盘

当除了内存用户共享Drillbit,配置队列并行化

←集群配置一个多组用户 配置多用户资源→

配置多租户资源

2015年12月29日
钻机操做是内存和cpu密集型。目前,钻资源被外部的任何集群管理服务管理。在多组户或任何其余类型的集群,YARN-enabled与否,你配置内存和钻经过修改配置drill-env.sh文件描述在 “配置钻内存”限制使用内存。

配置一个多租户集群管理器来考虑钻井所需的资源。配置 drill-env.sh为钻使用执行查询分配资源。它可能须要配置的集群管理器提交其余进程的资源。

在YARN-enabled集群配置钻

添加钻YARN-enabled集群,改变内存资源来知足您的应用程序。 如,你有128 g的可用内存,分配一下工做负载在Yarn-enabled集群:

文件系统= 20G
HBase = 20G
OS操做系统= 8G
Yarn= ? Drill= ?

例如,若是Yarn作的大部分工做,给钻20G,给Yarn 60G。 若是你指望一个沉重的查询负载,给钻60G和Yarn20G。

YARN包含两个主要的服务:

  • ResourceManager
    一个集群中至少有一个实例在,若是您配置高可用性。

  • NodeManager
    每一个节点有一个实例。

配置NodeManager和ResourceManager为YARN运行服务从新配置所需的总内存。若是你想放置上限内存集YARN_NODEMANAGER_HEAPSIZE或YARN_RESOURCEMANAGER_HEAPSIZE环境变量。不设置 - xmx选项容许堆生长做为须要。

MapReduce的资源

修改MapReduce内存来知足应用程序的需求。剩余的内存一般给YARN应用程序。

如何管理钻CPU资源

目前,你不能在钻内管理CPU资源。使用Linux cgroups管理CPU资源。

如何管理磁盘资源

planner.add_producer_consumer系统选项启用或禁用一个二级读线程,把从磁盘预取的其余扫描的碎片编成捆。若是你与一个缓慢或不预取数据特定类型的存储媒体,这个选项告诉钻添加一个生产者消费者阅读线程来操做。钻能够分配一个线程,专一于一个单一的阅读片断。若是钻使用内存,你能够禁用这个选项来得到更好的性能。若是钻机使用的磁盘空间,你应该启用这个选项和为planner.producer_consumer_queue_size选项设置一个合理的队列大小。 关于这些选项的更多信息,请参阅部分, “性能调优”

←集群配置一个多组用户的介绍 配置Drillbit资源共享→

为一个共享Drillbit配置资源

管理集群中多个用户共享一个Drillbit,配置钻队和添加到内存并行,如前一节所述, “配置钻内存”。

配置查询队列

设置sys.options选项启用和管理查询排队,默认状况下是关闭的。有两种类型的队列:大型和小型。你配置一个最大数量的查询,每一个队列容许经过配置在sys.options表的如下选项:

  • exec.queue.large

  • exec.queue.small

  • exec.queue.threshold

exec.queue.threshold设置成本阈值来肯定查询的大或小是否基于复杂性。复杂的查询有更高的阈值。默认的,30,000,000,表明行估计的一个查询过程。序列化传入的查询,设置在0小队列和在0阈值。

有关更多信息,请参见章节, “性能调优”

配置并行化

默认状况下,钻大相径庭的操做当操纵在一个片断的记录数量达到100000人。当并行操做较高,集群运做尽量快,这是对单个用户。在一个有争议的多租户状况下,然而,你须要减小并行化水平基于用户需求。

并行配置过程

配置并行化、在sys.options表配置如下选项:

  • planner.width.max_per_node
    查询的最大程度的分布在核和集群节点。

  • planner.width.max_per_query
    做为每一个最大的节点但同样也适用于查询执行的整个集群。

planner.width.max_per_node

配置planner.width.max_per_node实现细粒,绝对控制并行化。在这种背景下宽度指分列或潜在分布:可以并行在核中心节点和节点集群上是运行一个查询。物理计划由中间操做,称为查询“碎片”,并发运行,在计划中为并行中上下的每一个交易操做符产生机会。一个交易操做符表明在执行流程能够分布处理一个断点。例如,单个进程扫描一个文件可能流入一个交易所运营商,紧随其后的是一个多进程聚合片断。

每一个节点的最大宽度定义了最大程度的并行查询的任何片断,但设置适用于水平集群中的一个节点。 的 默认的 最大程度的并行计算每一个节点以下,与理论最大值自动缩减(四舍五入),所以只有70%的实际可用容量考虑:活跃drillbits(一般每一个节点一个)每一个节点的核数 0.7

例如,在一个单节点测试系统启用了2核和超线程:1 4 0.7 = 3

当你修改默认设置,你能够提供任何有意义的数字。 系统不会自动缩小您的设置。

planner.width.max_per_query

max_per_query值还设置的最大并行度对于任何给定的查询阶段,但设置适用于整个集群执行的查询(多个节点)。 事实上,实际的最大宽度/查询 最小的两个值 : min((number of nodes * width.max_per_node), width.max_per_query)

例如,4-node集群上 width.max_per_node设置为6和 width.max_per_query设置为30:min((4 * 6),30)= 24

在这种状况下,每一个查询有效的最大宽度是24,不是30年前。

数据隔离

租户可使用钻视图和模拟在集群上共享数据。

←配置多租户资源 配置用户模拟→

相关文章
相关标签/搜索