Durid概述ApacheDruid是一个集时序数据库、数据仓库和全文检索系统特点为一体的分析数据平台。本文将带您简要了解Druid的特性、使用场景、技术特点和架构。这将帮助您选择数据存储方案、深入了解Druid存储、深入了解时序存储等。ApacheDruid是一个高性能的实时分析数据库。上一篇我们了解了Druid的加载方式。我们主要说两种,一种是加载本地数据,一种是通过kafka加载流式数据。数据摄取4.1加载本地文件我们导入democase的演示文件4.1.1.1数据选择通过UI选择本地磁盘,选择Connectdata4.1.1.2Demodata在quickstart/tutorialwikiticker-2015-09目录下查看demo数据-12-sampled.json.gz文件4.1.1.3选择数据源因为我们是通过imply安装的,在Base目录下输入绝对路径/usr/local/imply/imply-2021.05-1/dist/druid/quickstart/tutorial,FileFilter输入wikiticker-2015-09-12-sampled.json.gz,然后选择applyapplicationconfiguration,我们的数据已经加载到Basedirectory和Filefilter是分开的,因为可能需要从多个文件中摄取数据同一时间。4.1.1.4加载数据定位数据后,可以点击“下一步:解析数据”进入下一步。数据加载器将尝试自动确定数据的正确解析器。在这种情况下,它将成功确定json。随意使用不同的解析器选项来预览Druid将如何解析您的数据。4.1.2数据源规范配置4.1.2.1设置时间列选择json选择器后,点击下一步:解析时间进入下一步确定你的主要时间列。Druid的架构需要一个主时间列(在内部存储为一个名为_time的列)。如果您的数据中没有时间戳,请选择ConstantValue。在我们的示例中,数据加载器将确定原始数据中的时间列是用作主要时间列的唯一候选者。在这里可以选择时间列和时间的显示方式4.1.2.2设置转换器这里可以添加一个虚拟列,将一个列的数据转换成另一个虚拟列。这里我们没有设置,所以跳过4.1.2.3设置过滤器这里可以设置过滤器,有些数据不能显示。这里我们也跳过4.1.2.4配置schema在Configureschema步骤中,您可以配置将哪些维度和指标摄入到Druid中。这些是被德鲁伊吞噬后出现的数据。由于我们的数据集非常小,关闭汇总并确认更改。4.1.2.5配置分区对架构满意后,单击下一步进入分区步骤。在此步骤中,您可以调整数据划分为段文件的方式。因为我们的数据量很小,这里我们按照DAY段提交4.1.3任务4.1.3.1发布数据点击完成Tune步骤,进入Publish步骤,这里可以给我们的数据源命名,这里我们命名为druid-sampled,点击Next查看我们的dataspecification这是你构建的spec,随时返回并在前面的步骤中进行更改,以查看更改将如何更新spec,同样你可以直接编辑spec并查看它在前面的步骤中。4.1.3.2提交作业一旦您对摄取规范感到满意,请单击“提交”,然后将创建一个数据摄取作业。您可以转到任务视图并关注新创建的任务。任务视图设置为自动刷新,请等待任务成功。当一项任务成功完成时,这意味着它构建了一个或多个段,这些段现在将由数据服务器接收。4.1.3.3查看数据源从标题导航到数据源视图,一旦看到绿色(完全可用)圆圈,就可以查询数据源。此时,您可以转到Query视图以对数据源运行SQL查询。4.1.3.4查询数据您可以进入查询页面进行数据查询。这里在sql窗口中写入sql,点击运行即可查询数据。4.2Kafka加载流式数据4.2.1安装Kafka这里我们使用docker-compose来启动kafka4。2.1.1编辑资源列表vidocker-compose.ymlversion:'2'services:zookeeper:image:zookeepercontainer_name:zookeeperports:-2181:2181kafka:image:wurstmeister/kafka##mirrorvolumes:-/etc/localtime:/etc/localtime##挂载位置(kafka镜像与宿主机时间保持不变)ports:-"9092:9092"environment:KAFKA_ADVERTISED_HOST_NAME:192.168.64.190##修改:主机IPKAFKA_ZOOKEEPER_CONNECT:zookeeper:2181##卡夫卡运行是基于zookeeper的KAFKA_ADVERTISED_PORT:9092KAFKA_LOG_RETENTION_HOURS:120KAFKA_MESSAGE_MAX_BYTES:10000000KAFKA_REPLICA_FETCH_MAX_BYTES:10000000KAFKA_GROUP_MAX_SESSION_TIMEOUT_MS:60000KAFKA_NUM_PARTITIONS:3KAFKA_DELETE_RETENTION_MS:10004.2.2.2启动容器docker-composeup-ddocker-composeps4.2.3验证kafka启动kafka后需要验证kafka是否可用4.2.3.1登录容器登录容器,进入指定目录#进入容器dockerexec-itkafka_kafka_1bash#进入/opt/kafka_2.13-2.7.0/bin/目录cd/opt/kafka_2.13-2.7.0/bin/4.2.3.2发送消息运行客户端发送消息,注意这里的连接地址需要写入我们配置的主机地址#运行kafkaproducer发送消息./kafka-console-producer.sh--broker-list192.168.64.173:9092--topictest发送的数据如下{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}4.2.3.3消费消息运行消费者消费消息./kafka-console-consumer.sh--bootstrap-server192.168.64.173:9092--topictest--from-beginninghasdata打印说明我们的kafka安装没有问题4.2.4发送数据到kafka4.2.4.1写代码写代码发送消息到kafka@ComponentpublicclassKafkaSender{@AutowiredprivateKafkaTemplate
