OLAP分析引擎Druid配置文件详解(二):公共配置文件common.runtime.properties

5 篇文章 0 订阅
5 篇文章 0 订阅

摘要:
  本文是Druid配置文件系列博文的第二篇,在前一篇中介绍了Druid配置文件的组织结构,这一篇开始详细介绍各个配置文件中参数、意义、候选值等相关说明。本文主要介绍公共配置文件common.runtime.properties。


common.runtime.properties配置文件参数介绍

  本文会对common.runtime.properties中的参数分组进行介绍。

1. Extensions部分

属性含义备注是否需要修改
druid.extensions.directory用来存放extensions相关文件的根目录,Druid将从这个目录下加载extensions默认值为extensions,这是一个Druid工作目录的相对路径一般不修改
druid.extensions.hadoopDependenciesDirhadoop依赖的根目录,用户在这个目录下存放hadoop相关依赖文件默认值是hadoop-dependencies一般不修改
druid.extensions.loadList一个extensions的JSON数组,数组里的每项会被加载默认值是null,如果这个属性没有指定,则value为null,所有extensions将会被加载,如果value设置为[],则没有extensions会被加载修改为自己需要的extensions列表
druid.extensions.searchCurrentClassloader一个决定Druid是否自动搜索当前extensions的main classloader的布尔值。默认是true。如果设置为false,将不自动添加classpath下的所有modules一般不需要
druid.extensions.useExtensionClassloaderFirst一个决定Druid extensions是否优先从自己的jar包中加载类的布尔值(而不是Druid绑定jar包)。默认是false。如果设置为true,可能有版本冲突问题一般不修改
druid.extensions.hadoopContainerDruidClasspath显式地设置hadoop作业的用户类路径默认是null,为null时会自动计算。手动设置为了解决Druid和Hadoop之间的依赖冲突一般不设置
druid.extensions.addExtensionsToHadoopContainer一个布尔值,设置为true时,druid.extensions.loadList里的extensions会被添加到Hadoop container classpath默认是false。这个属性只有在druid.extensions.hadoopContainerDruidClasspath 设置了的时候才生效,如果没设置,则extensions总是会添加到Hadoop container classpath一般不设置

2. Modules部分

属性含义备注是否需要修改
druid.modules.excludeList一个类名的JSON数组,数组里的项不应该被加载,即使它们在被加载的extensions或要被加载的核心模块中默认是[]不需要修改

3.Zookeeper部分

基本设置
属性含义备注是否需要修改
druid.zk.paths.basezk基本路径默认是/druid不需要修改
druid.zk.service.hostzk连接的主机地址默认是none,必须提供必须提供
druid.zk.service.user认证用用户名默认是none不需要设置
druid.zk.service.pwd认证用密码默认是none不需要设置
druid.zk.service.authScheme认证schema只有一个可选值digest不需要设置
zk性能
属性含义备注是否需要修改
druid.zk.service.sessionTimeoutMssession超时时间默认30000,单位ms根据需求设置
druid.zk.service.connectionTimeoutMs连接超时时间默认15000,单位ms根据需求设置
druid.zk.service.compress创建znode时是否压缩默认true不需要设置
druid.zk.service.acl是否启用acl默认false。如果启用,znode创建者有所有权限不需要设置
路径配置

  推荐只设置基本配置路径,其他路径会根据基本路径生产默认路径。但是其他路径也可以使用决定路径指定。
  需要设置的路径包括properties、announcements、liveSegments、loadQueue、coordinator、servedSegments。这些路径的属性为druid.zk.paths.XXXPath,路径为${druid.zk.paths.base}/XXX(XXX替换为前述的properties等)。
  druid.zk.paths.indexer.XXX为indexing服务使用的zk路径。其配置方式和其他zk路径配置方式相同。
  如果druid.zk.paths.base 和druid.zk.paths.indexer.base都设置了,其他的druid.zk.paths.* 或者druid.zk.paths.indexer.*都没有设置,其他属性的value将根据对应的base路径计算。例如,druid.zk.paths.base设置为/druid1,druid.zk.paths.indexer.base设置为/druid2,则druid.zk.paths.announcementsPath默认为/druid1/announcements,druid.zk.paths.indexer.announcementsPath默认为/druid2/announcements。
  druid.discovery.curator.path不受base路径影响,必须单独指定。其用于服务发现。默认值是/druid/discovery,一般不需要修改。

3. Exhibitor部分

  Exhibitor是zk的supervisor系统。可以对zk集群动态扩缩容,Druid能不重启的情况下更新zk列表。

属性含义备注是否需要修改
druid.exhibitor.service.hostsExhibitor实例的主机名的JSON数据默认为none,如果需要使用Exhibitor则必须设置该属性如果需要使用Exhibitor则必须设置该属性
druid.exhibitor.service.port连接Exhibitor的REST端口号默认8080如果端口冲突,根据端口占用情况设置
druid.exhibitor.service.restUriPath得到server集合的REST url默认/exhibitor/v1/cluster/list一般不修改
druid.exhibitor.service.useSsl是否使用https协议默认false一般不修改
druid.exhibitor.service.pollingMs多久拉一次列表默认10000,单位ms一般不修改

druid.zk.service.host也需要设置,当Exhibitor实例不能连接的时候充当备份

4.TLS部分

  略

5.认证与授权部分

  略

6.启动时记录日志部分

属性含义备注是否需要修改
druid.startup.logging.logProperties启动时在日志中记录所有属性默认false,属性包括common.runtime.properties, runtime.properties和JVM命令行参数根据情况设置
druid.startup.logging.maskProperties遮住敏感信息默认[“password”]不需要修改

7.请求时记录日志部分

属性含义备注是否需要修改
druid.request.logging.type记录日志的类型可选值为noop, file, emitter, slf4j, filtered, composing, switching,具体含义接下来介绍必须选择一个
file类型

日志记录在磁盘上

属性含义备注是否需要修改
druid.request.logging.dir记录日志的目录默认none如果选择该类型一定要指定
druid.request.logging.filePattern时间格式默认"yyyy-MM-dd’.log’"可以不修改
Emitter类型

日志被发射到外部位置

属性含义备注是否需要修改
druid.request.logging.feed请求的feed名,与Emitting Metric部分结合学习默认是none需要设置
SLF4J类型

每个请求经由SLF4J被记录,将记录在org.apache.druid.server.log.LoggingRequestLogger类下。

属性含义备注是否需要修改
druid.request.logging.setMDCMDC实体是否应该被加入到log条目中(MDC包含的内容将在下面介绍)默认false可以修改
druid.request.logging.setContextMDCcontext中的内容是否被添加到MDC默认false可以修改

MDC实体包含以下内容:queryId、sqlQueryId、dataSource、queryType、hasFilters、remoteAddr、duration、resultOrdering、descending

Filtered类型

只有查询时间得到一个阈值的请求会被发射记录。

属性含义备注是否需要修改
druid.request.logging.queryTimeThresholdMsJSON查询的查询时间阈值默认是0,也就是不做filter,单位ms如果使用filter需要设置
druid.request.logging.sqlQueryTimeThresholdMssql查询的查询时间阈值默认是0,也就是不做filter,单位ms如果使用filter需要设置
druid.request.logging.mutedQueryTypes一个查询类型的列表,这些类型的查询请求不被记录默认[],样例值为[“scan”, “timeBoundary”]按需设置
druid.request.logging.delegate.type请求loger的类型默认none如果使用filter需要设置
composing类型

发射请求日志到多个logger

属性含义备注是否需要修改
druid.request.logging.loggerProviders请求日志的logger列表默认none需要设置,候选值为file, emitter, slf4j, filtered
Switch类型

原生查询记录到一个logger,sql查询记录到另一个logger

属性含义备注是否需要修改
druid.request.logging.nativeQueryLogger原生查询logger默认none需要设置
druid.request.logging.sqlQueryLoggersql查询logger默认none需要设置

8.Metrics部分

Druid的每个组件每隔一段时间会发射Metric,Metric包含Druid的各种信息,之后会详细介绍。

属性含义备注是否需要修改
druid.monitoring.emissionPeriod发射的时间间隔默认是PT1M(1分钟)按需设置
druid.monitoring.monitorsmonitor列表默认是none(没有监视器)按需添加,monitor之后会详细介绍
druid.emitterEmitter类型默认noop,可选值有"noop", “logging”, “http”, “parametrized”,“composing”。各候选值含义接下来会介绍。按需设置
各种monitor
monitor名字描述
org.apache.druid.client.cache.CacheMonitor发射关于缓存信息的metric
org.apache.druid.java.util.metrics.SysMonitor发射系统活动和状态metric
org.apache.druid.server.metrics.HistoricalMetricsMonitor发射historical组件相关信息
org.apache.druid.java.util.metrics.JvmMonitorJVM相关信息
org.apache.druid.java.util.metrics.JvmCpuMonitorJVM的CPU消耗相关信息
org.apache.druid.java.util.metrics.CpuAcctDeltaMonitor每个cpuacct cgroup的CPU消耗信息
org.apache.druid.java.util.metrics.JvmThreadsMonitorJVM线程统计信息
org.apache.druid.segment.realtime.RealtimeMetricsMonitor实时组件的统计信息
org.apache.druid.server.metrics.EventReceiverFirehoseMonitorEventReceiverFirehose中有多少event在排队信息
org.apache.druid.server.metrics.QueryCountStatsMonitor查询相关信息
org.apache.druid.server.emitter.HttpEmittingMonitorhttp发射的统计信息
Logging类型Emitter属性
属性含义备注是否需要修改
druid.emitter.logging.loggerClass用于记录日志的类默认LoggingEmitter,可选值有HttpPostEmitter, LoggingEmitter, NoopServiceEmitter, ServiceEmitter一般不需要修改
druid.emitter.logging.logLevel日志级别默认info,可选值有debug, info, warn, error按需修改
Http类型Emitter属性
属性含义备注是否需要修改
druid.emitter.http.flushMillis刷新时间间隔默认60000(ms)按需修改
druid.emitter.http.flushCount刷新之前能容纳多少条信息默认500按需修改
druid.emitter.http.basicAuthentication认证信息默认不指定,格式为admin:adminpassword一般不设置
druid.emitter.http.flushTimeOut刷新超时时间默认不超时按需修改,一般不修改
druid.emitter.http.batchingStrategy格式化策略默认ARRAY,可选值有ARRAY([event1,event2])、NEWLINES(event1\nevent2)、ONLY_EVENTS(event1event2)按需修改
druid.emitter.http.maxBatchSize每个batch最大的sizeJVM堆大小的5%和5MB中较小的值按需配置,一般不修改
druid.emitter.http.batchQueueSizeLimit一个队列中最大的batch数量默认2和JVM堆大小除以5MB中的最大值按需配置,一般不修改
druid.emitter.http.minHttpTimeoutMillis最小http超时时间默认是0,如果设置合理值是10ms到100ms按需配置,一般不修改
druid.emitter.http.recipientBaseUrlemit的url默认none需要设置

对于TLS,http emitter可以使用自己的配置重写,参数为druid.emitter.http.ssl.*,这里不详细介绍,有需要可以参考Druid官网

带参数Http类型Emitter属性

druid.emitter.parametrized.httpEmitting.*与Http类型Emitter属性含义相同,这里不再介绍。如下为带参数Http类型独有属性的介绍。

属性含义备注是否需要修改
druid.emitter.parametrized.recipientBaseUrlPatternURL pattern默认none,一个例子是http://foo.bar/{feed},当feed为metrics时,将发送metric到http://foo.bar/metrics需要设置
Composing类型Emitter属性

可以同时使用上述多个类型的emitter

属性含义备注是否需要修改
druid.emitter.composing.emittersemitter列表默认[],例子是[“logging”,“http”]需要设置

9.元数据存储(Metadata storage

)部分
只有Coordinaor和Overlord会使用以下属性去连接元数据存储。

属性含义备注是否需要修改
druid.metadata.storage.type元数据存储类型默认derby,其他候选值有mysql,postgresql按需修改
druid.metadata.storage.connector.connectURIJDBC连接数据库使用的URI默认none,格式为jdbc:mysql://ip:port/database_name需要设置
druid.metadata.storage.connector.user连接数据库的用户名默认none需要提供
druid.metadata.storage.connector.password连接数据库的密码默认none需要提供
druid.metadata.storage.connector.createTables如果需要一个表,这个表不存在,是否创建它默认true一般不需要修改
druid.metadata.storage.tables.*各种用途的表名默认druid_*一般不需要修改

10.深存储(Deep storage)部分

属性含义备注是否需要修改
druid.storage.type深存储类型默认local,可选值local, noop, s3, hdfs, c*按需设置
local类型
属性含义备注是否需要修改
druid.storage.storageDirectory存储的磁盘目录默认/tmp/druid/localStorage按需修改
noop类型

不需要配置

S3类型

需要druid-s3-extensions
对S3不太了解,具体配置暂时略

HDFS类型

需要druid-hdfs-storage

属性含义备注是否需要修改
druid.storage.storageDirectory存储的HDFS目录默认none需要配置
Cassandra类型

需要druid-cassandra-storage

属性含义备注是否需要修改
druid.storage.hostCassandra host默认none需要配置
druid.storage.keyspaceCassandra key space默认none

11.Task日志部分

如果用remote模式运行indexing service,task日志不能存储在本地,只能存在 S3, Azure Blob Store, Google Cloud Storage 或HDFS。

属性含义备注是否需要修改
druid.indexer.logs.typeTask日志类型默认file,可选值noop, s3, azure, google, hdfs, file按需修改
druid.indexer.logs.kill.enabled是否删除旧的任务日志和元数据里任务相关的条目默认false按需配置
druid.indexer.logs.kill.durationToRetain保留时间,在最近Xms内的日志不会被kill默认None需要配置
druid.indexer.logs.kill.initialDelayoverlord开启后到第一次kill任务运行的延迟默认是小于5分钟的随机值可以不配置
druid.indexer.logs.kill.delay执行kill任务的间隔时间默认21600000(6小时)可以不配置
file类型

存储在本地文件系统

属性含义备注是否需要修改
druid.indexer.logs.directory本地文件系统目录默认log按需修改
S3类型

存储在S3.需要druid-s3-extensions
具体配置略

Azure Blob Store类型

存储在Azure Blob Store,需要druid-azure-extensions,和深存储模块使用相同的账号
具体配置略

Google Cloud Storage类型

存储在Google Cloud Storage,需要druid-google-extensions
具体配置略

HDFS类型

存储在HDFS,需要druid-hdfs-storage

属性含义备注是否需要修改
druid.indexer.logs.directoryHDFS上的存储目录默认none需要配置

12.Overlord服务发现部分

属性含义备注是否需要修改
druid.selectors.indexing.serviceNameoverlord配置中的druid.service属性,通过这个配置找到overlord组件默认druid/overlord一般不修改

13.Coordinator服务发现部分

属性含义备注是否需要修改
druid.selectors.coordinator.serviceNamecoordinator配置中的druid.service属性,通过这个配置找到coordinator组件默认druid/coordinator一般不修改
druid.announcer.segmentsPerNode每个znode节点包含多少个segment的信息默认50一般不修改
druid.announcer.maxBytesPerNode每个znode节点最大字节数默认524288一般不修改
druid.announcer.skipDimensionsAndMetrics是否跳过维度和指标列默认false一般不修改
druid.announcer.skipLoadSpec是否跳过LoadSpec默认false一般不修改

14.JavaScript部分

Druid支持通过JavaScript动态运行时扩展

属性含义备注是否需要修改
druid.javascript.enabled是否打开JavaScript默认false按需修改

15.Double Column storage部分

属性含义备注是否需要修改
druid.indexing.doubleStoragedouble列使用什么存储格式默认double,可选值float一般不修改

16.sql兼容null处理部分

在0.13.0版本之前,’’(空字符串)和null是等价的,数字列不能是null,会被强制变为0。在0.13.0版本之后,Druid支持SQL兼容模式,允许字符串列区分’’(空字符串)和null,数组列也可以为null。

属性含义备注是否需要修改
druid.generic.useDefaultValueForNull是否使用默认值去处理null默认true改为false后会有一些存储和查询性能损失

17.HTTP Client部分

属性含义备注是否需要修改
druid.global.http.numConnections连接池大小,请求相同URL的数量超过这个数后会排队默认20按需修改
druid.global.http.compressionCodec压缩方式默认gzip,可选值有identity按需修改
druid.global.http.readTimeout数据读超时默认PT15M(15分钟)按需修改
druid.global.http.unusedConnectionTimeout连接池中无用连接的超时时间默认PT4M,一般设置为readTimeout * 0.9按需修改
druid.global.http.numMaxThreads最大线程数默认max(10, ((number of cores * 17) / 16 + 2) + 30)按需修改
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值