在Druid快速入门其实已经简单的介绍过最简化配置的单节点部署,本文我们将详细描述Druid的多种部署方式,对于测试开发环境可以选用轻量的单机部署方式,而生产环境我们最好选用集群部署的方式,确保系统的高可用性。

一、单机部署

Druid提供了一组可以参考的配置和单机部署的启动脚本。

  • nano-quickstart

  • micro-quickstart

  • small

  • medium

  • large

  • xlarge

micro-quickstart尺寸适合笔记本电脑等小型机器,目的是用于快速评估使用情况。

nano-quickstart适合更小的配置,面向具有1个CPU和4GB内存的计算机。它旨在在资源受限的环境(例如小型Docker容器)中进行有限的评估。

单服务器参考配置

Nano-Quickstart:1个CPU,4GB RAM

  • 启动命令: bin/start-nano-quickstart
  • 配置目录: conf/druid/single-server/nano-quickstart

微型快速入门:4个CPU,16GB RAM

  • 启动命令: bin/start-micro-quickstart
  • 配置目录: conf/druid/single-server/micro-quickstart

小型:8 CPU,64GB RAM(〜i3.2xlarge)

  • 启动命令: bin/start-small
  • 配置目录: conf/druid/single-server/small

中:16 CPU,128GB RAM(〜i3.4xlarge)

  • 启动命令: bin/start-medium
  • 配置目录: conf/druid/single-server/medium

大型:32 CPU,256GB RAM(〜i3.8xlarge)

  • 启动命令: bin/start-large
  • 配置目录: conf/druid/single-server/large

大型X:64 CPU,512GB RAM(〜i3.16xlarge)

  • 启动命令: bin/start-xlarge
  • 配置目录: conf/druid/single-server/xlarge

虽然为大型机器也准备了配置,但是官方还是建议大型的系统采用集群模式部署,

以实现容错和减少资源争用。

二、集群部署

部署建议

集群部署采用的分配如下:

  • 主节点部署 Coordinator 和 Overlord进程
  • 两个数据节点运行 Historical 和 MiddleManager进程
  • 一个查询节点 部署Broker 和 Router进程

未来我们可以添加更多的主节点和查询节点

主节点建议 8vCPU 32GB内存

配置文件位于

conf/druid/cluster/master

数据节点建议

16 vCPU 122GB内存 2 * 1.9TB SSD

配置文件位于

conf/druid/cluster/data

查询服务器 建议 8vCPU 32GB内存

配置文件位于

conf/druid/cluster/query

开始部署

下载最新0.17.0发行版

解压

tar -xzf apache-druid-0.17.0-bin.tar.gz
cd apache-druid-0.17.0

集群模式的主要配置文件都位于:

conf/druid/cluster

配置元数据存储

conf/druid/cluster/_common/common.runtime.properties

替换

druid.metadata.storage.connector.connectURI
druid.metadata.storage.connector.host

例如配置mysql为元数据存储

在mysql中配置好访问权限:

-- create a druid database, make sure to use utf8mb4 as encoding
CREATE DATABASE druid DEFAULT CHARACTER SET utf8mb4; -- create a druid user
CREATE USER 'druid'@'localhost' IDENTIFIED BY 'druid'; -- grant the user all the permissions on the database we just created
GRANT ALL PRIVILEGES ON druid.* TO 'druid'@'localhost';

在druid中配置

druid.extensions.loadList=["mysql-metadata-storage"]
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://<host>/druid
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=diurd

配置深度存储

将数据存储配置为S3或者HDFS

比如配置HDFS,修改

conf/druid/cluster/_common/common.runtime.properties
druid.extensions.loadList=["druid-hdfs-storage"]

#druid.storage.type=local
#druid.storage.storageDirectory=var/druid/segments druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments #druid.indexer.logs.type=file
#druid.indexer.logs.directory=var/druid/indexing-logs druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs

将Hadoop配置XML(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml)放在Druid中

conf/druid/cluster/_common/

配置zookeeper连接

还是修改

conf/druid/cluster/_common/

下的

druid.zk.service.host

为zk服务器地址就可以了

启动集群

启动前注意打开端口限制

主节点:

derby 1527

zk 2181

Coordinator 8081

Overlord 8090

数据节点:

Historical 8083

Middle Manager 8091, 8100–8199

查询节点:

Broker 8082

Router 8088

记得将刚才配好的druid复制到各个节点

启动主节点

由于我们使用外部zk 所以使用no-zk启动

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

启动数据服务器

bin/start-cluster-data-server

启动查询服务器

bin/start-cluster-query-server

这样的话 集群就启动成功了!

特别注意:多个机器的host不同 注意在common.runtime.properties中改成对应hostname

如果安装过程中有失败 可以考虑清空zk中的/druid 目录 重新安装

静下心来,努力的提升自己,永远都没有错。更多实时计算相关博文,欢迎关注实时流式计算

Druid 0.17 入门(2)—— 安装与部署的更多相关文章

  1. Druid 0.17 入门(3)—— 数据接入指南

    在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...

  2. Druid 0.17入门(4)—— 数据查询方式大全

    本文介绍Druid查询数据的方式,首先我们保证数据已经成功载入. Druid查询基于HTTP,Druid提供了查询视图,并对结果进行了格式化. Druid提供了三种查询方式,SQL,原生JSON,CU ...

  3. Flume1.5.0入门:安装、部署、及flume的案例

    转自:http://www.aboutyun.com/thread-8917-1-1.html 问题导读1.什么是flume2.flume的官方网站在哪里?3.flume有哪些术语?4.如何配置flu ...

  4. 2、Flume1.7.0入门:安装、部署、及flume的案例

    一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用. flume的特点: flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的 ...

  5. 手把手0基础Centos下安装与部署paddleOcr 教程

    !!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...

  6. skywalking8.1.0(一) 安装与部署

    skywalking部署 背景介绍 目前公司后端服务全部为微服务并运行在kubernetes集群上,而大量的微服务的背后拥有很复杂的调用关系,纵使你是公司的资深开发也很难理清每一个后端服务之间的依赖关 ...

  7. Flume入门:安装、部署

    一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original genera ...

  8. MySQL8.0.17下载与安装

    下载环境:Windows 10 下载地址: https://dev.mysql.com/downloads/mysql/ 1.解压压缩包,修改解压目录. 2.在E:\mysql-8.0.17-winx ...

  9. nginx入门篇----安装、部署、升级

    1.安装前准备工作下载nginx安装包依赖包:gcc pcre pcre-level  zlib zlib-devel openssl openss-level在线依赖包安装命令:yum -y ins ...

随机推荐

  1. Java网络编程系列之TCP连接状态

    1.TCP连接状态 LISTEN:Server端打开一个socket进行监听,状态置为LISTEN SYN_SENT:Client端发送SYN请求给Server端,状态由CLOSED变为SYN_SEN ...

  2. Spring boot项目搭建及简单实例

    Spring boot项目搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for ...

  3. MySQL 持久化保障机制-redo 日志

    我们在 聊一聊 MySQL 中的事务及其实现原理 中提到了 redo 日志,redo 日志是用来保证 MySQL 持久化功能的,需要注意的是 redo 日志是 InnoDB 引擎特有的功能. 为什么 ...

  4. 极简安装 TensorFlow 2.0 GPU

    前言 之前写了几篇关于 TensorFlow 1.x GPU 版本安装的博客,但几乎没怎么学习过.之前基本在搞 Machine Learning 和 Data Mining 方面的东西,极少用到 NN ...

  5. rest实践2

    通过url读取图片资源 其他的上传图片和对应的添加信息到数据库等的相关操作则引入crud来操作,编写相关代码的话==>要引入相关的crud包.

  6. Java set接口之HashSet集合原理讲解

    Set接口 java.util.set接口继承自Collection接口,它与Collection接口中的方法基本一致, 并没有对 Collection接口进行功能上的扩充,只是比collection ...

  7. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法

    CF449B Jzzhu and Cities 其实这一道题并不是很难,只是一个最短路而已,请继续看我的题解吧~(^▽^) AC代码: #include<bits/stdc++.h> #d ...

  8. 鉴于崔庆才大大的对于 beautifulsoup 的再理解

    源地址看 soups = BeautifulSoup(html) soup = BeautifulSoup(open('index.html')) print soup.prettify() Tag通 ...

  9. tomcat启动时检测到循环继承而栈溢出的问题:Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/test] due to a StackOverflowError. Possible root causes include

    最近在公司更新一个老项目的时候,发现部署项目后tomcat报错,错误如下: Caused by: java.lang.IllegalStateException: Unable to complete ...

  10. ZJCTF预赛一个.py的逆向题

    #!/usr/bin/env python # -*- coding:utf-8 -*- from hashlib import sha256 def xor(a,b): result = [] fo ...