分享

Druid初入门-应用/加载数据

 jasonbetter 2019-08-26

概述:

Druid有什么作用:

Druid如何工作:

Druid常见应用领域:

什么时候我该使用Druid:

构建:

Druid的进程和服务器

使用:

加载数据:

使用数据加载器加载数据

使用规范加载数据(通过控制台)

使用规范加载数据(命令行)

不使用脚本加载数据

清理:


参考:
Hortonworks官方文档-https:///open-source/druid/

Apache Druid官方文档-https://druid./docs/latest/design/

以最新版0.15.0版本阐述~,非使用服务商提供的版本~企业用户安装请使用-Cm或者Ambari--个人笔记本安装暂未成功

概述:

Apache Druid (incubating) is a real-time analytics database designed for fast slice-and-dice analytics ("OLAP" queries) on large data sets. Druid is most often used as a database for powering use cases where real-time ingest, fast query performance, and high uptime are important. As such, Druid is commonly used for powering GUIs of analytical applications, or as a backend for highly-concurrent APIs that need fast aggregations. Druid works best with event-oriented data.

 Apache Druid(孵化)是一个实时分析的数据库,用于对大型数据集进行快速的切片和OLAP查询。Druid提供低延迟(实时)的数据摄入,灵活的数据探索和加速数据聚合。现有的Druid部署已经扩展到了数万亿事件和数PB的数据。Druid常用于为面向用户分析应用程序提供支持。

Druid有什么作用:

 主要特点:

Druid的主要特点
特征描述
亚秒查询Druid提供亚秒查询,即使您有数TB的数据和数十个维度
实时数据摄取Druid使实时成为现实。查询数据到达后几秒钟。与Apache Kafka的本机集成使得实现实时分析变得简单
与Apache Hive集成使得任何与HIve兼容的工具构建OLAP多维数据集并运行亚秒级SQL查询
与Apache Ambari集成Apache Ambari使Druid的部署,配置和监控变得轻而易举

Druid如何工作:

Druid很快,因为数据被转换为重度索引的列式格式,非常适合典型的OLAP查询模式。通过Hive SQL,使用HDP中的Druid to Hive连接器或通过本机REST API查询Druid。

Hdp-Druid文档配图

 Apache Druid官方架构图

Druid常见应用领域:
 

1.点击流分析(网络和移动分析)

2.网络遥测分析(网络性能监控)

3.服务器指标存储

4.供应链分析(制造指标)

5.应用性能指标

6.数字营销/广告分析

7.商业智能/OLAP

什么时候我该使用Druid:

 如果您的用例符合以下几个描述,Druid可能是一个不错的选择:
 

1。插入效率非常高

2。您的大多数查询都是聚合和报告查询("分组依据"查询)。您可能还有搜索和扫描查询。

3.您将延迟定位在100毫秒到几秒

4.您的数据有一个时间组件(Druid包括与实践特别相关的优化和设计选择)

5.您可能有多个表,但每个查询只能访问一个大的分布式表。查询可能会遇到多个较小的“查找表”

6.您有高基数数据列(例如URL,用户ID),需要对它们进行快速技术和排名

7.您希望从Kafka,HDFS,对象存储-数据湖?加载数据。

构建:

Druid的进程和服务器

 Druid与集中过程类型,简要描述如下:
 

Coordinator(协调器) 进程管理集群上的数据可用性。

OverIord进程控制数据提取工作负载的分配。

Broker进程处理来自外部客户端的分配。

Router进程使可选的进程,可以将请求路由到Broker,Coordinator和OverIords。

Historical进程存储可查询的数据。

MiddleManager进程负责提取数据。

druid可以按照您喜欢的方式进行部署,但是为了便于部署,我们建议讲他们组织为三种服务类型:Master,Query和Datta

Master:运行Coordinator和Overlord流程,管理数据可用性和摄取

Query:运行Broker和可选的Router进程,处理来自外部客户端的查询。

Data:运行Historical和MiddleManager流程,执行提取工作负载并存储所有可查询数据。
 

使用:

加载数据:

通过Druid Overlord提交摄取任务规范来启动数据加载。

提取规范可以手写或使用内置于Druid控制器中的“数据加载器编写”。数据加载器可以通过对数据进行采样并迭代配置各种摄取参数来帮助您构建摄取规范。数据加载器目前仅支持本机批量提取(智齿流式传输,包括存储在Apache Kafka和Aws Kinesis中的数据,将在未来的版本中提供)。流式数据摄取只能通过今天的书面提取规范获得。

使用数据加载器加载数据

如果你安装完本地模式,此处未成功安装,按照官方给的示例图片来描述。 -请知悉 --原文出处Druid官网-https://druid./docs/0.15.0-incubating/tutorials/tutorial-batch.html

导航到localhost:8888 并点击Load data控制台标题。选择Load disk。

æ°æ®å è½½å¨init

输入quickstart/tutorial目录下wikkiticker-2015-09-12-sampled.json.gz过滤器。如果需要从多个文件中提取数据,则会分离基目录和通配符文件过滤器。

点击Preview并确保您看到的数据正确无误。

æ°æ®å è½½å¨ç¤ºä¾

找到数据后,可以单击“next:parse time”转到下一步。数据加载器讲尝试自动确定数据的正确解析器。在这种情况下,它将成功确定json。您可以使用不同的解析器来预览Druid讲如何让解析您的数据。

æ°æ®å è½½å¨è§£ææ°æ®

随着json解析器选中,单击Next:Parse time去确定主timestamp列中的步骤。Druid的架构需要一个主时间戳列(内部存储在一个名为_time的列中)。如果数据中没有时间戳,请选择Constant Value。在我们的示例中,数据加载器将确定time原始数据中的列使唯一可用作主时间列的候选列。

æ°æ®å è½½å¨è§£ææ¶é´

点击“Next:Transform”两次经过Transform和Filter步骤。您无需再这些步骤中输入任何内容,应用摄取时间转换和过滤器待会讲述-

在该Configure schema步骤中,您可以配置将那些维度(和指标)提取Druid。这正是Druid一旦被摄取就会出现的数据。由于给的数据集非常小,请Rollup通过点击开关并确定更改来关闭并关闭。

æ°æ®å è½½å¨æ¶æ

对架构配置满意后,宕机Next转到partition可以微调数据分区方式的步骤。在这里,您可以调整数据在Druid中分割成段的方式。由于这是一个小数据集,因此在步骤中无需进行任何调整。

æ°æ®å è½½å¨ååº

点击Tune步骤,我们进入发布步骤,这里我们可以指定Druid中的数据源名称,我们将折耳根数据源命名为wikipedia。

æ°æ®å è½½å¨åå¸

最后,点击Next查看您的规范。这是你构建的规范,你可以返回并在之前的步骤中进行修改。同样,您也可以直接编辑规范,并在前面的步骤中看到他。

æ°æ®å è½½å¨è§è

对规范满意之后,点击Submit并创建一个摄取任务。

您将进入任务视图,重点是新创建的任务。

ä»»å¡è§å¾

在任务视图中,您可以点击Refresh几次,直到你的任务成功。

当任务成功时,意味着它构建了一个或多个现在由数据服务器失去的段。

导航到DataSooures视图并点击刷新,直到wikipedia出现数据源(),加载可能需要几秒钟。

æ°æ®æºè§å¾

一旦看到绿色(Fully availiable)标志时,就可以查询数据了。此时,您可以转到Query视图以对数据源运行SQL查询。由于这是一个小型数据集,您只需运行SELECT * FROM wikipedia查询即可查看结果。

æ¥è¯¢è§å¾

使用规范加载数据(通过控制台)

Druid软件包中由quickstart/tutorial/wikipedia-index.json,为方便起见,此处显示已配置为读取quickstart/tutorial/Wikiticker-2015-09-12

  1. {

  2. "type" : "index",

  3. "spec" : {

  4. "dataSchema" : {

  5. "dataSource" : "wikipedia",

  6. "parser" : {

  7. "type" : "string",

  8. "parseSpec" : {

  9. "format" : "json",

  10. "dimensionsSpec" : {

  11. "dimensions" : [

  12. "channel",

  13. "cityName",

  14. "comment",

  15. "countryIsoCode",

  16. "countryName",

  17. "isAnonymous",

  18. "isMinor",

  19. "isNew",

  20. "isRobot",

  21. "isUnpatrolled",

  22. "metroCode",

  23. "namespace",

  24. "page",

  25. "regionIsoCode",

  26. "regionName",

  27. "user",

  28. { "name": "added", "type": "long" },

  29. { "name": "deleted", "type": "long" },

  30. { "name": "delta", "type": "long" }

  31. ]

  32. },

  33. "timestampSpec": {

  34. "column": "time",

  35. "format": "iso"

  36. }

  37. }

  38. },

  39. "metricsSpec" : [],

  40. "granularitySpec" : {

  41. "type" : "uniform",

  42. "segmentGranularity" : "day",

  43. "queryGranularity" : "none",

  44. "intervals" : ["2015-09-12/2015-09-13"],

  45. "rollup" : false

  46. }

  47. },

  48. "ioConfig" : {

  49. "type" : "index",

  50. "firehose" : {

  51. "type" : "local",

  52. "baseDir" : "quickstart/tutorial/",

  53. "filter" : "wikiticker-2015-09-12-sampled.json.gz"

  54. },

  55. "appendToExisting" : false

  56. },

  57. "tuningConfig" : {

  58. "type" : "index",

  59. "maxRowsPerSegment" : 5000000,

  60. "maxRowsInMemory" : 25000

  61. }

  62. }

  63. }

此规范将创建名为“wikipedia”的数据源。

从任务视图中,单击Submit task并选择Raw JSON task。

ä»»å¡è§å¾æ·»å ä»»å¡

这将显示规范提交对话框,您可以在其中粘贴上面的规范。

æ¥è¯¢è§å¾

提交规范后,您可以按照上述相同的说明等待数据加载后进行查询。

使用规范加载数据(命令行)

为了方便起见,Druid包中包含批量摄取数据的脚本bin/post-index-task

此脚本会将摄取任务POST给Druid Overlord并轮询Druid,知道数据可用于查询。

bin/post-index-task --file quick/tutorial/winkipedia-index.json -url http://localhost:8081

有下面的输出后,您可以按照上面阐述过的方法进行查询。

  1. Beginning indexing data for wikipedia

  2. Task started: index_wikipedia_2018-07-27T06:37:44.323Z

  3. Task log: http://localhost:8081/druid/indexer/v1/task/index_wikipedia_2018-07-27T06:37:44.323Z/log

  4. Task status: http://localhost:8081/druid/indexer/v1/task/index_wikipedia_2018-07-27T06:37:44.323Z/status

  5. Task index_wikipedia_2018-07-27T06:37:44.323Z still running...

  6. Task index_wikipedia_2018-07-27T06:37:44.323Z still running...

  7. Task finished with status: SUCCESS

  8. Completed indexing data for wikipedia. Now loading indexed data onto the cluster...

  9. wikipedia loading complete! You may now query your data

不使用脚本加载数据

我们简要讨论一下如何在不适用脚本多的情况下提交摄取任务。您不需要运行这些命令。

要提交任务,请在druid的根目录下的终端窗口将其发布到Druid

curl -X 'post' -H 'Content-Type:application/json' -d @quickstart/tutorial/wikipedia-index.json http://localhost:8081/druid/indexer.v1.task

提交成功后,将打印任务的ID:

{"task":"index_wikipedia_2018-06-09T21:30:32.802Z"}

可以从控制台监视任务的状态。

清理:

如果你要浏览器他摄取教程,则需要关闭集群并删除var druid包下目录的内容来重置集群状态。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多