1、Druid(Imply-3.0.4)介绍及部署(centos6.10)、验证
  nNPyvzOmRTFq 2023年11月02日 41 0

Apache Druid 系列文章

1、Druid(Imply-3.0.4)介绍及部署(centos6.10)、验证 2、Druid的入门示例(使用三种不同的方式摄入数据和提交任务) 3、Druid的load data 示例(实时kafka数据和离线-本地或hdfs数据) 4、java操作druid api 5、Druid配置文件详细介绍以及示例 6、Druid的Roll up详细介绍及示例


(文章目录)


本问介绍了Druid的基本内容以及部署。 本文前提依赖jdk、zookeeper、hdfs,相关内容参考本人编写的其他专栏博文。 本文分为2个部分,即介绍和imply方式部署。

一、Druid介绍

1、Druid简介

官网:https://imply.io/what-is-druid/ http://www.apache-druid.cn/ Druid是MetaMarket 公司开发的,将Druid定义为“开源、分布式、面向列式存储的实时分析数据存储系统”。要解决的"痛点":

  • 在高并发环境下,保证海量数据查询分析性能
  • 提供海量实时数据的查询、分析与可视化功能

2、Druid关键特性

Druid是面向海量数据的、用于实时查询与分析的OLAP存储系统,時序數據庫。Druid的关键特性如下:

  • 亚秒级的OLAP查询分析,采用了列式存储、倒排索引、位图索引等关键技术
  • 在亚秒级别内完成海量数据的过滤、聚合以及多维分析等操作
  • 实时流数据分析
  • 实时数据在亚秒级内的可视化
  • 丰富的数据分析功能
  • SQL查询语言,REST查询接口
  • 高可用性与高可拓展性

3、Druid的使用场景

如果使用场景符合以下的几个特征,那么Druid是一个可选项:

  • 数据插入频率比较高,但较少更新数据
  • 大多数查询场景为聚合查询和分组查询(GroupBy),同时还有一定得检索与扫描查询
  • 将数据查询延迟目标定位100毫秒到几秒钟之间
  • 数据具有时间属性(Druid针对时间做了优化和设计)
  • 在多表场景下,每次查询仅命中一个大的分布式表,查询又可能命中多个较小的lookup表
  • 场景中包含高基维度数据列(例如URL,用户ID等),并且需要对其进行快速计数和排序
  • 需要从Kafka、HDFS、对象存储(如Amazon S3)中加载数据

如果您的使用场景符合以下特征,Druid可能不要用:

  • 根据主键对现有数据进行低延迟更新操作。Druid支持流式插入,但不支持流式更新(更新操作是通过后台批处理作业完成)
  • 延迟不重要的离线数据系统
  • 场景中包括大连接(将一个大事实表连接到另一个大事实表),并且可以接受花费很长时间来完成这些查询

6、Druid 对比其他OLAP

1)、Druid vs. Elasticsearch

Druid在导入过程会对原始数据进行Rollup,而ES会保存原始数据 Druid专注于OLAP,针对数据导入以及快速聚合操作做了优化 Druid不支持全文检索

2)、Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)

Druid采用列式存储,使用倒排和bitmap索引,可以做到快速扫描相应的列

3)、Druid vs. Spark

Spark SQL的响应还不做到亚秒 Druid可以做到超低的响应时间,例如亚秒,而且高并发面向用户的应用。

4)、Druid vs SQL-on-Hadoop (Impala/Drill/Spark SQL/Presto)

Driud查询速度更快 数据导入,Druid支持实时导入,SQL-on-Hadoop一般将数据存储在Hdfs上,Hdfs的写入速度有可能成为瓶颈 SQL支持,Druid也支持SQL,但Druid不支持Join操作

5)、Druid vs. Kylin

Kylin不支持实时查询,Druid支持,但是Kylin3.0已经支持实时查询 Kylin支持表连接(Join),Druid不支持 Druid可以进行数据的存储,Kylin只能进行数据的OLAP分析

二、安装imply

1、Imply介绍

Imply也是Druid的核心团队开发的,它基于Apache Druid开发了一整套大数据分析解决方案 Imply基于Druid进行了一些组件开发,提供开源社区版本和商业版,简化了部署,imply有点类似于Cloudera Manager

2、集群规划

安装环境是centos6.10,jdk版本是Java1.8(1.8.0_144) 在这里插入图片描述

3、下载imply并解压

下载地址:https://imply.io/download-imply/ 本示例安装的imply-3.0.4版本,本来安装的版本是imply-2022.12.1,但因为环境不支持,运行任务时出现如下图异常 在这里插入图片描述 界面异常信息: Failed to get overlord modules: Request failed with status code 404 经查询发现imply-2022.12.1软件环境要求如下: https://docs.imply.io/latest/install/ 在这里插入图片描述

tar -xvzf imply-3.0.4.tar.gz -C /usr/local/bigdata

4、配置imply-3.0.4

mysql中创建imply相关的数据库

CREATE DATABASE `druid` DEFAULT CHARACTER SET utf8;
CREATE DATABASE `pivot` DEFAULT CHARACTER SET utf8;

-- MySQL版本必须使用5.5及以上版本(Druid和Pivot使用utf8字符集)

5、修改并上传配置文件

配置概述 Druid集群服务众多,一套完整的Druid集群需要修改很多配置文件。我们对常用配置文件进行了整理。 下面的配置common.runtime.properties是配置将Deep storage、Indexing service logs存储在HDFS中。 (同时有关文章说需要将core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml四个配置文件放在Druid集群的/usr/local/bigdata/imply-3.0.4/conf/druid/_common中,并分发至整个集群。)

验证结果:数据文件、日志存储HDFS中。

#
# Extensions
#

druid.extensions.directory=dist/druid/extensions
druid.extensions.hadoopDependenciesDir=dist/druid/hadoop-dependencies
druid.extensions.loadList=["druid-datasketches","druid-lookups-cached-global","mysql-metadata-storage","druid-hdfs-storage","druid-histogram","druid-kafka-indexing-service"]

#
# Logging
#

# Log all runtime properties on startup. Disable to avoid logging properties on startup:
druid.startup.logging.logProperties=true

#
# Zookeeper
#

druid.zk.service.host=server1:2118,server2:2118,server3:2118
druid.zk.paths.base=/druid

#
# Metadata storage
#

# For Derby server on your Druid Coordinator (only viable in a cluster with a single Coordinator, no fail-over):
# druid.metadata.storage.type=derby
# druid.metadata.storage.connector.connectURI=jdbc:derby://master.example.com:1527/var/druid/metadata.db;create=true
# druid.metadata.storage.connector.host=master.example.com
# druid.metadata.storage.connector.port=1527

# For MySQL:
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://192.168.10.44:3306/druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=77777777

#
# Deep storage
#

# For local disk (only viable in a cluster if this is a network mount):
# druid.storage.type=local
# druid.storage.storageDirectory=var/druid/segments

# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments

#
# Indexing service logs
#

# For local disk (only viable in a cluster if this is a network mount):
# druid.indexer.logs.type=file
# druid.indexer.logs.directory=var/druid/indexing-logs

# For HDFS:
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs

#
# Service discovery
#

druid.selectors.indexing.serviceName=druid/overlord
druid.selectors.coordinator.serviceName=druid/coordinator

#
# Monitoring
#

druid.monitoring.monitors=["org.apache.druid.java.util.metrics.JvmMonitor"]
druid.emitter=logging
druid.emitter.logging.logLevel=info

在这里插入图片描述

1)、修改 conf/druid/_common/common.runtime.properties 文件

  • 修改zookeeper的配置
druid.zk.service.host=server1:2118,server2:2118,server3:2118

# 其中/conf/zk/zoo.cfg文件中关于zokepr的端口配置不确定是否需要修改,其默认的是2181端口。本示例是将其端口进行修改成了本环境实际的端口2118
  • 修改MySQL的配置
druid.extensions.loadList=["mysql-metadata-storage"]
# 其他数据源配置
# druid.extensions.loadList=["druid-datasketches","druid-lookups-cached-global","mysql-metadata-storage","druid-hdfs-storage","druid-histogram","druid-kafka-indexing-service"]

druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://192.168.10.44:3306/druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=7777777777

# 选用hdfs作为数据的存储位置,故需要将Hadoop配置XML文件(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml)放在Druid节点的classpath上。
#可以通过将它们复制到conf/druid/_common/中来实现

2)、修改 conf/pivot/config.yaml 配置文件

修改mysql的配置

stateStore:
  type: mysql
  location: mysql
  connection: 'mysql://root:7777777@192.168.10.44:3306/pivot'

6、将配置好的 imply 分发到不同节点

scp -r imply-3.0.4/ server2:$PWD
scp -r imply-3.0.4/ server3:$PWD

7、配置环境变量

在每台服务器上配置DRUID_HOME环境变量

export DRUID_HOME=/usr/local/bigdata/imply-3.0.4
export PATH=$PATH:${DRUID_HOME}/bin

#重新加载环境变量
source /etc/profile 

8、启动 imply 集群

1)、启动zk集群

2)、server1节点(使用外部zk而不使用imply自带zk启动overlord和coordinator)

# 使用外部zk而不使用imply自带zk启动overlord和coordinator
/usr/local/bigdata/imply-2022.12.1/bin/supervise -c /usr/local/bigdata/imply-2022.12.1/conf/supervise/master-no-zk.conf

/usr/local/bigdata/imply-3.0.4/bin/supervise -c /usr/local/bigdata/imply-3.0.4/conf/supervise/master-no-zk.conf

在这里插入图片描述 在这里插入图片描述

3)、server2节点(启动historical和middlemanager)

/usr/local/bigdata/imply-2022.12.1/bin/supervise -c /usr/local/bigdata/imply-2022.12.1/conf/supervise/data.conf
/usr/local/bigdata/imply-3.0.4/bin/supervise -c /usr/local/bigdata/imply-3.0.4/conf/supervise/data.conf

在这里插入图片描述 在这里插入图片描述

4)、server3节点(启动broker和router)

/usr/local/bigdata/imply-2022.12.1/bin/supervise -c /usr/local/bigdata/imply-2022.12.1/conf/supervise/query.conf

/usr/local/bigdata/imply-3.0.4/bin/supervise -c /usr/local/bigdata/imply-3.0.4/conf/supervise/query.conf

啓動可能存在以下異常
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)
/usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/bigdata/imply-2022.12.1/dist/pivot/linux/pivot-linux)

具體升級參考文檔(centos6手動升級GCC7.5))
https://note.youdao.com/s/Rcsr80mI

在这里插入图片描述 在这里插入图片描述 如果希望imply运行在后台,在每个执行命令后面加 --daemonize

9、访问WebUI

在这里插入图片描述 以上,完成了Druid的简单介绍以及安装。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

nNPyvzOmRTFq
最新推荐 更多

2024-05-31