【Druid】(四)Apache Druid 部署和配置(单机版 / Docker 容器版 / Kubernetes 集群版)1

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【Druid】(四)Apache Druid 部署和配置(单机版 / Docker 容器版 / Kubernetes 集群版)1

文章目录


一、Apache Druid 部署


1.1 单机版

1.1.1 Jar 包下载

1.1.2 Druid 的安装部署


1.2 Docker 容器版

1.2.1 下载

1.2.2 配置 Docker 文件共享

1.2.3 启动

1.2.4 校验

Historical 容器

PostgreSQL 容器


1.3 Kubernetes 集群版

1.3.1 安装

1.3.2 校验

1.3.3 ZooKeeper 元数据

1.3.4 Broker 健康检查

1.3.5 Historical 缓存

1.3.6 Segment 文件

1.3.7 Coordinator 动态配置

1.3.8 Druid SQL 查询


二、配置

2.1 常用端口

2.2 rollup

2.3 selectStrategy

2.4 maxRowsPerSegment

2.5 druid.server.tier

2.6 tieredReplicants

2.7 Coordinator Rule 配置


一、Apache Druid 部署


1.1 单机版


1.1.1 Jar 包下载


https://imply.io/get-started 下载最新版本安装包


1.1.2 Druid 的安装部署


说明:imply 集成了Druid,提供了Druid 从部署到配置到各种可视化工具的完整的解决方案,

imply 有点类似Cloudera Manager。


1.解压


tar -zxvf imply-2.7.10.tar.gz -C /opt/module

目录说明如下:


bin/ - run scripts for included software.

conf/ - template configurations for a clustered setup.

conf-quickstart/* - configurations for the single-machine quickstart.

dist/ - all included software.

quickstart/ - files related to the single-machine quickstart.


2.修改配置文件


1)修改Druid 的ZK 配置


[chris@hadoop102 _common]$ pwd
/opt/module/imply/conf/druid/_common
[chris@hadoop102 _common]$ vi common.runtime.properties
druid.zk.service.host=hadoop102:2181,hadoop103:2181,hadoop104:218
1


2)修改启动命令参数,使其不校验不启动内置ZK


[chris@hadoop102 supervise]$ pwd
/opt/module/imply/conf/supervise
:verify bin/verify-java
#:verify bin/verify-default-ports
#:verify bin/verify-version-check
:kill-timeout 10
#!p10 zk bin/run-zk conf-quickstart


3.启动


1)启动zookeeper


2)启动imply


[chris@hadoop102 imply]$ bin/supervise -c
conf/supervise/quickstart.conf

说明:每启动一个服务均会打印出一条日志。可以通过/opt/module/imply-2.7.10/var/sv/查看服务启动时的日志信息


3)查看端口号9095 的启动情况


[chris@hadoop102 ~]$ netstat -anp | grep 9095
tcp 0 0 :::9095 :::*
LISTEN 3930/imply-ui-linux
tcp 0
0 ::ffff:192.168.1.102:9095 ::ffff:192.168.1.1:52567
ESTABLISHED 3930/imply-ui-linux
tcp 0
0 ::ffff:192.168.1.102:9095 ::ffff:192.168.1.1:52568
ESTABLISHED 3930/imply-ui-linux


4.登录hadoop102:9095 查看



5.停止服务


按Ctrl + c 中断监督进程, 如果想中断服务后进行干净的启动, 请删除

/opt/module/imply-2.7.10/var/目录。


1.2 Docker 容器版


1.2.1 下载


# 搜索 Docker Hub
$ docker search druid
# 下载最新版本的镜像
$ docker pull apache/druid:0.19.0
# 检查镜像是否下载成功
$ docker image list


1.2.2 配置 Docker 文件共享


打开配置面板,进入 File Sharing 配置页面,增加 ${the path of your source code}/distribution/docker/storage 路径,随后点击 Apply & Restart 按钮,应用并重启


1.2.3 启动


$ git clone https://github.com/apache/druid.git
$ cd druid
$ docker-compose -f distribution/docker/docker-compose.yml up
# 同理,也可以使用 start/stop 命令启停容器
$ docker-compose -f distribution/docker/docker-compose.yml stop
$ docker-compose -f distribution/docker/docker-compose.yml start
# 或者使用 down 命令移除容器
$ docker-compose -f distribution/docker/docker-compose.yml down


1.2.4 校验


Historical 容器


$ docker exec -it historical sh
$ ls /opt/data/
  indexing-logs  segments
$ ls /opt/data/segments/
  intermediate_pushes  wikipedia
$ ls /opt/data/segments/wikipedia/
  2016-06-27T00:00:00.000Z_2016-06-28T00:00:00.000Z
$ ls /opt/data/segments/wikipedia/2016-06-27T00\:00\:00.000Z_2016-06-28T00\:00\:00.000Z/
  2020-06-04T07:11:42.714Z
$ ls /opt/data/segments/wikipedia/2016-06-27T00\:00\:00.000Z_2016-06-28T00\:00\:00.000Z/2020-06-04T07\:11\:42.714Z/0/
  index.zip
$ ls -lh


total 8M

-rw-r--r--    1 druid    druid       5.9M Jun  4 07:49 00000.smoosh
-rw-r--r--    1 druid    druid         29 Jun  4 07:49 factory.json
-rw-r--r--    1 druid    druid       1.7M Jun  4 07:14 index.zip
-rw-r--r--    1 druid    druid        707 Jun  4 07:49 meta.smoosh
-rw-r--r--    1 druid    druid          4 Jun  4 07:49 version.bin
$ cat factory.json
{"type":"mMapSegmentFactory"}
$ xxd version.bin
00000000: 0000 0009
....
$ cat meta.smoosh
v1,2147483647,1
__time,0,0,1106
channel,0,145739,153122
cityName,0,153122,195592
comment,0,195592,1598156
count,0,1106,2063
countryIsoCode,0,1598156,1614170
countryName,0,1614170,1630859
diffUrl,0,1630859,4224103
flags,0,4224103,4252873
index.drd,0,6162513,6163275
isAnonymous,0,4252873,4262876
isMinor,0,4262876,4282592
isNew,0,4282592,4290896
isRobot,0,4290896,4298796
isUnpatrolled,0,4298796,4307345
metadata.drd,0,6163275,6163925
namespace,0,4307345,4342089
page,0,4342089,5710071
regionIsoCode,0,5710071,5730339
regionName,0,5730339,5759351
sum_added,0,2063,37356
sum_commentLength,0,37356,66244
sum_deleted,0,66244,81170
sum_delta,0,81170,126275
sum_deltaBucket,0,126275,145739
user,0,5759351,6162513

其中,index.drd 包含该 Segment 覆盖的时间范围、指定的 Bitmap 种类(concise / roaring),以及包含的列和维度;而 metadata.drd 包含是否 Rollup、哪些聚合函数、查询的粒度,时间戳字段信息,以及可用于存储任意 Key-Value 数据的 Map 结构(例如 Kafka Firehose 用来存储 offset 信息)。更多细节详见 org.apache.druid.segment.IndexIO.V9IndexLoader#load


PostgreSQL 容器
$ docker exec -it postgres bash
$ psql -U druid -d druid
$ \l
List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges
-----------+-------+----------+------------+------------+-------------------
 druid     | druid | UTF8     | en_US.utf8 | en_US.utf8 |
 postgres  | druid | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | druid | UTF8     | en_US.utf8 | en_US.utf8 | =c/druid         +
           |       |          |            |            | druid=CTc/druid
 template1 | druid | UTF8     | en_US.utf8 | en_US.utf8 | =c/druid         +
           |       |          |            |            | druid=CTc/druid
(4 rows)
$ \c druid
You are now connected to database "druid" as user "druid".
$ \dt
List of relations
 Schema |         Name          | Type  | Owner
--------+-----------------------+-------+-------
 public | druid_audit           | table | druid
 public | druid_config          | table | druid
 public | druid_datasource      | table | druid
 public | druid_pendingsegments | table | druid
 public | druid_rules           | table | druid
 public | druid_segments        | table | druid
 public | druid_supervisors     | table | druid
 public | druid_tasklocks       | table | druid
 public | druid_tasklogs        | table | druid
 public | druid_tasks           | table | druid
(10 rows)
> select id, datasource, created_date, start, "end", partitioned, version, used from public.druid_segments;
wikipedia_2016-06-27T00:00:00.000Z_2016-06-28T00:00:00.000Z_2020-06-04T07:11:42.714Z | wikipedia  | 2020-06-04T07:14:50.619Z | 2016-06-27T00:00:00.000Z | 2016-06-28T00:00:00.000Z | t           | 2020-06-04T07:11:42.714Z | t


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
10天前
|
开发工具 Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
15天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
22天前
|
Docker 容器
|
22天前
|
Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
41 5
|
2月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
2月前
|
存储 安全 数据安全/隐私保护
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
67 1
|
2月前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
58 0
|
10天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。

相关产品

  • 容器服务Kubernetes版