Druid 大数据分析之快速应用(单机模式)
2016-08-30 08:57
477 查看
一、概述
本节快速安装基于单机服务器,很多配置可以默认不需要修改,数据存储在操作系统级别的磁盘。推出快速安装的目的,便于了解并指导基于Druid进行大数据分析的开发流程。本节主要讲Druid的安装、实例数据加载、查询及使用问题解决。
二、安装要求
1. Java 7 及以上
2. Linux, Mac OS X, or other Unix-like OS (Windows不支持)
3. VMware
4. 2CPU ++; 内存2G ++
三、Zookeeper 安装
本次采单机版安装,如果采用分布式安装,则需要修改Druid相应配置,反之不需要。 Zookeeper默认启用2181端口监听。
Linux代码
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 安装验证
Linux和zookeeper命令代码
cd zookeeper-3.4.6 // 切换至Zookeeper根目录
bin/zkCli.sh // 启动Zookeeper客户端
ls / // 查看根节点
四、Druid 安装
Java代码
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 相关目录说明
许可证文件。
快速启动脚本。
集群安装配置(包括Hadoop)。
快速启动相关配置。
Druid扩展。
Druid hadoop依赖。
Druid核心软件包。
快速启动示例文件及数据。
五、启动 Druid 准备
启动Druid相关服务之前,我们需要做两件事:
1. 启动Zookeeper
2. 切换到Druid根目录,执行 bin/init
六、启动 Druid 相关服务
启动5个Druid进程在不同远程终端窗口,因为是单机模式,所有进程在同一服务器上;在大的分布式集群中,很多Druid进程可以在同一服务器,我们需要启动的5个Druid进程:Historical、Broker、coordinator、overlord、middleManager。overlord与middleManager对应Indexer节点,节点相关介绍请查看《http://yangyangmyself.iteye.com/blog/2320502》,后续将会详细介绍节点工作机制。
切换至Druid安装目录,在不同远程终端窗口依次执行以命令
Java代码
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/ 查看任完成进度、数据分片情况、索引创建等
七、Druid 加文件数据
以上Druid相关服务启动后,我们需要加载相关业务数据到Druid,Druid根据数据加载的配置文件,将我们的原始业务数据做相应的预处理后进行存储,以便后续查询统计。数据加载有两种方式:一是实时加载;二、加载批文件,本节讲如何加载Json批数据文件。
1. 中文乱码:Json规范这里不再阐述,讲一下生成Json数据文件注意的情况,目前发现Json中含有中文情况下,将Json数据加载到Druid时出现乱码。生成Json指文件编码为UTF-8。
2. 时间序列值:Druid按时间进序列值进行数据分片,按时间字段进行数据分片的字段值需要标准化(UTC)处理。
编码代码
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();
}
Json示例数据代码
{"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"}
时间序列标准化代码
/**引用joda类库*/
DateTimeFormatter dtFormatter=DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
String result = dtFormatter.parseDateTime('2016-08-29 22:58:20').withZone(DateTimeZone.UTC).toString(); /**输出结果 2016-08-29T22:58:20.000Z*/
将上述Json示例数据保存为pass.json的文件,接下来定义一个数据配置文件pass-index.json,在pass-index.json中引用数据pass.json、指定数据源名(类似表名)、数据维度列、聚合粒度、时间间隔等。
Java代码
{
"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" : {}
}
}
}
Java代码
/**执行如下命令进行导入操作*/
curl -X 'POST' -H 'Content-Type:application/json' -d @/opt/data/pass-index.json 192.168.121.200:8090/druid/indexer/v1/task
执行上述命后,Druid将任务提交给Hadoop中的Map-Reduce执行,导入时任务可会因为某种原因导致任务挂起或停止,可以通过下述命将挂起任务删除,重新执行导入。
Java代码
/**taskId可以从控制台获取或在执行Curl导入命令时返回值*/
http://<OVERLORD_IP>:<port>/druid/indexer/v1/task/{taskId}/shutdown
本节快速安装基于单机服务器,很多配置可以默认不需要修改,数据存储在操作系统级别的磁盘。推出快速安装的目的,便于了解并指导基于Druid进行大数据分析的开发流程。本节主要讲Druid的安装、实例数据加载、查询及使用问题解决。
二、安装要求
1. Java 7 及以上
2. Linux, Mac OS X, or other Unix-like OS (Windows不支持)
3. VMware
4. 2CPU ++; 内存2G ++
三、Zookeeper 安装
本次采单机版安装,如果采用分布式安装,则需要修改Druid相应配置,反之不需要。 Zookeeper默认启用2181端口监听。
Linux代码
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 安装验证
Linux和zookeeper命令代码
cd zookeeper-3.4.6 // 切换至Zookeeper根目录
bin/zkCli.sh // 启动Zookeeper客户端
ls / // 查看根节点
四、Druid 安装
Java代码
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/*-
快速启动示例文件及数据。
五、启动 Druid 准备
启动Druid相关服务之前,我们需要做两件事:
1. 启动Zookeeper
2. 切换到Druid根目录,执行 bin/init
六、启动 Druid 相关服务
启动5个Druid进程在不同远程终端窗口,因为是单机模式,所有进程在同一服务器上;在大的分布式集群中,很多Druid进程可以在同一服务器,我们需要启动的5个Druid进程:Historical、Broker、coordinator、overlord、middleManager。overlord与middleManager对应Indexer节点,节点相关介绍请查看《http://yangyangmyself.iteye.com/blog/2320502》,后续将会详细介绍节点工作机制。
切换至Druid安装目录,在不同远程终端窗口依次执行以命令
Java代码
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/ 查看任完成进度、数据分片情况、索引创建等
七、Druid 加文件数据
以上Druid相关服务启动后,我们需要加载相关业务数据到Druid,Druid根据数据加载的配置文件,将我们的原始业务数据做相应的预处理后进行存储,以便后续查询统计。数据加载有两种方式:一是实时加载;二、加载批文件,本节讲如何加载Json批数据文件。
1. 中文乱码:Json规范这里不再阐述,讲一下生成Json数据文件注意的情况,目前发现Json中含有中文情况下,将Json数据加载到Druid时出现乱码。生成Json指文件编码为UTF-8。
2. 时间序列值:Druid按时间进序列值进行数据分片,按时间字段进行数据分片的字段值需要标准化(UTC)处理。
编码代码
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();
}
Json示例数据代码
{"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"}
时间序列标准化代码
/**引用joda类库*/
DateTimeFormatter dtFormatter=DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
String result = dtFormatter.parseDateTime('2016-08-29 22:58:20').withZone(DateTimeZone.UTC).toString(); /**输出结果 2016-08-29T22:58:20.000Z*/
将上述Json示例数据保存为pass.json的文件,接下来定义一个数据配置文件pass-index.json,在pass-index.json中引用数据pass.json、指定数据源名(类似表名)、数据维度列、聚合粒度、时间间隔等。
Java代码
{
"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" : {}
}
}
}
Java代码
/**执行如下命令进行导入操作*/
curl -X 'POST' -H 'Content-Type:application/json' -d @/opt/data/pass-index.json 192.168.121.200:8090/druid/indexer/v1/task
执行上述命后,Druid将任务提交给Hadoop中的Map-Reduce执行,导入时任务可会因为某种原因导致任务挂起或停止,可以通过下述命将挂起任务删除,重新执行导入。
Java代码
/**taskId可以从控制台获取或在执行Curl导入命令时返回值*/
http://<OVERLORD_IP>:<port>/druid/indexer/v1/task/{taskId}/shutdown
相关文章推荐
- 快速了解Druid -- 实时大数据分析软件
- 手机二维码业务应用体系分类和商业模式分析
- MS之应用模式分析
- 基于php设计模式中单例模式的应用分析
- BI系统的应用组织思路与数据分析模式
- BI系统的应用组织思路与数据分析模式
- 中小规模企业应用软件的渠道模式分析-1
- R语言和Hadoop系统架构在大数据分析中的应用
- Symbian OS:MVC 设计模式在 SymbianOS 应用程序中的应用分析
- IPSCE快速模式分析
- php设计模式之单例、多例设计模式的应用分析
- 传智播客 JDBC基础之工厂模式的应用与事务分析
- WEB应用 信息管理系统 数据分析展示系统 OA办公工作流 快速构建与开发平台
- 分析模式(责任模式在组织机构中的应用)2011-7-12
- 方法性能分析器--装饰者模式应用
- ERP应用模式分析
- 快速原型开发模式在实际开发过程中的应用
- 库快速识别和鉴定技术在PRX文件分析中的应用
- PHP CLI模式下的多进程应用分析
- R语言和Hadoop系统架构在大数据分析中的应用