Druid——Hadoop-based Batch Ingestion
来源:互联网 发布:微盘外汇交易平台源码 编辑:程序博客网 时间:2024/06/07 08:46
druid导入历史数据有两种方法:
1.import
直接向metadata中insert segments.
参考文档: http://druid.io/docs/0.9.2-rc2/operations/insert-segment-to-db.html
2.Hadoop-based Batch Ingestion
通过提交一个hadoop ingest task到overlord,可以直接从文件导入数据,也可以从datasource导入数据,还可以用作merge segments。
参考文档:
- http://druid.io/docs/0.9.2-rc2/ingestion/batch-ingestion.html
- http://druid.io/docs/0.9.2-rc2/ingestion/update-existing-data.html
- http://druid.io/docs/0.9.2-rc2/operations/other-hadoop.html
步骤:
1.根据需求写出hadoop task配置文件
(1) 从datasource导入数据
数据源m_006和m_001中数据完全一致,因此二者可以相互导入用作恢复历史数据。
eg: reindexing_006_to_001.json的具体配置如下,可将001中2016-11-20T00:00:00.000Z/2016-11-21T00:00:00.000Z内的数据导入006中。
{
"type":"index_hadoop",
"spec": {
"dataSchema": { // 与kafka indexing service 中的supervisor配置基本一致
"dataSource":"m_006",
"granularitySpec": {
"queryGranularity":"NONE",
"segmentGranularity":"HOUR", //导入到006的数据的segment生成粒度
"type":"uniform",
"intervals": [
"2016-11-20T00:00:00.000Z/2016-11-21T00:00:00.000Z" // 需导入数据的时间范围
]
},
"metricsSpec": [
{
"name":"count",
"type":"count"
}
],
"parser": {
"parseSpec": {
"dimensionsSpec": {
"dimensionExclusions": [
],
"dimensions": [
"db",
"table",
"area"
],
"spatialDimensions": [
]
},
"format":"json",
"timestampSpec": {
"column":"timestamp",
"format":"auto"
}
},
"type":"hadoopyString"
}
},
"ioConfig": {
"type":"hadoop",
"inputSpec": {
"type":"dataSource",
"ingestionSpec": {
"dataSource":"m_001", // 从哪个datasource导入数据
"intervals": [
"2016-11-20T00:00:00.000Z/2016-11-21T00:00:00.000Z"
]
},
"paths":"/druid/segments/m_001" //hdfs上的存放路径
}
},
"tuningConfig": {
"type":"hadoop",
"jobProperties": {
"mapreduce.jobtracker.staging.root.dir":"/druid/hadoop",
"yarn.app.mapreduce.am.staging-dir":"/druid/hadoop/hadoop-yarn/staging",
"mapreduce.map.memory.mb":"2048",
"mapreduce.reduce.memory.mb":"2048",
"mapreduce.job.classloader":"true" //很重要!必须加,让本task用druid中的hadoop-dependencies,而不是hadoop集群的配置
}
}
},
"hadoopDependencyCoordinates": [
"org.apache.hadoop:hadoop-client:2.7.2"
]
}
(2) merge segments
将同一数据源中的数据reindex,且增大新的segment生成粒度,例如把一天的数据reindex,新的segmentGranularity改为“DAY”,则可将改天的所有segment合并为一个segment。
"granularitySpec": {
"queryGranularity":"NONE",
"segmentGranularity":"DAY",
"type":"uniform",
"intervals": [
"2016-11-20T00:00:00.000Z/2016-11-21T00:00:00.000Z"
]
}
}
注意:不能对同一个datasource同一天的数据做多次merge,例如对006先merge 2016-11-20T00:00:00 ~ 2016-11-20T06:00:00,然后merge 2016-11-20T06:00:00 ~ 2016-11-20T12:00:00。
因为第一次merge时生成的segment时间间隔是2016-11-20T00:00:00.000Z/2016-11-21T00:00:00.000Z(记为seg1),第二次merge时取到的数据是seg1,在seg1中没有任何06:00:00 ~ 12:00:00的数据。所以建议此种merge方法只用作把一整天的数据合并。
2.把该task提交到overlord上
eg: curl http://100.0.0.1:8090/druid/indexer/v1/task -H "Content-Type:application/json" -X POST --data @reindexing_006_to_001.json
注意事项
1. druid内部与hadoop交互有两种
1)Use HDFS for deep storage using the druid-hdfs-storage extension,用于存储,即实时数据写入HDFS,以及从HDFS读取数据到historical用于查询,路径“../druid/extensions/druid-hdfs-storage/*”
2)Batch-load data from Hadoop using Map/Reduce jobs,用于本文所写的Hadoop batch ingest,路径“../druid/hadoop-dependencies/*”。
当此处hadoop版本与运行MR jobs的hadoop集群版本不同时会出错,exitCode = 1(MR job启动失败)、exitCode = 143(MR job fail)。
解决方法:将druid源码中pom.xml中的<hadoop.compile.version>2.7.2</hadoop.compile.version>修改为与集群版本相同,重新编译和部署即可。
2. 当前版本的druid coordinator不会自动删除historical上的旧版本数据,而上述的reindex方法不会自动修改metadata中已存在的segment,所以多次reindex / import / merge 都需要手动设置不需要或旧版本的segment used = 1。
- Druid——Hadoop-based Batch Ingestion
- Hadoop YARN新特性—label based scheduling
- Hadoop YARN新特性—label based scheduling
- Hadoop YARN新特性—label based scheduling
- trick—Batch Normalization
- Item-Based Recommendations with Hadoop
- DRP——JDBC中的Batch
- cs231n:assignment2——Q2: Batch Normalization
- 深度学习——Batch Normalization
- 论文笔记——Batch Normalization
- 深度学习——Batch Normalization
- Batch Normalization论文翻译——中文版
- 【DL--06】深度学习基本概念—batch
- tensorflow使用BN—Batch Normalization
- 【Druid】Druid连接池(二)——配置监控界面
- 【Druid】Druid连接池(三)——配置监控界面设置登录界面
- Moving Hadoop Beyond Batch with Apache YARN
- 数据库执行提交方式——batch, 非batch的性能比较
- TEC1303.Form个性化技术总结 - 第一部分 Form个性化技术讲解
- java类初始化顺序的影响
- JS基础——DOM树结构
- jQuery 简介
- CS231n作业笔记2.2:多层神经网络的实现
- Druid——Hadoop-based Batch Ingestion
- jQuery 安装
- ubantu下环境搭建lamp环境
- ubuntu安装ssh
- jQuery 语法
- ubuntu Lnmp 环境的搭建
- matlab绘图plot循环中不同颜色
- jQuery 选择器
- (8)DTD中的元素声明