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摄取服务会根据规格说明进行数据源的数据采集、过滤、转换、索引等一系列操作的计算执行逻辑。


相关文章
|
1月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
200 1
|
2月前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
135 0
|
13天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
265 80
|
2月前
|
存储 缓存 关系型数据库
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
在云原生存算分离架构下,多计算集群的实现从技术方案上看似乎并不存在过多难题。但从产品的角度而言,具备成熟易用的多计算集群能力且能运用于用户实际业务场景中,还有较多核心要点需要深度设计
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
|
1月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
47 1
|
1月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
166 0
虚拟机centos7.9一键部署docker
|
2月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
404 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战