聚合数据

Apache Kylin 概述

僤鯓⒐⒋嵵緔 提交于 2019-12-01 07:56:22
1 Kylin是什么 今天,随着移动互联网、物联网、AI等技术的快速兴起,数据成为了所有这些技术背后最重要,也是最有价值的“资产”。如何从数据中获得有价值的信息?这个问题驱动了相关技术的发展,从最初的基于文件的检索、分析程序,到数据仓库理念的诞生,再到基于数据库的商业智能分析。而现在,这一问题已经变成了如何从海量的超大规模数据中快速获 取有价值的信息,新的时代、新的挑战、新的技术必然应运而生。 在大数据处理技术领域,用户最普遍的诉求就是希望以很简易的方式从大数据平台上快速获取查询结果,同时也希望传统的商务智能工具能够直接和大数据平台连接起来,以便使用这些工具做数据分析。目前已经出现了很多优秀的SQL on Hadoop引擎,包括Hive、Impala及 SparkSQL等,这些技术的出现和应用极大地降低了用户使用Hadoop平台的难度。 为了进一步满足“在高并发、大数据量的情况下,使用标准SQL查询聚合结果集能够达到毫秒级”这一应用场景,Apache Kylin应运而生,在 eBay孵化并最终贡献给开源社区。Apache Kylin是2013年由eBay 在上海的一个中国工程师团队发起的、基于Hadoop大数据平台的开源 OLAP引擎,它采用多维立方体预计算技术,利用空间换时间的方法,把很多分钟级别乃至小时级别的大数据查询速度一下子提升到了亚秒级别,极大地提高了数据分析的效率

[转帖]时间序列数据库 (TSDB)

。_饼干妹妹 提交于 2019-12-01 07:13:46
时间序列数据库 (TSDB) https://www.jianshu.com/p/31afb8492eff 0.3392019.01.28 10:51:33字数 5598阅读 4030 背景 2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。 例如: 时间序列数据库 Time Series Database (TSDB) 随着分布式系统监控、物联网的发展,TSDB开始受到更多的关注。 维基百科上对于时间序列的定义是‘一系列数据点按照时间顺序排列’ 时间序列数据就是历史烙印,具有不变性,、唯一性、时间排序性 时间序列数据跟关系型数据库有太多不同,但是很多公司并不想放弃关系型数据库。 于是就产生了一些特殊的用法,比如用 MySQL 的 VividCortex , 用 Postgres 的 Timescale 。 很多人觉得特殊的问题需要特殊的解决方法,于是很多时间序列数据库从头写起,不依赖任何现有的数据库, 比如 Graphite , InfluxDB 。

Hive、Inceptor数据倾斜详解及解决

三世轮回 提交于 2019-11-30 19:06:18
一、倾斜造成的原因 正常的数据分布理论上都是倾斜的,就是我们所说的20-80原理:80%的财富集中在20%的人手中, 80%的用户只使用20%的功能 , 20%的用户贡献了80%的访问量。 俗话是, 一个人累死,其他人闲死 的局面 这也违背了并行计算的初衷,首先一个节点要承受着巨大的压力,而其他节点计算完毕后要一直等待这个忙碌的节点,也拖累了整体的计算时间,可以说效率是十分低下的。 下面举个简单的例子: 举个 word count 的入门例子: 它的map 阶段就是形成 (“aaa”,1)的形式,然后在reduce 阶段进行 value 相加,得出 “aaa” 出现的次数。 若进行 word count 的文本有100G,其中 80G 全部是 “aaa” 剩下 20G 是其余单词,那就会形成 80G 的数据量 交给一个 reduce 进行相加,其余 20G 根据 key 不同分散到不同 reduce 进行相加的情况 。如此就造成了数据倾斜,临床反应就是 reduce 跑到 99%然后一直在原地等着 那80G 的reduce 跑完。 表现如下: 有一个多几个reduce卡住 各种container报错OOM 读写的数据量极大,至少远远超过其它正常的reduce 伴随着数据倾斜,会出现任务被kill等各种诡异的表现。 二、倾斜原理 原理剖析 在进行shuffle的时候

Elasticsearch性能优化干货

家住魔仙堡 提交于 2019-11-30 16:18:32
1、集群规划优化实践 1.1 基于目标数据量规划集群 在业务初期,经常被问到的问题,要几个节点的集群,内存、CPU要多大,要不要SSD? 最主要的考虑点是:你的 目标存储数据量 是多大?可以针对目标数据量反推节点多少。 1.2 要留出容量Buffer 注意:Elasticsearch有三个警戒水位线,磁盘使用率达到85%、90%、95%。 不同警戒水位线会有不同的应急处理策略。 这点,磁盘容量选型中要规划在内。控制在 85%之下 是合理的。 当然,也可以通过配置做调整。 1.3 ES集群各节点尽量不要和其他业务功能复用一台机器。 除非内存非常大。 举例:普通服务器,安装了ES+Mysql+redis,业务数据量大了之后,势必会出现内存不足等问题。 1.4 磁盘尽量选择SSD Elasticsearch官方文档肯定 推荐SSD ,考虑到成本的原因。需要结合业务场景,如果业务对写入、检索速率有较高的速率要求,建议使用SSD磁盘。 阿里的业务场景,SSD磁盘比机械硬盘的速率提升了5倍。但要因业务场景而异。 1.5 内存配置要合理 官方建议:堆内存的大小是官方建议是:Min(32GB,机器内存大小/2)。 Medcl和wood大叔都有明确说过,不必要设置32/31GB那么大,建议: 热数据设置:26GB,冷数据:31GB 。 总体内存大小没有具体要求,但肯定是内容越大,检索性能越好。

数据库中间件 Sharding-JDBC 源码分析 —— 结果归并

妖精的绣舞 提交于 2019-11-30 05:57:49
摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/result-merger/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. MergeEngine 2.1 SelectStatement#setIndexForItems() 2.2 ResultSetMerger 2.2.1 AbstractStreamResultSetMerger 2.2.2 AbstractMemoryResultSetMerger 2.2.3 AbstractDecoratorResultSetMerger 3. OrderByStreamResultSetMerger 3.1 归并算法 3.2 #next() 4. GroupByStreamResultSetMerger 4.1 AggregationUnit 4.2 #next() 5. GroupByMemoryResultSetMerger 5.1 #next() 6. IteratorStreamResultSetMerger 7. LimitDecoratorResultSetMerger 666. 彩蛋 ������关注 微信公众号:【芋道源码】 有福利: 1. RocketMQ / MyCAT / Sharding-JDBC

数据聚合 & 分组:新一代系统监控的核心功能

空扰寡人 提交于 2019-11-30 01:22:01
遥想 2015 年 8 月 17 日,Cloud Insight 还在梳理功能原型,畅想 Cloud Insight 存在的意义: 为什么阿里云用户需要使用 Cloud Insight 来加强管理 。 而今,我们就已经实现了这样的功能: 使用标签来实现数据的聚合和分组。 相信使用过 OpenTSDB 或者 InfluxDB 的人都知道标签的存在:Tag。这也是为什么越来越多 Zabbix 或者 Nagios 用户迁移至 OpentsDB 来自建运维监控系统的原因。 如果所示,Zabbix 只提供单台 Host 的 Disk 使用量。如果 3 台主机,都同属于一个组 Mi-Kafka,想要知道这个组的总体 Disk 使用量,是无法得知的。 从而,就算线上系统发生了故障,要在短期内知道, 到底是哪个模块的哪个部分出了哪样的问题 ,所需要的经验和时长都是很大的。 而 OpenTSDB 和 StatsD 的出现改变了现状。 运维 2.0 时代 在非常早期的时候,淘宝团队就引入了 OpenTSDB 来辅助他们的运维监控。详情见: OpenTSDB监控系统的研究和介绍 。 随后的几年,云计算和 SaaS 的兴起,国外也出现了多种采用 StatsD 和 OpenTSDB 的开源工具搭建的 SaaS 服务:Boundary、CopperEgg、Datadog 等等。

Elasticsearch(GEO)数据写入和空间检索

主宰稳场 提交于 2019-11-29 17:08:40
Elasticsearch简介 什么是 Elasticsearch? Elasticsearch 是一个开源的分布式 RESTful搜索和分析引擎,能够解决越来越多不同的应用场景。 本文内容 本文主要是介绍了ES GEO数据写入和空间检索,ES版本为7.3.1 数据准备 Qgis使用渔网工具,对范围进行切割,得到网格的Geojson 新建索引设置映射 def set_mapping(es,index_name="content_engine",doc_type_name="en",my_mapping={}): # ignore 404 and 400 es.indices.delete(index=index_name, ignore=[400, 404]) print("delete_index") # ignore 400 cause by IndexAlreadyExistsException when creating an index my_mapping = { "properties": { "location": {"type": "geo_shape"}, "id": {"type": "long"} } } create_index = es.indices.create(index=index_name) mapping_index = es.indices

面对对大体量矢量数据ArcGIS的优化方法

孤街浪徒 提交于 2019-11-29 00:19:23
大数据量矢量数据的可视化需要解决的问题,就是如何在可接受的短时间内,能展示大数据量的矢量地图。 解决方案一:采用预先渲染的切片进行展示 切片是预先渲染的数据集,也是响应最快的展示方式。目前ArcGIS提供栅格切片和矢量切片两种切片格式。这两种切片格式各有利弊,如下表所示: 栅格切片 矢量切片 支持ArcGIS Desktop所有符号 支持 仅部分 支持高分辨屏幕自适应 不支持 支持 支持小比例尺下展示全部数据 支持 不支持,会自动简化数据。 支持动态改变样式 不支持 支持 生产耗时 耗时长 耗时短 由上述表格,可以得出,只有栅格切片才能支持展示全部数据。因此对于大数据量的矢量数据的展示,建议在小比例尺下预先生产栅格切片,并设置合理的比例尺。 解决方案二:使用查询图层进行动态聚合展示 在把大数据量的矢量数据进行可视化时,当地图缩放到小比例尺时,往往会出现地图上叠加了过多的要素,失去了地图应该表达的实际业务意义。因此,这时可以考虑使用按区域聚合的方法,制作具有实际业务意义的专题地图。具体方法如下: 1、创建用于聚合的区域,可以使用行政区域,或者使用Generate Tessellation工具创建六边形或正方形格网。 2、添加查询图层。通过SQL进行数据的动态聚合。这里可以使用两种SQL思路,第一是使用属性字段进行关联,第二种是使用空间SQL函数。显然第一种方法速度上是更快的

MSSQLSERVER执行计划详解

妖精的绣舞 提交于 2019-11-28 19:16:23
序言 本篇主要目的有二: 1、看懂t-sql的执行计划,明白执行计划中的一些常识。 2、能够分析执行计划,找到优化sql性能的思路或方案。 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博文给你: SqlServer性能检测和优化工具使用详细 , sql语句的优化分析 , T-sql语句查询执行顺序 。 执行计划简介 1、什么是执行计划? 大哥提交的sql语句,数据库查询优化器,经过分析生成多个数据库可以识别的高效执行查询方式。然后优化器会在众多执行计划中找出一个资源使用最少,而不是最快的执行方案,给你展示出来,可以是xml格式,文本格式,也可以是图形化的执行方案。 2、预估执行计划,实际执行计划 选择语句,点击上面其中一个执行计划,预估执行计划可以立即显示,而实际执行计划则需要执行sql语句后出现。预估执行计划不等于实际执行计划,但是绝大多数情况下实际的执行计划跟预估执行计划都是一致的。统计信息变更或者执行计划重编译等情况下,会造成不同。 3、为什么要读懂执行计划 首先执行计划让你知道你复杂的sql到底是怎么执行的,有没有按照你想的方案执行,有没有按照最高效的方式执行,使用啦众多索引的哪一个,怎么排序,怎么合并数据的,有没有造成不必要资源浪费等等。官方数据显示,执行t-sql存在问题,80%都可以在执行计划中找到答案。 4、针对图形化执行计划分析 执行计划,可以以文本

ElasticSearch常用指令

孤街浪徒 提交于 2019-11-28 16:11:00
查看索引列表 GET /_cat/indices?v 1 创建索引 索引命名有如下限制: a. 仅限小写字母 b. 不能包含\、/、 *、?、"、<、>、|、#以及空格符等特殊符号 c. 从7.0版本开始不再包含冒号 d. 不能以-、_或+开头 e. 不能超过255个字节(注意它是字节,因此多字节字符将计入255个限制) put /test 1 查看索引配置信息 get /test 1 修改现有索引的配置 a. ElasticSearch中对shard的分布是有要求的, 有其内置的特殊算法。 b. ElasticSearch尽可能保证primary shard平均分布在多个节点上。Replica shard会保证不和对应的primary shard分配在同一个节点上。 c. 索引一旦创建,primary shard数量不可变化,但是可以改变replica shard数量 PUT /test/_settings { "number_of_replicas": 1 } 1 2 3 4 创建索引指定相关配置 PUT /test { "settings" : { "number_of_shards" : 1, "number_of_replicas" : 1 } } 1 2 3 4 5 6 7 删除索引 DELETE /test [, other_index] 1 插入/全量更新文档