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

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


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

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

1. Extensions部分

属性 含义 备注 是否需要修改
druid.extensions.directory 用来存放extensions相关文件的根目录,Druid将从这个目录下加载extensions 默认值为extensions,这是一个Druid工作目录的相对路径 一般不修改
druid.extensions.hadoopDependenciesDir hadoop依赖的根目录,用户在这个目录下存放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.base zk基本路径 默认是/druid 不需要修改
druid.zk.service.host zk连接的主机地址 默认是none,必须提供 必须提供
druid.zk.service.user 认证用用户名 默认是none 不需要设置
druid.zk.service.pwd 认证用密码 默认是none 不需要设置
druid.zk.service.authScheme 认证schema 只有一个可选值digest 不需要设置
zk性能
属性 含义 备注 是否需要修改
druid.zk.service.sessionTimeoutMs session超时时间 默认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.hosts Exhibitor实例的主机名的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.setMDC MDC实体是否应该被加入到log条目中(MDC包含的内容将在下面介绍) 默认false 可以修改
druid.request.logging.setContextMDC context中的内容是否被添加到MDC 默认false 可以修改

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

Filtered类型

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

属性 含义 备注 是否需要修改
druid.request.logging.queryTimeThresholdMs JSON查询的查询时间阈值 默认是0,也就是不做filter,单位ms 如果使用filter需要设置
druid.request.logging.sqlQueryTimeThresholdMs sql查询的查询时间阈值 默认是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.sqlQueryLogger sql查询logger 默认none 需要设置

8.Metrics部分

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

属性 含义 备注 是否需要修改
druid.monitoring.emissionPeriod 发射的时间间隔 默认是PT1M(1分钟) 按需设置
druid.monitoring.monitors monitor列表 默认是none(没有监视器) 按需添加,monitor之后会详细介绍
druid.emitter Emitter类型 默认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.JvmMonitor JVM相关信息
org.apache.druid.java.util.metrics.JvmCpuMonitor JVM的CPU消耗相关信息
org.apache.druid.java.util.metrics.CpuAcctDeltaMonitor 每个cpuacct cgroup的CPU消耗信息
org.apache.druid.java.util.metrics.JvmThreadsMonitor JVM线程统计信息
org.apache.druid.segment.realtime.RealtimeMetricsMonitor 实时组件的统计信息
org.apache.druid.server.metrics.EventReceiverFirehoseMonitor EventReceiverFirehose中有多少event在排队信息
org.apache.druid.server.metrics.QueryCountStatsMonitor 查询相关信息
org.apache.druid.server.emitter.HttpEmittingMonitor http发射的统计信息
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最大的size JVM堆大小的5%和5MB中较小的值 按需配置,一般不修改
druid.emitter.http.batchQueueSizeLimit 一个队列中最大的batch数量 默认2和JVM堆大小除以5MB中的最大值 按需配置,一般不修改
druid.emitter.http.minHttpTimeoutMillis 最小http超时时间 默认是0,如果设置合理值是10ms到100ms 按需配置,一般不修改
druid.emitter.http.recipientBaseUrl emit的url 默认none 需要设置

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

带参数Http类型Emitter属性

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

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

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

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

9.元数据存储(Metadata storage

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

属性 含义 备注 是否需要修改
druid.metadata.storage.type 元数据存储类型 默认derby,其他候选值有mysql,postgresql 按需修改
druid.metadata.storage.connector.connectURI JDBC连接数据库使用的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.host Cassandra host 默认none 需要配置
druid.storage.keyspace Cassandra key space 默认none

11.Task日志部分

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

属性 含义 备注 是否需要修改
druid.indexer.logs.type Task日志类型 默认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.initialDelay overlord开启后到第一次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.directory HDFS上的存储目录 默认none 需要配置

12.Overlord服务发现部分

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

13.Coordinator服务发现部分

属性 含义 备注 是否需要修改
druid.selectors.coordinator.serviceName coordinator配置中的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.doubleStorage double列使用什么存储格式 默认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) 按需修改

你可能感兴趣的:(Druid,OLAP,大数据,大数据,druid,OLAP,配置文件)