首页 文章 精选 留言 我的

精选列表

搜索[工具库],共10000篇文章
优秀的个人博客,低调大师

Druid(准)实时分析统计数据——列存储+高效压缩

Druid是一个开源的、分布式的、列存储系统,特别适用于大数据上的(准)实时分析统计。且具有较好的稳定性(Highly Available)。 其相对比较轻量级,文档非常完善,也比较容易上手。 Druid vs 其他系统 Druid vs Impala/Shark Druid和Impala、Shark 的比较基本上可以归结为需要设计什么样的系统 Druid被设计用于: 一直在线的服务 获取实时数据 处理slice-n-dice式的即时查询 查询速度不同: Druid是列存储方式,数据经过压缩加入到索引结构中,压缩增加了RAM中的数据存储能力,能够使RAM适应更多的数据快速存取。索引结构意味着,当添加过滤器来查询,Druid少做一些处理,将会查询的更快。 Impala/Shark可以认为是HDFS之上的后台程序缓存层。 但是他们没有超越缓存功能,真正的提高查询速度。 数据的获取不同: Druid可以获取实时数据。 Impala/Shark是基于HDFS或者其他后备存储,限制了数据获取的速度。 查询的形式不同: Druid支持时间序列和groupby样式的查询,但不支持join。 Impala/Shark支持SQL样式的查询。 Druid vs Elasticsearch Elasticsearch(ES)是基于Apache Lucene的搜索服务器。它提供了全文搜索的模式,并提供了访问原始事件级数据。 Elasticsearch还提供了分析和汇总支持。根据研究,ES在数据获取和聚集用的资源比在Druid高。 Druid侧重于OLAP工作流程。Druid是高性能(快速聚集和获取)以较低的成本进行了优化,并支持广泛的分析操作。Druid提供了结构化的事件数据的一些基本的搜索支持。 Segment: Druid中有个重要的数据单位叫segment,其是Druid通过bitmap indexing从raw data生成的(batch or realtime)。segment保证了查询的速度。可以自己设置每个segment对应的数据粒度,这个应用中广告流量查询的最小粒度是天,所以每天的数据会被创建成一个segment。注意segment是不可修改的,如果需要修改,只能够修改raw data,重新创建segment了。 架构 Druid本身包含5个组成部分:Broker nodes, Historical nodes, Realtime nodes, Coordinator Nodes和indexing services. 分别的作用如下: Broker nodes: 负责响应外部的查询请求,通过查询Zookeeper将请求划分成segments分别转发给Historical和Real-time nodes,最终合并并返回查询结果给外部; Historial nodes: 负责’Historical’ segments的存储和查询。其会从deep storage中load segments,并响应Broder nodes的请求。Historical nodes通常会在本机同步deep storage上的部分segments,所以即使deep storage不可访问了,Historical nodes还是能serve其同步的segments的查询; Real-time nodes: 用于存储和查询热数据,会定期地将数据build成segments移到Historical nodes。一般会使用外部依赖kafka来提高realtime data ingestion的可用性。如果不需要实时ingest数据到cluter中,可以舍弃Real-time nodes,只定时地batch ingestion数据到deep storage; Coordinator nodes: 可以认为是Druid中的master,其通过Zookeeper管理Historical和Real-time nodes,且通过Mysql中的metadata管理Segments Druid中通常还会起一些indexing services用于数据导入,batch data和streaming data都可以通过给indexing services发请求来导入数据。 Druid还包含3个外部依赖 Mysql:存储Druid中的各种metadata(里面的数据都是Druid自身创建和插入的),包含3张表:”druid_config”(通常是空的), “druid_rules”(coordinator nodes使用的一些规则信息,比如哪个segment从哪个node去load)和“druid_segments”(存储每个segment的metadata信息); Deep storage: 存储segments,Druid目前已经支持本地磁盘,NFS挂载磁盘,HDFS,S3等。Deep Storage的数据有2个来源,一个是batch Ingestion, 另一个是real-time nodes; ZooKeeper: 被Druid用于管理当前cluster的状态,比如记录哪些segments从Real-time nodes移到了Historical nodes; 查询 Druid的查询是通过给Broker Nodes发送HTTP POST请求(也可以直接给Historical or Realtime Node),具体可见Druid官方文档。查询条件的描述是json文件,查询的response也是json格式。Druid的查询包含如下4种: Time Boundary Queries: 用于查询全部数据的时间跨度 groupBy Queries: 是Druid的最典型查询方式,非常类似于Mysql的groupBy查询。query body中几个元素可以这么理解: “aggregation”: 对应mysql”select XX from”部分,即你想查哪些列的聚合结果; “dimensions”: 对应mysql”group by XX”,即你想基于哪些列做聚合; “filter”: 对应mysql”where XX”条件,即过滤条件; “granularity”: 数据聚合的粒度; Timeseries queries: 其统计满足filter条件的”rows”上某几列的聚合结果,相比”groupBy Queries”不指定基于哪几列进行聚合,效率更高; TopN queries: 用于查询某一列上按照某种metric排序的最常见的N个values; 本文小结 Druid是一个开源的,分布式的,列存储的,适用于实时数据分析的系统,文档详细,易于上手; Druid在设计时充分考虑到了Highly Available,各种nodes挂掉都不会使得druid停止工作(但是状态会无法更新); Druid中的各个components之间耦合性低,如果不需要streaming data ingestion完全可以忽略realtime node; Druid的数据单位Segment是不可修改的,我们的做法是生成新的segments替换现有的; Druid使用Bitmap indexing加速column-store的查询速度,使用了一个叫做CONCISE的算法来对bitmap indexing进行压缩,使得生成的segments比原始文本文件小很多; 在我们的应用场景下(一共10几台机器,数据大概100列,行数是亿级别),平均查询时间<2秒,是同样机器数目的Mysql cluter的1/100 ~ 1/10; Druid的一些“局限”: Segment的不可修改性简化了Druid的实现,但是如果你有修改数据的需求,必须重新创建segment,而bitmap indexing的过程是比较耗时的; Druid能接受的数据的格式相对简单,比如不能处理嵌套结构的数据 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6248172.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

android EnMicroMsg.db安卓微信数据获得密码的源码

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 //主要实现过程,其中paramString2为手机串号,paramLong为uin this .cSb=getMessageDigest((paramString2+paramLong).getBytes()).substring( 0 , 7 ); Stringstr= "PRAGMAkey=\"" + this .cSb+ "\";" ; // package com.gracecode.android.signature.wechat; import java.security.MessageDigest; public final class MD5 { public static final StringgetMessageDigest( byte []paramArrayOfByte) { char []arrayOfChar1={ 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 97 , 98 , 99 , 100 , 101 , 102 }; try { MessageDigestlocalMessageDigest=MessageDigest.getInstance( "MD5" ); localMessageDigest.update(paramArrayOfByte); byte []arrayOfByte=localMessageDigest.digest(); int i=arrayOfByte.length; char []arrayOfChar2= new char [i* 2 ]; int j= 0 ; int k= 0 ; while ( true ) { if (j>=i) return new String(arrayOfChar2); int m=arrayOfByte[j]; int n=k+ 1 ; arrayOfChar2[k]=arrayOfChar1[( 0xF &m>>> 4 )]; k=n+ 1 ; arrayOfChar2[n]=arrayOfChar1[(m& 0xF )]; j++; } } catch (ExceptionlocalException) { } return null ; } 本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/1415004,如需转载请自行联系原作者

优秀的个人博客,低调大师

苹果系统被曝漏洞, 大麦网再遭撞攻击 | 宅客周刊

1.不写黑板报的道哥:我要做出能代表我的伟大产品 百度搜索竞价排名,滋养的最大产业可能并不是莆田医院,而是很多三不管地带,例如某些小众行业。谁的关键词排在第一,他的竞争对手很可能会雇佣 DDoS 把它打下来。这种生意组成了巨大的流量。 道哥把脚搭在茶几上,为雷锋网科普江湖的险恶。 这个资深黑客拥有诸多身份:写“道哥的黑板报”的“文艺网红”;阿里云云盾的负责人。在他心里,第一个身份轻如鸿毛,第二个身份重若泰山。 保卫阿里云这个中国 35% 的网站都坐落其上的云计算平台和上面的居民,道哥觉得自己守土有责,不容有失。探底黑产,描绘自己的作战地图,是他对自己职责要求的一部分。 他告诉雷锋网(公众号:雷锋网)一个秘诀:“想要知道中国的黑产有哪些行业,只要看淘宝的禁限售板块就够了。”DDoS攻击,敲诈勒索,暗网黑市,这些黑色产业,往往最终都

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册