Configure Drill Introduction
本节简要描述以下键钻配置任务,并提供链接配置过程:
内存配置
多组用户配置
性能和功能配置
查询配置文件数据存储配置
内存配置
使用钻时,您需要提供足够的内存钻单独或在运行时其他工作负载集群。在下一节中, “配置钻记忆” 描述如何为钻集群配置钻内存集群。
多租户配置
您可以为多租户集群配置资源或共享一个Drillbit在一个集群中。
性能和功能配置
您还可以修改选项对性能或功能。例如,更改默认的存储格式是一个典型的功能变化。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
磁盘
←集群配置一个多组用户 配置多用户资源→
配置多租户资源
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年前。
数据隔离
租户可以使用钻视图和模拟在集群上共享数据。
←配置多租户资源 配置用户模拟→
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。