nithinkanil commented on issue #12719:
URL: https://github.com/apache/druid/issues/12719#issuecomment-1171892995
@viongpanzi I am running two middlemanagers. PFB the code for creating the
druid cluster.
```
# This spec only works on a single node kubernetes cluster(e.g. typical k8s
cluster setup for dev using kind/minikube or single node AWS EKS cluster etc)
# as it uses local disk as "deep storage".
#
apiVersion: "druid.apache.org/v1alpha1"
kind: "Druid"
metadata:
name: tiny-cluster
spec:
image: apache/druid:0.22.1
# Optionally specify image for all nodes. Can be specify on nodes also
# imagePullSecrets:
# - name: tutu
startScript: /druid.sh
podLabels:
environment: stage
release: alpha
podAnnotations:
dummykey: dummyval
readinessProbe:
httpGet:
path: /status/health
port: 8088
securityContext:
fsGroup: 1000
runAsUser: 1000
runAsGroup: 1000
services:
- spec:
type: ClusterIP
clusterIP: None
commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common"
jvm.options: |-
-server
-XX:MaxDirectMemorySize=10240g
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Dlog4j.debug
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
-Djava.io.tmpdir=/druid/data
log4j.config: |-
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
common.runtime.properties: |
# Zookeeper
druid.zk.service.host=tiny-cluster-zk-0.tiny-cluster-zk
druid.zk.paths.base=/druid
druid.zk.service.compress=false
# Metadata Store
druid.metadata.storage.type=derby
druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true
druid.metadata.storage.connector.host=localhost
druid.metadata.storage.connector.port=1527
druid.metadata.storage.connector.createTables=true
# Deep Storage
druid.storage.type=local
druid.storage.storageDirectory=/druid/deepstorage
#
# Extensions
#
druid.extensions.loadList=["druid-kafka-indexing-service"]
#
# Service discovery
#
druid.selectors.indexing.serviceName=druid/overlord
druid.selectors.coordinator.serviceName=druid/coordinator
druid.indexer.logs.type=file
druid.indexer.logs.directory=/druid/data/indexing-logs
druid.lookup.enableLookupSyncOnStartup=false
metricDimensions.json: |-
{
"query/time" : { "dimensions" : ["dataSource", "type"], "type" :
"timer"},
"query/bytes" : { "dimensions" : ["dataSource", "type"], "type" :
"count"},
"query/node/time" : { "dimensions" : ["server"], "type" : "timer"},
"query/node/ttfb" : { "dimensions" : ["server"], "type" : "timer"},
"query/node/bytes" : { "dimensions" : ["server"], "type" : "count"},
"query/node/backpressure": { "dimensions" : ["server"], "type" :
"timer"},
"query/intervalChunk/time" : { "dimensions" : [], "type" : "timer"},
"query/segment/time" : { "dimensions" : [], "type" : "timer"},
"query/wait/time" : { "dimensions" : [], "type" : "timer"},
"segment/scan/pending" : { "dimensions" : [], "type" : "gauge"},
"query/segmentAndCache/time" : { "dimensions" : [], "type" : "timer" },
"query/cpu/time" : { "dimensions" : ["dataSource", "type"], "type" :
"timer" },
"query/count" : { "dimensions" : [], "type" : "count" },
"query/success/count" : { "dimensions" : [], "type" : "count" },
"query/failed/count" : { "dimensions" : [], "type" : "count" },
"query/interrupted/count" : { "dimensions" : [], "type" : "count" },
"query/timeout/count" : { "dimensions" : [], "type" : "count" },
"query/cache/delta/numEntries" : { "dimensions" : [], "type" : "count"
},
"query/cache/delta/sizeBytes" : { "dimensions" : [], "type" : "count"
},
"query/cache/delta/hits" : { "dimensions" : [], "type" : "count" },
"query/cache/delta/misses" : { "dimensions" : [], "type" : "count" },
"query/cache/delta/evictions" : { "dimensions" : [], "type" : "count"
},
"query/cache/delta/hitRate" : { "dimensions" : [], "type" : "count",
"convertRange" : true },
"query/cache/delta/averageBytes" : { "dimensions" : [], "type" :
"count" },
"query/cache/delta/timeouts" : { "dimensions" : [], "type" : "count" },
"query/cache/delta/errors" : { "dimensions" : [], "type" : "count" },
"query/cache/total/numEntries" : { "dimensions" : [], "type" : "gauge"
},
"query/cache/total/sizeBytes" : { "dimensions" : [], "type" : "gauge"
},
"query/cache/total/hits" : { "dimensions" : [], "type" : "gauge" },
"query/cache/total/misses" : { "dimensions" : [], "type" : "gauge" },
"query/cache/total/evictions" : { "dimensions" : [], "type" : "gauge"
},
"query/cache/total/hitRate" : { "dimensions" : [], "type" : "gauge",
"convertRange" : true },
"query/cache/total/averageBytes" : { "dimensions" : [], "type" :
"gauge" },
"query/cache/total/timeouts" : { "dimensions" : [], "type" : "gauge" },
"query/cache/total/errors" : { "dimensions" : [], "type" : "gauge" },
"ingest/events/thrownAway" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/events/unparseable" : { "dimensions" : ["dataSource"], "type"
: "count" },
"ingest/events/duplicate" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/events/processed" : { "dimensions" : ["dataSource",
"taskType", "taskId"], "type" : "count" },
"ingest/events/messageGap" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"ingest/rows/output" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/persists/count" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/persists/time" : { "dimensions" : ["dataSource"], "type" :
"timer" },
"ingest/persists/cpu" : { "dimensions" : ["dataSource"], "type" :
"timer" },
"ingest/persists/backPressure" : { "dimensions" : ["dataSource"],
"type" : "gauge" },
"ingest/persists/failed" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/handoff/failed" : { "dimensions" : ["dataSource"], "type" :
"count" },
"ingest/merge/time" : { "dimensions" : ["dataSource"], "type" :
"timer" },
"ingest/merge/cpu" : { "dimensions" : ["dataSource"], "type" : "timer"
},
"ingest/kafka/lag" : { "dimensions" : ["dataSource"], "type" : "gauge"
},
"ingest/kafka/maxLag" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"ingest/kafka/avgLag" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"task/success/count" : { "dimensions" : ["dataSource"], "type" :
"count" },
"task/failed/count" : { "dimensions" : ["dataSource"], "type" :
"count" },
"task/running/count" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"task/pending/count" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"task/waiting/count" : { "dimensions" : ["dataSource"], "type" :
"gauge" },
"taskSlot/total/count" : { "dimensions" : [], "type" : "gauge" },
"taskSlot/idle/count" : { "dimensions" : [], "type" : "gauge" },
"taskSlot/busy/count" : { "dimensions" : [], "type" : "gauge" },
"taskSlot/lazy/count" : { "dimensions" : [], "type" : "gauge" },
"taskSlot/blacklisted/count" : { "dimensions" : [], "type" : "gauge" },
"task/run/time" : { "dimensions" : ["dataSource", "taskType"], "type"
: "timer" },
"segment/added/bytes" : { "dimensions" : ["dataSource", "taskType"],
"type" : "count" },
"segment/moved/bytes" : { "dimensions" : ["dataSource", "taskType"],
"type" : "count" },
"segment/nuked/bytes" : { "dimensions" : ["dataSource", "taskType"],
"type" : "count" },
"segment/assigned/count" : { "dimensions" : ["tier"], "type" : "count"
},
"segment/moved/count" : { "dimensions" : ["tier"], "type" : "count" },
"segment/dropped/count" : { "dimensions" : ["tier"], "type" : "count"
},
"segment/deleted/count" : { "dimensions" : ["tier"], "type" : "count"
},
"segment/unneeded/count" : { "dimensions" : ["tier"], "type" : "count"
},
"segment/unavailable/count" : { "dimensions" : ["dataSource"], "type"
: "gauge" },
"segment/underReplicated/count" : { "dimensions" : ["dataSource",
"tier"], "type" : "gauge" },
"segment/cost/raw" : { "dimensions" : ["tier"], "type" : "count" },
"segment/cost/normalization" : { "dimensions" : ["tier"], "type" :
"count" },
"segment/cost/normalized" : { "dimensions" : ["tier"], "type" :
"count" },
"segment/loadQueue/size" : { "dimensions" : ["server"], "type" :
"gauge" },
"segment/loadQueue/failed" : { "dimensions" : ["server"], "type" :
"gauge" },
"segment/loadQueue/count" : { "dimensions" : ["server"], "type" :
"gauge" },
"segment/dropQueue/count" : { "dimensions" : ["server"], "type" :
"gauge" },
"segment/size" : { "dimensions" : ["dataSource"], "type" : "gauge" },
"segment/overShadowed/count" : { "dimensions" : [], "type" : "gauge" },
"segment/max" : { "dimensions" : [], "type" : "gauge"},
"segment/used" : { "dimensions" : ["dataSource", "tier", "priority"],
"type" : "gauge" },
"segment/usedPercent" : { "dimensions" : ["dataSource", "tier",
"priority"], "type" : "gauge", "convertRange" : true },
"segment/pendingDelete" : { "dimensions" : [], "type" : "gauge"},
"jvm/pool/committed" : { "dimensions" : ["poolKind", "poolName"],
"type" : "gauge" },
"jvm/pool/init" : { "dimensions" : ["poolKind", "poolName"], "type" :
"gauge" },
"jvm/pool/max" : { "dimensions" : ["poolKind", "poolName"], "type" :
"gauge" },
"jvm/pool/used" : { "dimensions" : ["poolKind", "poolName"], "type" :
"gauge" },
"jvm/bufferpool/count" : { "dimensions" : ["bufferpoolName"], "type" :
"gauge" },
"jvm/bufferpool/used" : { "dimensions" : ["bufferpoolName"], "type" :
"gauge" },
"jvm/bufferpool/capacity" : { "dimensions" : ["bufferpoolName"],
"type" : "gauge" },
"jvm/mem/init" : { "dimensions" : ["memKind"], "type" : "gauge" },
"jvm/mem/max" : { "dimensions" : ["memKind"], "type" : "gauge" },
"jvm/mem/used" : { "dimensions" : ["memKind"], "type" : "gauge" },
"jvm/mem/committed" : { "dimensions" : ["memKind"], "type" : "gauge" },
"jvm/gc/count" : { "dimensions" : ["gcName", "gcGen"], "type" :
"count" },
"jvm/gc/cpu" : { "dimensions" : ["gcName", "gcGen"], "type" : "count"
},
"ingest/events/buffered" : { "dimensions" : ["serviceName",
"bufferCapacity"], "type" : "gauge"},
"sys/swap/free" : { "dimensions" : [], "type" : "gauge"},
"sys/swap/max" : { "dimensions" : [], "type" : "gauge"},
"sys/swap/pageIn" : { "dimensions" : [], "type" : "gauge"},
"sys/swap/pageOut" : { "dimensions" : [], "type" : "gauge"},
"sys/disk/write/count" : { "dimensions" : ["fsDevName"], "type" :
"count"},
"sys/disk/read/count" : { "dimensions" : ["fsDevName"], "type" :
"count"},
"sys/disk/write/size" : { "dimensions" : ["fsDevName"], "type" :
"count"},
"sys/disk/read/size" : { "dimensions" : ["fsDevName"], "type" :
"count"},
"sys/net/write/size" : { "dimensions" : [], "type" : "count"},
"sys/net/read/size" : { "dimensions" : [], "type" : "count"},
"sys/fs/used" : { "dimensions" : ["fsDevName", "fsDirName",
"fsTypeName", "fsSysTypeName", "fsOptions"], "type" : "gauge"},
"sys/fs/max" : { "dimensions" : ["fsDevName", "fsDirName",
"fsTypeName", "fsSysTypeName", "fsOptions"], "type" : "gauge"},
"sys/mem/used" : { "dimensions" : [], "type" : "gauge"},
"sys/mem/max" : { "dimensions" : [], "type" : "gauge"},
"sys/storage/used" : { "dimensions" : ["fsDirName"], "type" : "gauge"},
"sys/cpu" : { "dimensions" : ["cpuName", "cpuTime"], "type" : "gauge"},
"coordinator-segment/count" : { "dimensions" : ["dataSource"], "type"
: "gauge" },
"historical-segment/count" : { "dimensions" : ["dataSource", "tier",
"priority"], "type" : "gauge" },
"jetty/numOpenConnections" : { "dimensions" : [], "type" : "gauge" },
"query/cache/caffeine/total/requests" : { "dimensions" : [], "type" :
"gauge" },
"query/cache/caffeine/total/loadTime" : { "dimensions" : [], "type" :
"gauge" },
"query/cache/caffeine/total/evictionBytes" : { "dimensions" : [],
"type" : "gauge" },
"query/cache/memcached/total" : { "dimensions" : ["[MEM] Reconnecting
Nodes (ReconnectQueue)",
"[MEM] Request Rate: All",
"[MEM] Average Bytes written to OS per write",
"[MEM] Average Bytes read from OS per read",
"[MEM] Response Rate: All (Failure + Success + Retry)",
"[MEM] Response Rate: Retry",
"[MEM] Response Rate: Failure",
"[MEM] Response Rate: Success"],
"type" : "gauge" },
"query/cache/caffeine/delta/requests" : { "dimensions" : [], "type" :
"count" },
"query/cache/caffeine/delta/loadTime" : { "dimensions" : [], "type" :
"count" },
"query/cache/caffeine/delta/evictionBytes" : { "dimensions" : [],
"type" : "count" },
"query/cache/memcached/delta" : { "dimensions" : ["[MEM] Reconnecting
Nodes (ReconnectQueue)",
"[MEM] Request Rate: All",
"[MEM] Average Bytes written to OS per write",
"[MEM] Average Bytes read from OS per read",
"[MEM] Response Rate: All (Failure + Success + Retry)",
"[MEM] Response Rate: Retry",
"[MEM] Response Rate: Failure",
"[MEM] Response Rate: Success"],
"type" : "count" }
}
volumeMounts:
- mountPath: /druid/data
name: data-volume
- mountPath: /druid/deepstorage
name: deepstorage-volume
volumes:
- name: data-volume
emptyDir: {}
- name: deepstorage-volume
hostPath:
path: /tmp/druid/deepstorage
type: DirectoryOrCreate
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
nodes:
brokers:
# Optionally specify for running broker as Deployment
# kind: Deployment
nodeType: "broker"
# Optionally specify for broker nodes
# imagePullSecrets:
# - name: tutu
druid.port: 8088
nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker"
replicas: 1
runtime.properties: |
druid.service=druid/broker
# HTTP server threads
druid.broker.http.numConnections=5
druid.server.http.numThreads=10
# Processing threads and buffers
druid.processing.buffer.sizeBytes=1
druid.processing.numMergeBuffers=1
druid.processing.numThreads=1
druid.sql.enable=true
extra.jvm.options: |-
-Xmx512M
-Xms512M
coordinators:
# Optionally specify for running coordinator as Deployment
# kind: Deployment
nodeType: "coordinator"
druid.port: 8088
nodeConfigMountPath:
"/opt/druid/conf/druid/cluster/master/coordinator-overlord"
replicas: 1
runtime.properties: |
druid.service=druid/coordinator
# HTTP server threads
druid.coordinator.startDelay=PT30S
druid.coordinator.period=PT30S
# Configure this coordinator to also run as Overlord
druid.coordinator.asOverlord.enabled=true
druid.coordinator.asOverlord.overlordService=druid/overlord
druid.indexer.queue.startDelay=PT30S
druid.indexer.runner.type=local
extra.jvm.options: |-
-Xmx512M
-Xms512M
historicals:
nodeType: "historical"
druid.port: 8088
nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical"
replicas: 1
runtime.properties: |
druid.service=druid/historical
druid.server.http.numThreads=5
druid.processing.buffer.sizeBytes=536870912
druid.processing.numMergeBuffers=1
druid.processing.numThreads=1
# Segment storage
druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}]
druid.server.maxSize=10737418240
extra.jvm.options: |-
-Xmx512M
-Xms512M
middlemanagers:
druid.port: 8080
kind: StatefulSet
nodeType: middleManager
nodeConfigMountPath: /opt/druid/conf/druid/cluster/data/middleManager
env:
- name: DRUID_XMX
value: 4096m
- name: DRUID_XMS
value: 4096m
- name: AWS_REGION
value: ap-southeast-1
podDisruptionBudgetSpec:
maxUnavailable: 1
replicas: 2
# resources:
# limits:
# cpu: 8
# memory: 8Gi
# requests:
# cpu: 8
# memory: 8Gi
livenessProbe:
initialDelaySeconds: 60
periodSeconds: 5
failureThreshold: 3
httpGet:
path: /status/health
port: 8080
readinessProbe:
initialDelaySeconds: 60
periodSeconds: 5
failureThreshold: 3
httpGet:
path: /status/health
port: 8080
runtime.properties: |
druid.service=druid/middleManager
druid.worker.capacity=4
druid.indexer.runner.javaOpts=-server -Xms2g -Xmx2g
-XX:MaxDirectMemorySize=2g -Duser.timezone=UTC -Dfile.encoding=UTF-8
-XX:+ExitOnOutOfMemoryError
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
druid.indexer.task.baseTaskDir=var/druid/task
# HTTP server threads
druid.server.http.numThreads=500
# Processing threads and buffers on Peons
druid.indexer.fork.property.druid.processing.numMergeBuffers=2
druid.indexer.fork.property.druid.processing.buffer.sizeBytes=32000000
druid.indexer.fork.property.druid.processing.numThreads=2
volumeClaimTemplates:
-
metadata:
name: data-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 15Gi
volumeMounts:
-
mountPath: /var/druid
name: data-volume
routers:
nodeType: "router"
druid.port: 8088
nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/router"
replicas: 1
runtime.properties: |
druid.service=druid/router
# HTTP proxy
druid.router.http.numConnections=10
druid.router.http.readTimeout=PT5M
druid.router.http.numMaxThreads=10
druid.server.http.numThreads=10
# Service discovery
druid.router.defaultBrokerServiceName=druid/broker
druid.router.coordinatorServiceName=druid/coordinator
# Management proxy to coordinator / overlord: required for unified
web console.
druid.router.managementProxy.enabled=true
extra.jvm.options: |-
-Xmx512M
-Xms512M
```
Let me know if there any problem in the cluster
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]