CentOS 7上集群化部署Apache Druid 0.22实时分析数据库(二)

简介: CentOS 7上集群化部署Apache Druid 0.22实时分析数据库

修改了historical服务进程端口为18083,druid.processing.buffer.sizeBytes降至250M,druid.segmentCache.locations中maxSize降至20g,这些参数可以根据你的计算资源量进行放大调整。


接着配置middleManager:

vi /opt/druid/conf/druid/cluster/data/middleManager/jvm.confi


如下参考配置:


-server
-Xms128m
-Xmx128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager


默认配置。


vi /opt/druid/conf/druid/cluster/data/middleManager/runtime.properties


如下参考配置:

druid.service=druid/middleManager
druid.plaintextPort=18091
# Number of tasks per middleManager
druid.worker.capacity=4
# Task launch parameters
druid.indexer.runner.javaOpts=-server -Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g -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=60
# Processing threads and buffers on Peons
druid.indexer.fork.property.druid.processing.numMergeBuffers=2
druid.indexer.fork.property.druid.processing.buffer.sizeBytes=100MiB
druid.indexer.fork.property.druid.processing.numThreads=1
# Hadoop indexing
druid.indexer.task.hadoopWorkingPath=var/druid/hadoop-tmp

修改了middleManager服务进程端口为18091。其他为默认配置。


4)查询节点配置


我们登陆datanode-3节点,进行查询节点配置,将datanode-3打造成查询节点,主要运行broker服务和route服务,前者主要负责查询请求向实时查询服务与历史查询服务的分发,对查询结果合并;后者主要是接收客户端的HTTP请求提交,数据摄取任务路由到overload服务,查询服务路由到broker服务,另外提供了一个图形化的web管理端。


我们先开始配置broker:

vi /opt/druid/conf/druid/cluster/query/broker/jvm.config

如下参考配置:

-server
-Xms512m
-Xmx2g
-XX:MaxDirectMemorySize=3g
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

XMs最小堆内存设置为512m,XMx最大堆内存设置为2GB,最大非堆内存设置为3GB

vi /opt/druid/conf/druid/cluster/query/broker/runtime.properties

如下参考配置:

druid.service=druid/broker
druid.plaintextPort=18082
# HTTP server settings
druid.server.http.numThreads=60
# HTTP client settings
druid.broker.http.numConnections=50
druid.broker.http.maxQueuedBytes=10MiB
# Processing threads and buffers
druid.processing.buffer.sizeBytes=250MiB
druid.processing.numMergeBuffers=6
druid.processing.numThreads=1
druid.processing.tmpDir=var/druid/processing
# Query cache disabled -- push down caching and merging instead
druid.broker.cache.useCache=false
druid.broker.cache.populateCache=false

修改了broker端口,改为18082,druid.processing.buffer.sizeBytes项将为250M

最后我们配置route:

vi /opt/druid/conf/druid/cluster/query/router/jvm.config


如下参考配置:

-server
-Xms256m
-Xmx512m
-XX:+UseG1GC
-XX:MaxDirectMemorySize=128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

XMs最小堆内存设置为256m,XMx最大堆内存设置为512m

vi /opt/druid/conf/druid/cluster/query/router/runtime.properties

如下参考配置:

druid.service=druid/router
druid.plaintextPort=18888
# HTTP proxy
druid.router.http.numConnections=50
druid.router.http.readTimeout=PT5M
druid.router.http.numMaxThreads=100
druid.server.http.numThreads=100
# 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


修改了route端口,改为18888,其他默认。


启动Druid集群


启动Druid集群之前,先要保证PostgreSQL、Hadoop已经正常启动,Druid节点可以正常访问。

在datanode-1节点:

/opt/druid/bin/start-cluster-master-no-zk-server

在datanode-2节点:

/opt/druid/bin/start-cluster-data-server

在datanode-3节点:

/opt/druid/bin/start-cluster-query-server


若不输出错误日志,基本上可以断定启动成功,具体可以在/opt/druid/var/sv下面查看各个服务的日志情况。


注意:这是前台启动,不要关闭启动终端,否则服务终止。


我们用Chrome打开route服务提供的Web管理端进行查看:


http://datanode-3:18888/


50f5fa8d2fe009cb70ad5f8e21fdc885.png


我们可以从菜单栏的Load data->Start a new spec进入到Druid支持的各种数据源,我们可以看到Kafka、HDFS是常用的摄取源。


98199b6632e0446084edb583f3f22129.png


在我的HDFS路径/example/simple1/sort/input/Rate_1000.csv是一个CSV文件,我们可以看到指向该文件后,Druid就会对其进行解析。

23108bb95f69cc411160cf472bf59605.png


我们还可以看到在解析时间的阶段Druid会自动发现importDate列适合作为时序的时间戳_time。


e0d49a0abece83526091bb47d817e90c.png


后面还会涉及一些字段过滤、字段转换、指标选择、rollup、分区等,这里就不在赘述,有时间专门写一个操作说明,我们直接看看提交前的json:

{
  "type": "index_parallel",
  "spec": {
    "ioConfig": {
      "type": "index_parallel",
      "inputSource": {
        "type": "hdfs",
        "paths": "/example/simple1/sort/input/Rate_1000.csv"
      },
      "inputFormat": {
        "type": "csv",
        "findColumnsFromHeader": true
      }
    },
    "tuningConfig": {
      "type": "index_parallel",
      "partitionsSpec": {
        "type": "hashed"
      },
      "forceGuaranteedRollup": true
    },
    "dataSchema": {
      "timestampSpec": {
        "column": "ImportDate",
        "format": "auto"
      },
      "dimensionsSpec": {
        "dimensions": [
          "StateCode",
          "SourceName",
          "FederalTIN",
          "RateEffectiveDate",
          "RateExpirationDate",
          "PlanId",
          "RatingAreaId",
          "Tobacco",
          "Age",
          {
            "type": "string",
            "name": "IssuerId"
          },
          {
            "type": "string",
            "name": "BusinessYear"
          }
        ]
      },
      "granularitySpec": {
        "queryGranularity": "hour",
        "rollup": true,
        "segmentGranularity": "month"
      },
      "metricsSpec": [
        {
          "name": "count",
          "type": "count"
        },
        {
          "name": "sum_IndividualRate",
          "type": "doubleSum",
          "fieldName": "IndividualRate"
        },
        {
          "name": "sum_Couple",
          "type": "doubleSum",
          "fieldName": "Couple"
        },
        {
          "name": "sum_PrimarySubscriberAndOneDependent",
          "type": "doubleSum",
          "fieldName": "PrimarySubscriberAndOneDependent"
        },
        {
          "name": "sum_PrimarySubscriberAndTwoDependents",
          "type": "doubleSum",
          "fieldName": "PrimarySubscriberAndTwoDependents"
        },
        {
          "name": "sum_PrimarySubscriberAndThreeOrMoreDependents",
          "type": "doubleSum",
          "fieldName": "PrimarySubscriberAndThreeOrMoreDependents"
        },
        {
          "name": "sum_CoupleAndOneDependent",
          "type": "doubleSum",
          "fieldName": "CoupleAndOneDependent"
        },
        {
          "name": "sum_CoupleAndTwoDependents",
          "type": "doubleSum",
          "fieldName": "CoupleAndTwoDependents"
        },
        {
          "name": "sum_CoupleAndThreeOrMoreDependents",
          "type": "doubleSum",
          "fieldName": "CoupleAndThreeOrMoreDependents"
        }
      ],
      "dataSource": "rate1000"
    }
  }
}

Apache Druid不同于其他数据库的编程式写入模式:数据库提供编程接口,用户考虑数据转换的计算逻辑,最终通过程序调用接口实现写入。


A pache Druid类似于声明式摄取模式,也就是说,制作好一个任务的声明规格,那么Druid摄取服务会根据规格说明进行数据源的数据采集、过滤、转换、索引等一系列操作的计算执行逻辑。


相关文章
|
18天前
|
SQL 弹性计算 安全
在云上轻松部署达梦数据库
达梦数据库(DM Database)是达梦数据库有限公司开发的关系型数据库管理系统,广泛应用于政府、金融、能源等行业。它具备高性能、高安全、兼容性强、易管理等特点,支持多种操作系统,适用于关键业务系统、政务系统及大数据处理等场景。在阿里云上,可通过一键部署快速使用达梦数据库DM8。
|
1月前
|
存储 数据库
快速搭建南大通用GBase 8s数据库SSC共享存储集群
本文介绍如何GBase8s 数据库 在单机环境中快速部署SSC共享存储集群,涵盖准备工作、安装数据库、创建环境变量文件、准备数据存储目录、修改sqlhost、设置onconfig、搭建sds集群及集群检查等步骤,助你轻松完成集群功能验证。
|
29天前
|
Shell 数据库
GBase8a 数据库新集群第一次创建dblink
GBase8a 数据库新集群第一次创建dblink
|
29天前
|
SQL 数据库
GBase8a 数据库集群v953扩容案例问题分享
GBase8a 数据库集群v953扩容案例问题分享
|
1月前
|
存储 缓存 网络安全
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
|
1月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库集群
PostgreSQL的逻辑存储结构涵盖了数据库集群、数据库、表、索引、视图等对象,每个对象都有唯一的oid标识。数据库集群是由单个PostgreSQL实例管理的所有数据库集合,共享同一配置和资源。集群的数据存储在一个称为数据目录的单一目录中,可通过-D选项或PGDATA环境变量指定。
|
1月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
5天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
19 3
|
5天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
23 3
|
5天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
29 2