Druid学习笔记(4)数据摄入总结

druid数据摄入 数据摄入 Druid的数据摄入有两种方式,一种是流式数据源,一种是静态数据源 数据源种类 静态数据源:数据已经生产完毕,不会有新数据产生的数据源,静态数据通常表现为离线数据,静态服务可以通过实时节点摄入,也可以通过索引服务启动一个任务摄入。 流式数据源:指的是持续不断地生产数据的数据源。如日志,消息队列等。对于流式数据的摄取,Druid提供了两种方法,分别是Push(推送)和Pull(拉取... 阅读详情

Druid学习笔记(4)数据摄入总结

2017年12月13日 18:09:25

阅读数:1907

1. 概述

Druid的数据摄入主要包括两大类: 
1. 实时输入摄入:包括Pull,Push两种 
- Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源。 
- Push:需要启动Tranquility或是Kafka索引服务。通过HTTP调用的方式进行数据摄入 
2. 离线数据摄入:可以通过Realtime节点摄入,也可以通过索引节点启动任务摄入

本文演示环节主要基于上一章部署的集群来进行

2. 实时数据摄入

2.1 Pull

由于Realtime Node 没有提供高可用,可伸缩等特性,对于比较重要的场景推荐使用 Tranquility Server or 或是Tranquility Kafka索引服务

2.2 Push

Indexing service在前文已经介绍过了,Tranquility 是一个Scala库,它通过索引服务实现数据实时的摄入。它之所以存在,是因为Indexing service API属于低层面的。Tranquility是对索引服务进行抽象封装, 对使用者屏蔽了 创建任务,处理分区、复制、服务发现和shema rollover等环节。

通过Tranquility 的数据摄入,可以分为两种方式

  • Tranquility Server:发送方可以通过Tranquility Server 提供的HTTP接口,向Druid发送数据。
  • Tranquility Kafka:发送发可以先将数据发送到Kafka,Tranquility Kafka会根据配置从Kafka获取数据,并写到Druid中。

2.2.1 Tranquility Server配置

配置流程如下 
1. 开启Tranquility Server,在数据节点上编辑conf/supervise/data-with-query.conf 文件,将Tranquility Server注释放开

# Uncomment to use Tranquility Server                                                                                                                                                          
!p95 tranquility-server bin/tranquility server -configFile conf/tranquility/server.json 
  • 1
  • 2
  1. 拷贝quick里面的server.json
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# cp conf-quickstart/tranquility/server.json conf/tranquility/
  • 1
  1. 启动服务
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# bin/supervise -c conf/supervise/data-with-query.conf 
  • 1

启动信息如下:

[Fri Dec  8 15:41:39 2017] Running command[tranquility-server], logging to[/root/imply-2.3.8/var/sv/tranquility-server.log]: bin/tranquility server -configFile conf/tranquility/server.json
  • 1
  • 2
  1. 发送数据
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/tutorial-tranquility-server
  • 1

如果成功会打印出,表名产生了25条数据到druid里

{"result":{"received":25,"sent":25}}
  • 1
  1. 查询数据
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8/bin#./plyql -h localhost -p 8082 -q "SELECT server, SUM("count") AS "events", COUNT(*) AS "rows" FROM "tutorial-tranquility-server" GROUP BY server;"

┌──────────────────┬────────┬──────┐
│ server           │ events │ rows │
├──────────────────┼────────┼──────┤
│ www1.example.com │ 1      │ 1    │
│ www2.example.com │ 5      │ 4    │
│ www3.example.com │ 7      │ 2    │
│ www4.example.com │ 5      │ 2    │
│ www5.example.com │ 7      │ 7    │
└──────────────────┴────────┴──────┘
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 重启Tranquility Server:bin/service –restart tranquility-server

2.2.2 Tranquility Kafka配置

配置流程如下 
1. 开启Tranquility Kafka,在数据节点上编辑conf/supervise/data-with-query.conf 文件,将Tranquility Kafka注释放开

# Uncomment to use Tranquility Server                                                                                                                                                          
!p95 tranquility-server bin/tranquility server -configFile conf/tranquility/server.json 
  • 1
  • 2
  1. 拷贝quick里面的kafka.json
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# cp conf-quickstart/tranquility/kafka.json conf/tranquility/
  • 1

详细配置可参考:http://druid.io/docs/0.10.1/tutorials/tutorial-kafka.html

  1. 在kafa集群中创建topic
root@native-lufanfeng-3-5-24-139:/opt/PaaS/Talas/lib/Kafka/bin#./kafka-topics.sh --create --zookeeper native-lufanfeng-2-5-24-138:2181,native-lufanfeng-3-5-24-139:2181,native-lufanfeng-4-5-24-140:2181 --replication-factor 1 --partitions 1 --topic tutorial-tranquility-kafka
  • 1
  • 2
  1. 启动服务
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# bin/supervise -c conf/supervise/data-with-query.conf 
  • 1

启动信息如下:

[Tue Dec 12 10:43:28 2017] Running command[tranquility-kafka], logging to[/root/imply-2.3.8/var/sv/tranquility-kafka.log]: bin/tranquility kafka -configFile conf/tranquility/kafka.json
  • 1
  • 2
  1. 使用kafka自带的工具发送数据
root@native-lufanfeng-3-5-24-139:/opt/PaaS/Talas/lib/Kafka/bin# ./kafka-console-producer.sh --broker-list native-lufanfeng-2-5-24-138:9092,native-lufanfeng-3-5-24-139:9092,native-lufanfeng-4-5-24-140:9092 --topic tutorial-tranquility-kafka
{"unit": "milliseconds", "http_method": "GET", "value": 107, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/list", "metricType": "request/latency", "server": "www1.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 19, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/list", "metricType": "request/latency", "server": "www1.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 135, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/list", "metricType": "request/latency", "server": "www5.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 103, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/list", "metricType": "request/latency", "server": "www4.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 93, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/", "metricType": "request/latency", "server": "www3.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 89, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/list", "metricType": "request/latency", "server": "www2.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 7, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/", "metricType": "request/latency", "server": "www5.example.com"}
{"unit": "milliseconds", "http_method": "GET", "value": 65, "timestamp": "2017-12-12T05:55:59Z", "http_code": "200", "page": "/", "metricType": "request/latency", "server": "www3.example.com"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

此时观察kafka-server.log的日志会发现类似于如下输出

2017-12-12 06:21:37,241 [KafkaConsumer-CommitThread] INFO  c.m.tranquility.kafka.KafkaConsumer - Flushed {tutorial-tranquility-kafka={receivedCount=0, sentCount=8,droppedCount=8, unparseableCount=0}} pending messages in 0ms and committed offsets in 0ms.                                                             
  • 1

在datasource中,windowPeriod设置成了P10M,timestamp不在当前时间10M内的数据都会被过滤,由于上面的数据的timestamp和执行时间相差了大概26分钟左右,所以都会被drop调,为了达到演示效果,可以对bin/generate-example-metrics-main 的脚本进行调整。代码如下:


# Copyright 2017 Imply Data, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import json
import random
import sys
from datetime import datetime
from kafka import KafkaProducer
from kafka import KafkaClient

hosts="native-lufanfeng-2-5-24-138:9092,native-lufanfeng-3-5-24-139:9092,native-lufanfeng-4-5-24-140:9092"
# hosts="10.48.253.104:9092"
topic='tutorial-tranquility-kafka'

class KafkaSender():

    def __init__(self):
        self.client=KafkaClient(hosts)
        self.producer=KafkaProducer(bootstrap_servers=hosts)
        self.client.ensure_topic_exists(topic)
    def send_messages(self,msg):
        self.producer.send(topic,msg)
        self.producer.r

def main():
  parser = argparse.ArgumentParser(description='Generate example page request latency metrics.')
  parser.add_argument('--count', '-c', type=int, default=25, help='Number of events to generate (negative for unlimited)')
  args = parser.parse_args()

  count = 0
  sender = KafkaSender()
  while args.count < 0 or count < args.count:
    timestamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")

    r = random.randint(1, 4)
    if r == 1 or r == 2:
      page = '/'
    elif r == 3:
      page = '/list'
    else:
      page = '/get/' + str(random.randint(1, 99))

    server = 'www' + str(random.randint(1, 5)) + '.example.com'

    latency = max(1, random.gauss(80, 40))

    record = json.dumps({
      'timestamp': timestamp,
      'metricType': 'request/latency',
      'value': int(latency),

      # Additional dimensions
      'page': page,
      'server': server,
      'http_method': 'GET',
      'http_code': '200',
      'unit': 'milliseconds'
    })
    sender.send_messages(record)
    print 'Send:%s Successful!' % record
    count += 1

try:
  main()
except KeyboardInterrupt:
  sys.exit(1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

3. 离线数据摄入

3.1 静态文件摄入

使用自带的摄入机制,可以在数据节点摄入本地文件,方法如下:

bin/post-index-task --file quickstart/wikiticker-index.json
  • 1

wikiticker-index.json 文件中既包括datasource的定义,也包括数据文件位置的配置

3.2 HDFS文件摄入

配置过程可参考:http://druid.io/docs/0.10.1/ingestion/batch-ingestion.html

4. 配置参考

通用配置:https://github.com/druid-io/tranquility/blob/master/docs/configuration.md 
数据摄入通用配置:http://druid.io/docs/latest/ingestion/index.html 
Tranquility Kafka:https://github.com/druid-io/tranquility/blob/master/docs/kafka.md

5. 其他注意事项

5.1 数据分片

Druid的分片基本都是通过配置tunningConfig来配置的,实时,批量配置的方式会存在一定的差异

实时加载包括下面两种类型 
- Linear分片: 
- 添加新节点时,原节点的配置不需要调整 
- 当存在分片时数据也能被查询 
- Numbered分片 
- 所有分片存在时,才能查询 
- 需要制定分片总数

本地文件加载包括下面两种类型 
- 按照Partition大小分片 
- 设置总的分片数

Hadoop文件加载包括下面两种类型 
- 哈希分片 
- 范围分片

5.2 高基数维度优化

对于需要统计维度基数的需求,如果某个维度的基数很大,可能会存在下列问题。维度基数统计主要包括下面两种类型 
- Cardinality: 基于HyperLogLog算法,只在查询阶段做了优化,不能减少存储容量,基数大时,效率可能会有问题 
- HyperUnique: 在摄入阶段进行优化,对于不需要对高基数维度进行过滤,分组的业务场景可以使用该类型

Centos7服务器安装Apache Druid,以及文件数据摄入、kafka实时数据流摄入 1、Apache Druid简介 Apache Druid是一个实时分析型数据库,旨在对大型数据集进行快速的查询分析("OLAP"查询)。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景,同时,Druid也通常被用来助力分析型应用的图形化界面,或者当做需要快速聚合的高并发后端API,Druid最适合应用于面向事件类型的数据。 Druid通常应用于以下场景: 点击流分析(Web端和移动端) 网络监测分析(网络性能监控) 服务指标存储 供应链分析(制造类指标) 应用性能指标分析 阅读详情

相关推荐

Druid学习笔记(2)Druid架构剖析

1. 前言Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标。例如对于普通的RDBMS,如果想要获取更快的查询速度,就会因为创建索引而牺牲掉写入的速度,如果想要更快的写入速度,则索引的创建就会受到限制。而Druid却可以完美的对两者进行结合,本文将对Druid如何实现这种结合做一个简单的介绍。2.

不积跬步,无以至千里;不积小流,无以成江海! 8044

Druid.io系列(九):数据摄入

时间:2018-06-11 21:57:58      阅读:36      评论:0      收藏:0      [点我收藏+]标签:file   pre   ash   ons   replica   topic   datetime   数据源   query   1. 概述Druid的数据摄入主要包括两大类: 1. 实时输入摄入:包括Pull,Push两种 - Pull:需要启动一个Re...

大JAVA解决方案 1460

2、Druid的入门示例(使用三种不同的方式摄入数据和提交任务)

上述所有步骤就是了为得到该json,与上面通过postman执行的json是一样的(没有增加维度指标等参数,还是有些不同的)本文分为三部分,即简单示例1-通过命令和postman操作、示例2-通过druid操作和示例3-通过命令提交任务。使用Druid 分析(查询) 2022年5月8日 按照商品分类、商品区域的产品订单总额。本文主要介绍了Druid一个入门示例,使用三种不同的方式摄入数据和提交任务。以上,简单的介绍了druid的入门示例,即三种不同的方式摄入数据和提交任务。选择loca disk按钮。

alanchanchn的专栏 8万+

Druid 数据摄入

1. 概述     Druid的数据摄入主要包括两大类,流式数据摄入和静态数据摄入 1.1 对于流式数据的摄入,Druid提供了两种方式,分别是push和pull,     采用pull方式摄取数据,需要启动一个实时节点,通过不同的firehose摄入不同的流式数据,firehose可以被认为Druid接入不同数据源的适配器。例如从kafka摄入数据,就用kafkaFirehose,从Rab...

程序员学习圈 1128

TranquilityServerAPI:初始服务器运行的主要宁静后端api

宁静服务器API #格式化 对于所有HTTP Parmas,变量名称必须为大写,以便req.params.MemberID /guild/:MemberID/:GuildID/:GuildInvite #发布星期一 允许多个数据流的脚本 let template =`[removed] pm.getData(函数(错误,数据){var data_t = {标签:Object.entries(data.response.times).map((item)=> item [1]),数据集:[],} ; data.response.all.forEach(e => {data_t.datasets.push(e);}); var ctx = document.getElementById('myChart')。getContext('2d'); var chart

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3225

快速学习-Druid数据摄入之Tranquility

第7章 Druid数据摄入之Tranquility 在上面的内容中,我们学习了如何通过索引服务器摄取数据,然而索引服务器的API太过底层,运用起来比较麻烦。Tranquility对索引服务的API进行了封装,可以方便创建任务,处理分片,复制、服务器发现以及无缝的数据结构调整。 向Druid发送数据,需将Tranquility库依赖到程序中。 地址:https://github.com/druid-...

逍遥云恋 1125

保姆级教程:用STM32CubeMX给STM32F407配置RTC秒中断,并解决掉电时间丢失问题

本文详细介绍了如何使用STM32CubeMX为STM32F407配置RTC秒中断,并解决掉电时间丢失问题。通过硬件原理与软件配置的双视角解析,帮助开发者实现精确计时与时间持久化,适用于物联网设备和工业控制器等场景。

weixin_42519733的博客 137

Druid.io——概述

概述 1、Druid是什么? Druid是一个分布式的支持实时分析的数据存储系统(Data Store)。在处理数据的规模、数据处理的实时性方面,比传统的OLAP系统有了显著的性能改进,而且拥抱主流的开源生态,包括Hadoop等。Druid通常作为强大的分析交互系统的后端存储组件...

choumo7895的博客 262

一窥Memory测试算法及自我修复机制

摘要 为了满足新一代设备的需求,Memory的大小每三年就会增加4倍。深亚微米设备包含大量面积更小、访问速度更快的Memory。针对此类设计制定自动测试策略可以减少ATE(自动测试设备)的时间和成本。 内存故障的行为与经典的“Stuck-At”故障不同。因此,Memory的故障模型(由于其阵列结构)与标准逻辑的设计也是不同的。Memory测试除了进行故障检测和定位,还可以实现用冗余单元对...

路科验证 2万+

KMS服务器一键部署与激活实战指南

本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。

weixin_29305313的博客 462

【Druid】(六)Apache Druid 数据摄入

文章目录一、数据格式二、配置2.1 DataSchema2.1.1 parser2.1.2 metricsSpec2.1.3 GranularitySpec2.2 ioConfig2.3 tuningConfig三、从 Hadoop 加载数据3.1 加载数据3.2 查询数据四、从 kafka 加载数据4.1 准备kafka4.2 启动索引服务4.3 加载历史数据4.4 加载实时数据4.5 加载自定义kafka 主题数据 一、数据格式 摄入规范化数据:JSON、CSV、TSV 自定义格式 其他格式 二、

云祁QI 1772

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 750

快速学习-Druid数据摄入

第6章 数据摄入 6.1 数据格式 摄入规范化数据:JSON、CSV、TSV 自定义格式 其他格式 6.2 配置 主要是摄入的规则ingestion Spec 摄入规则主要包含3个部分 { "dataSchema" : {...}, "ioConfig" : {...}, "tuningConfig" : {...} } 6.2.1 DataSchema 1、parser (...

逍遥云恋 740

R语言做一个 GM (1,1)灰色预测模型

累加生成是GM(1,1)模型的另一个重要步骤,它通过构造累加生成序列,把非线性非平稳时间序列转化为线性平稳时间序列。GM(1,1)是一种基于灰色系统理论的预测模型,通常用于中小样本的非线性、非平稳时间序列数据分析。灰色预测模型的核心是灰度处理,将原始时间序列转化为灰色时间序列。这里使用R语言中的diff函数对时间序列进行一次差分,然后对结果取累加和得到灰度序列。以上是GM(1,1)灰色预测模型在R语言中的实现步骤。需要注意的是,GM(1,1)模型适用于中小样本的时间序列预测,对于长期预测效果可能较差。

Mrrunsen的博客 3842

微观交通流仿真软件:SUMO (Simulation of Urban MObility)_(8).仿真场景创建与编辑

总结文件()包含了仿真过程中的总体统计信息,如车辆生成数、平均速度等。加载总结文件使用Python的提取关键信息通过以上步骤,可以使用SUMO及其相关工具和库创建和编辑交通仿真场景。无论是手动创建、使用工具转换现有数据,还是通过Python脚本自动生成,SUMO都提供了丰富的功能来满足不同需求。此外,Traci库允许在仿真过程中动态调整交通场景,从而实现更精细的控制和优化。最后,通过对输出文件的分析,可以评估仿真结果并进行进一步的改进。

kkchenjj的博客 1273

Druid介绍及入门

1.什么是Druid? Druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。 Druid采用的架构: shared-nothing架构与lambda架构 Druid设计三个原则: 1.快速查询(Fast Qu...

拿着核武器的程序员的博客 18万+

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

Airtest进阶篇,主要分享如何提高脚本稳定性+如何批量运行脚本生成测试报告!

程序员小杨哥的博客 2574

Druid实战--数据摄入案例

Durid摄入数据的方式 通过imply的UI界面配置摄入数据规范Ingestion Spec 手动创建摄入数据规范Ingestion Spec,通过http请求执行 说明:下面以摄入kafka的数据为例进行步骤解析,kafka的数据格式json {"current_timestamp":"1560321490664","age12":"22","name":"wan...

阿华田的博客 1720

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Druid实战--摄入数据规范Ingestion Spec

简介 Schema的定义,Druid摄入数据规范的核心是dataSchema,dataSchema定义了如何解析输入的数据,并将数据存储到Druid中。ingestion spec 由三个部分组成: { "dataSchema" : {...}, "ioConfig" : {...}, "tuningConfig" : {...} } 字段 类型...

阿华田的博客 1285

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

用 Lucky 内网穿透三步搞定:在家外的任何地方访问内网服务

Lucky 是一款面向软硬路由的公网管理工具,集成端口转发、动态域名(DDNS)、反向代理、网络唤醒(WOL)等核心功能。本文带你走完"部署、登录、配好第一条转发规则"三步,把家里的 NAS 和内网服务安全地暴露到公网,并用白名单控制谁能访问。 你在公司里,想看看家里 NAS 上的照片,打开浏览器却只能访问内网 IP,外网根本连不上。这是很常见的困扰:路由器拦截外部连接、家庭宽带公网 IP 经常

gitblog_00361的博客 995

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Druid压测和数据摄入优化

Druid压测结论: 1.“枚举型”和“连续数值型”在当前业务数据量级(500G左右)下摄入和查询功能可轻松支撑,摄入时长可保证30分钟以内,查询用时可保证200ms以内。 2.10倍于当前业务数据量级下,枚举型摄入时长可优化至2小时,连续数值型可优化至40分钟,查询用时可保证200ms以内。 Druid数据摄入优化经验 1.对HDFS文件开启gz压缩,测试gz格式比lzo格式入库要省30%的时间,因为数据压缩率变大。 2.对tuningConfig里的"targetParti...

攻城狮Kevin 625

4-Druid数据摄入-1

http://druid.io/docs/0.10.1/ingestion/index.html 一、数据格式 【1】Data Formats http://druid.io/docs/0.10.1/ingestion/data-formats.html (1)摄入规范化数据:JSON、CSV、TSV  (2)自定义格式 Regex parser or the JavaScript

hjw199089的博客 3503

Druid实时大数据分析数据摄入(五)

  数据摄入   数据摄入是指为了立即使用数据或者将数据持久化,从而获取和导入数据的过程。数据摄入包括流式和批量两种方式:流式数据摄入主要指数据源一边产生数据一边导入;而批量数据摄入则主要指不同的数据块(chunk)周期性导入。由于存在大量的不同格式的数据,因此,如何以合理的速度以及过程摄入数据对于业务系统来说具有非常大的挑战。   对于流式数据的摄取,Druid提供了两种方式,分别是Push(推送)和Pull(拉取)。   采用Pull方式摄取数据,需要启动一个实时节点(Realtime Node)

linjingyg的博客 435

大数据新视界 --大数据大厂之 Druid 查询性能提升:加速大数据实时分析的深度探索

本文深入探讨 Druid 查询性能优化。阐述 Druid 架构,分析数据存储、摄入方式与查询性能的关系,介绍优化策略如存储格式、索引维护、摄入模式调整和查询语句优化,还通过交通、游戏等行业案例展示优化效果。

【青云交】华为云云享专家 | 阿里云开发者社区专家博主 技术圈个人影响力前 9 | 博客之星 TOP12 优快云 首位四榜(原力榜 / 作者周榜 / 领军人物 / 综合热榜)榜首,破平台纪录! 苏州地区全榜霸榜,感恩全网十多万粉丝同行! 4274
上一篇: 5-Druid数据摄入-2
下一篇: Enabling Metrics
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值