1、概述
本节快速安装基于单机服务器,很多配置可以默认不需要修改,数据存储在操作系统级别的磁盘。推出快速安装的目的,便于了解并指导基于Druid进行大数据分析的开发流程。本节主要讲Druid的安装、实例数据加载、查询及使用问题解决。
2、安装要求
1. Java 7 及以上
   2. Linux, Mac OS X, or other Unix-like OS (Windows不支持)
   3. VMware
   4. 2CPU ++; 内存2G ++
3、Zookeeper 安装
本次采单机版安装,如果采用分布式安装,则需要修改Druid相应配置,反之不需要。 Zookeeper默认启用2181端口监听。
Linux代码  
  1. curl http://www.gtlib.gatech.edu/pub/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -o zookeeper-3.4.6.tar.gz
  2. tar -xzf zookeeper-3.4.6.tar.gz
  3. cd zookeeper-3.4.6
  4. cp conf/zoo_sample.cfg conf/zoo.cfg
  5. ./bin/zkServer.sh start

zookeeper 安装验证

Linux和zookeeper命令代码  
  1. cd zookeeper-3.4.6 // 切换至Zookeeper根目录
  2. bin/zkCli.sh       // 启动Zookeeper客户端
  3. ls /               // 查看根节点
4、Druid 安装
Java代码  
  1. curl -O http://static.druid.io/artifacts/releases/druid-0.9.1.1-bin.tar.gz
  2. tar -xzf druid-0.9.1.1-bin.tar.gz
  3. cd druid-0.9.1.1
解压后 Druid 相关目录说明
  • LICENSE - 许可证文件。
  • bin/ - 快速启动脚本。
  • conf/* - 集群安装配置(包括Hadoop)。
  • conf-quickstart/* - 快速启动相关配置。
  • extensions/* - Druid扩展。
  • hadoop-dependencies/* - Druid hadoop依赖。
  • lib/* - Druid核心软件包。
  • quickstart/* - 快速启动示例文件及数据。
5、启动 Druid 准备
启动Druid相关服务之前,我们需要做两件事:
   1. 启动Zookeeper
   2. 切换到Druid根目录,执行 bin/init
6、启动 Druid 相关服务
启动5个Druid进程在不同远程终端窗口,因为是单机模式,所有进程在同一服务器上;在大的分布式集群中,很多Druid进程可以在同一服务器,我们需要启动的5个Druid进程:Historical、Broker、coordinator、overlord、middleManager。overlord与middleManager对应Indexer节点,节点相关介绍请查看《http://yangyangmyself.iteye.com/blog/2320502》,后续将会详细介绍节点工作机制。

切换至Druid安装目录,在不同远程终端窗口依次执行以命令

Java代码  
  1. java `cat conf-quickstart/druid/historical/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" io.druid.cli.Main server historical
  2. java `cat conf-quickstart/druid/broker/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/broker:lib/*" io.druid.cli.Main server broker
  3. java `cat conf-quickstart/druid/coordinator/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/coordinator:lib/*" io.druid.cli.Main server coordinator
  4. java `cat conf-quickstart/druid/overlord/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/overlord:lib/*" io.druid.cli.Main server overlord
  5. java `cat conf-quickstart/druid/middleManager/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/middleManager:lib/*" io.druid.cli.Main server middleManager
Druid 控制台 
   如果上述服务启动成功,则可以访问如下控制台
   1.
 访问http://localhost:8090/console.html 可以查看数据批量导入Druid的任务执情况,间隔一段时间刷新一下控制台,如果看到SUCCESS任务状态,说明任务执行成功,如下图所示:


 
    2. 访问http://localhost:8081/ 查看任完成进度、数据分片情况、索引创建等

7、Druid 加文件数据
以上Druid相关服务启动后,我们需要加载相关业务数据到Druid,Druid根据数据加载的配置文件,将我们的原始业务数据做相应的预处理后进行存储,以便后续查询统计。数据加载有两种方式:一是实时加载;二、加载批文件,本节讲如何加载Json批数据文件。
   Linux环境下加载数据文件,执行方式如下:
Pass.json代码  
  1. {"gcxh":"430000002745468976","license":"测AZ6LUL","licenseType":"02","hpys":"5","csys":null,"cllx":"0","clpp":null,"gateId":"430186000347","fxlx":"8","cdbh":"1","passTime":"2016-07-03T20:23:17.000Z","carPassDate":"2016-07-04","carPassTime":"04:23:17","carLoc":"测A","province":"43","city":"4301","region":"430186"}
Pass-index.json代码  
  1. {
  2. "type" : "index_hadoop",
  3. "spec" : {
  4. "ioConfig" : {
  5. "type" : "hadoop",
  6. "inputSpec" : {
  7. "type" : "static",
  8. "paths" : "/opt/data/pass.json" /**指定数据*/
  9. }
  10. },
  11. "dataSchema" : {
  12. "dataSource" : "kakou",  /**数据源名,类似表名*/
  13. "granularitySpec" : {
  14. "type" : "uniform",
  15. "segmentGranularity" : "day", /**数据分片粒度,按天*/
  16. "queryGranularity" : "none",
  17. "intervals" : ["2016-07-04/2016-07-05"] /**时间跨度*/
  18. },
  19. "parser" : {
  20. "type" : "string",
  21. "parseSpec" : {
  22. "format" : "json",  /**数据文件类型*/
  23. "dimensionsSpec" : {
  24. "dimensions" : [  /**数据列*/
  25. "license",
  26. "carLoc",
  27. "licenseType",
  28. "hpys",
  29. "cllx",
  30. "clpp",
  31. "gateId",
  32. "fxlx",
  33. "passTime",
  34. "carPassDate",
  35. "carPassTime",
  36. "province",
  37. "city",
  38. "region"
  39. ]
  40. },
  41. "timestampSpec" : {
  42. "format" : "auto",
  43. "column" : "passTime"  /**指定时间分段*/
  44. }
  45. }
  46. },
  47. "metricsSpec" : [
  48. {
  49. "name" : "count",
  50. "type" : "count"  /**按count聚合*/
  51. }
  52. ]
  53. },
  54. "tuningConfig" : {
  55. "type" : "hadoop",
  56. "partitionsSpec" : {
  57. "type" : "hashed",
  58. "targetPartitionSize" : 5000000
  59. },
  60. "maxRowsInMemory":500000,
  61. "jobProperties" : {}
  62. }
  63. }
  64. }
将上述Json示例数据保存为pass.json的文件,接下来定义一个数据配置文件pass-index.json,在pass-index.json中引用数据pass.json、指定数据源名(类似表名)、数据维度列、聚合粒度、时间间隔等。
Java代码  
  1. /**执行如下命令进行导入操作*/
  2. curl -X 'POST' -H 'Content-Type:application/json' -d @/opt/data/pass-index.json 192.168.121.200:8090/druid/indexer/v1/task
8、Druid 数据导入问题及解决办法
1. 中文乱码:Json规范这里不再阐述,讲一下生成Json数据文件注意的情况,目前发现Json中含有中文情况下,将Json数据加载到Druid时出现乱码。生成Json指文件编码为UTF-
2. 时间序列值:Druid按时间进序列值进行数据分片,按时间字段进行数据分片的字段值需要标准化(UTC)处理。
3. 任务挂起或等待:Druid将任务提交给Hadoop中的Map-Reduce执行,导入时任务可会因为某种原因导致任务挂起或停止。

   中文乱码解决办法:

编码代码  
  1. try{
  2. OutputStream out = new FileOutputStream(new File("E:\\study\\druid\\rpass_20150801.json"),true);
  3. Writer write = new OutputStreamWriter(out,"utf-8");
  4. write.write(json.toString()+"\n");
  5. write.flush();
  6. write.close();
  7. out.close();
  8. }catch(){
  9. e.printStackTrace();
  10. }

时间序列值UTC标准化:

Java代码  
  1. /**引用Joda类库*/
  2. DateTimeFormatter dtFormatter=DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
  3. /**输出结果 2016-08-29T22:58:20.000Z*/
  4. String result = dtFormatter.parseDateTime('2016-08-29 22:58:20').withZone(DateTimeZone.UTC).toString();

任务挂起或停止解决办法:可以通过下述命将挂起任务删除,重新执行导入。

Java代码  
  1. /**taskId可以从控制台获取或在执行Curl导入命令时返回值*/
  2. http://<OVERLORD_IP>:<port>/druid/indexer/v1/task/{taskId}/shutdown
9、Druid 请求接口
1. 查询请求接口对应Broker,默认8082端口 http://<queryable_host>:<port>/druid/v2/?pretty
2. 数据导入接口对应Indexing,默认8090端口 http://<OVERLORD_IP>:<port>/druid/indexer/v1/task

转载于:https://www.cnblogs.com/collin-xm/p/8384273.html

Druid 大数据分析之快速应用(单机模式)相关推荐

  1. 【转载】DRuid 大数据分析之查询

    转载自http://yangyangmyself.iteye.com/blog/2321759 1.Druid 查询概述 上一节完成数据导入后,接下来讲讲Druid如何查询及统计分析导入的数据.   ...

  2. 基于大数据分析的安全管理平台技术研究及应用

    http://www.venustech.com.cn/NewsInfo/531/25566.Html [内容摘要]本文首先通过介绍大数据的起因,给出了大数据的定义和特征描述,并简要说明了当前大数据的 ...

  3. 图文详解 DBMS 数据库管理系统三层架构体系(三级模式)《ClickHouse 实战:企业级大数据分析引擎》...

    引文 计算机科学领域的所有问题,都可以通过添加一层中间层来解决.通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了"数据库的三级模式":数据库在三个级别 (层次)上进行 ...

  4. Spark快速大数据分析——Scala语言基础(壹)

    Spark快速大数据分析--Scala语言基础(壹) 文章目录 Spark快速大数据分析--Scala语言基础(壹) 前记 Scala的历史 环境搭建: 1.SBT构建工具和REPL: 2.使用IDE ...

  5. 高性能计算系统——大数据与快速数据分析对高性能分析的需求

    大数据与快速数据分析对高性能分析的需求 智能家居的设备的产生必然使下一代家居服务概念化,社交网站和知识社区的日益普及,科学实验和技术计算的激增,高度可编程以及软件定义IT基础设施(服务器.存储装置.网 ...

  6. DBMS 数据库管理系统的三级模式架构《ClickHouse 实战:企业级大数据分析引擎》...

    引文 计算机科学领域的所有问题,都可以通过添加一层中间层来解决.通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了"数据库的三级模式":数据库在三个级别 (层次)上进行 ...

  7. Spark快速大数据分析——读书笔记

    --8.16开始整理 Spark快速大数据分析 推荐序: 一套大数据解决方案通常包含多个组件,从存储.计算和网络硬件层,到数据处理引擎,再到利用改良的统计和计算算法.数据可视化来获得商业洞见的分析层, ...

  8. 《Spark快速大数据分析》—— 第三章 RDD编程

    本文转自博客园xingoo的博客,原文链接:<Spark快速大数据分析>-- 第三章 RDD编程,如需转载请自行联系原博主.

  9. spark任务shell运行_《Spark快速大数据分析》- 根据简单例子理解RDD

    1. RDD简介 RDD,弹性分布式数据集(Resiliennt Distributed Datasets),是Spark中最重要的核心概念,是Spark应用中存储数据的数据结构. RDD 其实就是分 ...

最新文章

  1. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
  2. 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug
  3. 文巾解题 679. 24 点游戏
  4. 数据结构实验之排序六:希尔排序
  5. vim emmet插件
  6. wms地图绘制工具_【工具】奇幻风世界地图绘制工具Inkarnate
  7. 中国农业大学计算机研究生专业课,中国农业大学2019计算机考研纯干货分享
  8. 如何从seo的维度来选择网站的关键词
  9. Mysql数据库规范(阿里巴巴嵩山版java开发手册)
  10. 2022年全球与中国飞秒光纤激光器市场现状及未来发展趋势
  11. windows7内部版本7601副本不是正版的解决方案
  12. ctfshow-WEB-web2
  13. 信息学奥赛一本通:1156:求π的值
  14. Google招聘需求分析
  15. Java按照word模板导出、下载文档
  16. 源代码安全加密解决方案
  17. 对“动态多重网络”建模与目标选择方法的介绍
  18. H3 BPM嵌入式流程解决方案 (文末附H3 BPM软件下载地址)
  19. ad中按钮开关的符号_基础3:按钮开关,图文秒懂!
  20. 两个向量夹角的cos值

热门文章

  1. tf.expand_dims() 的用法
  2. Pycharm 和 vscode 多光标、折叠代码和代码格式化快捷键
  3. 十七、生产者消费者问题
  4. 决策树算法详解(3)
  5. 重温目标检测--YOLO v2 -- YOLO9000
  6. 多视角图像生成--Multi-View Image Generation from a Single-View
  7. java使用Maven加载JDBC:mysql-connector连接MySQL/MariaDB
  8. matlab极大值点个数,求一组数的极大值个数
  9. Docker创建自己的github(Gitea)
  10. 清华学长手把手带你做UI自动化测试