`
yangyangmyself
  • 浏览: 233743 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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端口监听。

 

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
tar -xzf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
cp conf/zoo_sample.cfg conf/zoo.cfg
./bin/zkServer.sh start

     zookeeper 安装验证

cd zookeeper-3.4.6 // 切换至Zookeeper根目录
bin/zkCli.sh       // 启动Zookeeper客户端
ls /               // 查看根节点
 
4、Druid 安装
curl -O http://static.druid.io/artifacts/releases/druid-0.9.1.1-bin.tar.gz
tar -xzf druid-0.9.1.1-bin.tar.gz
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 `cat conf-quickstart/druid/historical/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" io.druid.cli.Main server historical
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
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
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
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环境下加载数据文件,执行方式如下:

 

{"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"}
{
  "type" : "index_hadoop",
  "spec" : {
    "ioConfig" : {
      "type" : "hadoop",
      "inputSpec" : {
        "type" : "static",
        "paths" : "/opt/data/pass.json" /**指定数据*/
      }
    },
    "dataSchema" : {
      "dataSource" : "kakou",  /**数据源名,类似表名*/
      "granularitySpec" : {
        "type" : "uniform",
        "segmentGranularity" : "day", /**数据分片粒度,按天*/
        "queryGranularity" : "none",
        "intervals" : ["2016-07-04/2016-07-05"] /**时间跨度*/
      },
      "parser" : {
        "type" : "string",
        "parseSpec" : {
          "format" : "json",  /**数据文件类型*/
          "dimensionsSpec" : {
            "dimensions" : [  /**数据列*/
			  "license",
			  "carLoc",
              "licenseType",
			  "hpys",
			  "cllx",
			  "clpp",
              "gateId",
			  "fxlx",
              "passTime",
			  "carPassDate",
			  "carPassTime",
			  "province",
			  "city",
              "region"
            ]
          },
          "timestampSpec" : { 
            "format" : "auto",
            "column" : "passTime"  /**指定时间分段*/
          }
        }
      },
      "metricsSpec" : [   
        {
          "name" : "count",
          "type" : "count"  /**按count聚合*/
        }
      ]
    },
    "tuningConfig" : {
      "type" : "hadoop",
      "partitionsSpec" : {
        "type" : "hashed",
        "targetPartitionSize" : 5000000
      },
	  "maxRowsInMemory":500000,
      "jobProperties" : {}
    }
  }
}
 
将上述Json示例数据保存为pass.json的文件,接下来定义一个数据配置文件pass-index.json,在pass-index.json中引用数据pass.json、指定数据源名(类似表名)、数据维度列、聚合粒度、时间间隔等。

 

/**执行如下命令进行导入操作*/
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-8。
2. 时间序列值:Druid按时间进序列值进行数据分片,按时间字段进行数据分片的字段值需要标准化(UTC)处理。
3. 任务挂起或等待:Druid将任务提交给Hadoop中的Map-Reduce执行,导入时任务可会因为某种原因导致任务挂起或停止。

 

   中文乱码解决办法:

 

try{
	OutputStream out = new FileOutputStream(new File("E:\\study\\druid\\rpass_20150801.json"),true);
	Writer write = new OutputStreamWriter(out,"utf-8");
	write.write(json.toString()+"\n");
	write.flush();
	write.close();
	out.close();
}catch(){
	e.printStackTrace();
}

   

    时间序列值UTC标准化:

 

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

 

 

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

 

/**taskId可以从控制台获取或在执行Curl导入命令时返回值*/
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
  • 大小: 108.3 KB
  • 大小: 64.2 KB
分享到:
评论
2 楼 dtyu100 2018-04-25  
反手就是一个赞,这相当于是官网druid.io的中文版本,很厉害!
1 楼 sqy 2018-04-12  
2018-04-12T01:30:27,527 ERROR [main] io.druid.curator.discovery.ServerDiscoverySelector - No server instance found for [druid/coordinator]
2018-04-12T01:30:27,527 WARN [main] io.druid.java.util.common.RetryUtils - Failed on try 2, retrying in 1,513ms.
io.druid.java.util.common.IOE: No known server



为什么我开启druid的5个程序时,老是报这个错

相关推荐

    大数据技术与应用基础-教学大纲 (2).pdf

    7. 数据仓库工具Hive:理解Hive在大数据分析中的角色,学习HQL语句,使用Hive进行数据查询和转换。 8. 开源集群计算环境Spark:了解Spark的弹性分布式数据集(RDD)概念,学习Spark编程模型,掌握Spark Shell和Spark ...

    大数据技术与应用基础_教学大纲.docx

    【大数据技术与应用基础】是一门...总体而言,这门课程全面覆盖了大数据技术的多个重要方面,通过理论与实践相结合的教学方式,旨在培养学生具备大数据分析和处理的实际能力,为他们在未来的职场竞争中打下坚实的基础。

    大数据技术与应用基础-教学大纲.docx

    1. 大数据概述:讲解大数据的起源、发展历程,明确大数据的三大特征(大量、快速、多样性),介绍不同类型的数据系统(如批处理、流处理)和计算模式(如MapReduce、Spark),并讨论它们之间的关系。 2. 数据获取:...

    大数据技术与应用基础-教学大纲.pdf

    大数据技术与应用基础教学大纲 本课程大纲旨在帮助学生掌握大数据技术的基本概念、理论和实践操作,了解大数据发展的背景和应用前景,掌握 Scrapy、...* 了解并基本掌握怎样利用所学的工具对目标实例进行数据分析

    大数据技术与应用基础教学大纲.docx

    11. 事件流OLAP之Druid:理解Druid在实时分析中的作用,学会安装Druid单机环境,进行数据加载和查询。 12. 事件数据流引擎Flink:学习Flink的基本架构,能配置Flink环境,实现简单的数据流处理任务。 13. 分布式...

    大数据技术与应用基础教学大纲优质资料.doc

    10. 事件流OLAP之Druid:理解Druid的用途,安装Druid单机环境,进行流数据加载和查询。 11. 事件数据流引擎Flink:学习Flink的基本概念,了解Flink架构,进行基本的Flink应用。 12. Elasticsearch基础:掌握...

    大数据技术与应用基础_教学大纲.pdf

    7. **数据仓库工具Hive**:理解Hive在大数据分析中的作用,熟悉Hive接口,能够使用Hive解决实际的数据仓库问题。 8. **Spark和RDD**:了解Spark的内存计算模型和RDD,掌握Spark的基本API,了解Spark的完整工作流程...

    大数据技术与应用基础课程学习大纲.doc.docx

    对于数据仓库工具Hive,课程要求学生理解其在大数据分析中的角色,熟悉Hive接口的运用,能利用Hive进行数据处理。 Spark作为快速、通用的大数据处理框架,课程涵盖了Spark的基本思想和RDD(弹性分布式数据集)的...

    大数据技术与应用基础 教学大纲.pdf

    本课程《大数据技术与应用基础》主要关注大数据技术的理论基础和实践应用,旨在培养学生的数据分析能力和技术实施能力。课程内容涵盖了大数据的发展背景、数据获取、Hadoop生态系统、分布式数据库、数据仓库工具、...

    大数据技术及应用基础_教学大纲.pdf

    10. **Druid**:Druid是一个用于实时OLAP的数据存储系统,学生将学习Druid的架构、应用场景,以及如何安装和使用Druid处理流数据。 11. **Flink**:Flink是另一种流行的流处理引擎,具备低延迟和高容错性。课程将...

    大数据技术与应用基础教学大纲.pdf

    【大数据技术与应用基础】...总的来说,这门课程旨在让学生具备大数据全栈开发能力,从数据采集到数据分析,再到实时处理,涵盖了大数据生态中的多个关键组件,为学生进入大数据领域提供了坚实的理论基础和实践经验。

    大数据技术及应用基础_教学大纲.docx

    《大数据技术及应用基础》是一门旨在教授学生大数据技术基础和应用的课程,适合初学者,旨在培养学生的实践操作能力和对大数据分析的理解。课程内容涵盖了大数据的产生、发展、特征和技术层面,以及一系列大数据处理...

    大数据技术和应用基础-教学大纲.docx

    课程旨在培养学生的数据分析和挖掘能力,使其能够理解和应用大数据技术解决实际问题。 一、课程内容概览 1. 大数据概述:讲解大数据的起源与发展,明确其特征、数据类型以及大数据技术的层次结构,包括计算模式和...

    大数据技术与应用基础 教学大纲.docx

    同时,课程还会涉及数据仓库工具Hive,让学生理解Hive在大数据分析中的角色,以及如何利用Hive接口解决实际问题。 Spark和RDD的概念也是课程的重要内容,学生需要掌握Spark的基本思想,熟悉Spark环境和API的使用,...

    (完整)大数据技术与应用基础-教学大纲.docx

    课程设计紧跟国家大数据发展战略,强调实践操作和理论结合,帮助学生掌握大数据分析的关键技能。 课程的教学大纲涵盖了以下几个核心知识点: 1. **大数据概述**:探讨大数据的起源、发展,以及大数据的特性(如高...

    大数据技术与应用基础课程教学大纲.doc.pdf

    数据仓库工具Hive被引入,以帮助学生理解如何利用Hive进行数据仓库构建和数据分析。Spark作为高效的数据处理框架,课程将教授Spark的基本思想、环境配置和API使用,使学生能够运用Spark解决实际问题。 对于实时处理...

    大数据技术和应用基础_教学大纲.doc

    课程设计注重理论与实践相结合,通过实例教学使学生掌握大数据分析的操作技能。 课程【教学要求】明确指出,学生需要了解大数据的基本概念和技术层面,包括Scrapy爬虫的使用、Hadoop的部署、HDFS的概念和操作、...

Global site tag (gtag.js) - Google Analytics