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

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

时间: 2024-10-07 06:55:10

Druid 大数据分析之快速应用(单机模式)的相关文章

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

[引言]这篇文章原载于内刊,现发布于此.内容有所删减. Research and Application of Big Data Analysis Based Security Management Platform Last Modified By yepeng @ 2014-1-14 [内 容摘要]本文首先通过介绍大数据的起因,给出了大数据的定义和特征描述,并简要说明了当前大数据的研究概况.接下来,本文阐释了大数据分析技术,对大数据 在信息安全领域尤其是安全管理平台领域的应用做了深入分析,并

工业互联网:八成以上企业认为大数据分析在下一年会增加企业竞争力

87%的企业认为大数据分析会重新定义其产品,未来三年内,在所属领域里的竞争优势.89%的认为未使用数据分析的企业未来一年里将面临失去市场份额和发展动力的风险. 该统计和其它一些数据结果摘自埃森哲和通用电气共同发表的白皮书:如何将大数据分析和IoT结合重新定义一个行业的发展前景.白皮书中埃森哲和通用给出的工业互联网定义为: "这是一个庞大的物理世界,由机器.设备.集群和网络组成,能够在更深的层面和连接能力.大数据.数字分析相结合,并在一定环境中提供新鲜.有附加值的服务. 大数据分析现已被认为是保持

物联网将对大数据分析产生哪些影响?

数据一直在业务中发挥关键作用,但大数据分析的兴起,大量存储的信息可以在计算上挖掘出来,揭示有价值的见解.模式和趋势,使其在现代商业领域几乎不可或缺.收集和分析这些数据并将其转化为可行的结果的能力是成功的关键. 随着物联网的发展,这一过程变得越来越复杂,在日常生活中,从车辆到商店展示,到智能家居自动化技术,如恒温器和水位显示器,都能产生大量的数据.物联网带来了各种新的分析挑战,而更快适应这一新现实的企业将获得明显的优势. 改变基础设施的需求 物联网产生的数据面临的主要问题之一就是它的规模.英特尔公

大数据分析案例

部分数据来源于网络,如有侵权请告知. 一.大数据分析在商业上的应用 1.体育赛事预测 世界杯期间,谷歌.百度.微软和高盛等公司都推出了比赛结果预测平台.百度预测结果最为亮眼,预测全程64场比赛,准确率为67%,进入淘汰赛后准确率为94%.现在互联网公司取代章鱼保罗试水赛事预测也意味着未来的体育赛事会被大数据预测所掌控. “在百度对世界杯的预测中,我们一共考虑了团队实力.主场优势.最近表现.世界杯整体表现和博彩公司的赔率等五个因素,这些数据的来源基本都是互联网,随后我们再利用一个由搜索专家设计的机

《大数据分析中的计算智能研究现状与发展》—— 读后感

<大数据分析中的计算智能研究现状与发展>这篇文章是郭平.王可.罗阿理.薛明志发于2015年11月发表于软件学报. 该篇文章讨论了大数据分析中计算智能研究存在的问题和进一步的研究方向,阐述了数据源共享问题,并建议利用以天文学为代表的数据密集型基础科研领域的数据开展大数据分析研究.  大数据和人工智能是现代计算机技术应用的重要分支,近年来这两个领域的研究相互交叉促进,产生了很多新的方法.应用和价值.大数据和人工智能具有天然的联系,大数据的发展本身使用了许多人工智能的理论和方法,人工智能也因大数据技

Druid 实时数据分析存储系统

简介 Druid 是一个开源的,分布式的,列存储的,适用于实时数据分析的存储系统,能够快速聚合.灵活过滤.毫秒级查询.和低延迟数据导入. Druid在设计时充分考虑到了高可用性,各种节点挂掉都不会使得druid停止工作(但是状态会无法更新): Druid中的各个组成部分之间耦合性低,如果不需要实时数据完全可以忽略实时节点: Druid使用Bitmap indexing加速列存储的查询速度,并使用CONCISE算法来对bitmap indexing进行压缩,使得生成的segments比原始文本文件

大数据简介与大数据分析

最近几年,大数据热得像烫手山芋!什么是大数据?通过查阅资料,整理一番,博文将给您带来福利了! 大数据概念 "大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取.管理和处理. "大数据"首先是指数据体量(volumes)?大,指代大型数据集,一般在10TB?规模左右,但在实际应用中,很多企业用户把多个数据集放在一起,已经形成了PB级的数据量:其次是指数据类别(variety)大,数据来自多种数据源,数据种类和格式日渐

案例解读|江苏银行—智多星大数据分析云平台实践

2014年10月,江苏银行夏平董事长确立了利用大数据实现弯道超车的发展战略,将大数据应用提升到全行发展的战略层面.2015年上半年,江苏银行完成了大数据平台选型和建设,选择发布版Hadoop进行底层数据存储加工.接着,进行内外部数据整合. 三个阶段的完成,意味着大数据基础设施建设工作已完成,如果把大数据建设工作看做一颗大树,前两个阶段完成意味着树干和树枝已长成,接下来的大数据应用像树枝上的树叶一样,热点频出,精彩纷呈.业务的创新带来大量新增的大数据分析需求,传统的数据库工具和报表工具遭遇瓶颈.

阳宇宸:大数据分析及挖掘

大数据引领我们走向数据智能化时代 [WHAT]大数据   定义 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 大数据时代的背景 20世纪90年代,数据仓库之父的Bill Inmon就经常提及Big Data. 2011年5月,在"云计算相遇大数据"为主题的EMC World 2011 会议中,EMC 抛出了Big Data概念. 半个世纪