基于SQL的实时应用开发实践_第1页
基于SQL的实时应用开发实践_第2页
基于SQL的实时应用开发实践_第3页
基于SQL的实时应用开发实践_第4页
基于SQL的实时应用开发实践_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于SQL的实时应用开发实践TDW的发展TDW(Hive+Hadoop)2010:500台2012:2000台2013:4000台2014:8800台接口机集群(HDFS)外表2009:开始研发分布式数据仓库系统TDW2010:正式上线1.0版本,集群规模500台2011:形成接口机+TDW的模式,业务接入迅速增长2012:数据接入遇到瓶颈业务上传土豪,把数据放在接口机上,剩下的事情就交给我们吧数据分布在全国100多个IDC,有文件,有DB,还有消息还真不少,没关系,我们提供工具数据丌能通过专网传输,为节 约成本,需要走公网,还要加密土豪也差钱吗,不过这是个问题另外其他几个兄弟部门也需要 这份

2、数据,你们要帮忙转发, 要实时的哟这事没有想过,需要仔细研究一下对了,顺便说下,所有接口表 数据都是混在一起的,需要提 前分拣开。异构数据源网络环境复杂多路实时复用实时分拣TDBankTDWTRC统一接入实时分发数据融合产生价值实时数据更大价值TDBank系统架构TDW管理中心(元数据管理,业务配置,权限管理,运维监控)数据采集Agent数据源适配数据接入 TDBus协议/传输数据缓存Tube消息队列/分发数据分拣 TDSort实时分拣TRC1. 数据采集DBSyncFileDB业务应用进程Agent LoaderFileReaderDBLoaderMsgTransferAgentmsgmsg

3、管理中心数据接入 集群直接消息异构数据源适配直接消息转发消息本地文件DB全量DB增量AgentLoader统一管理批量部署2. 数据接入协议适配高效网络传输公网/内网切换局部去重打包压缩加密数据分散化数据接入集群TDBus数据采集 Agent数据缓存TUBE3. 数据缓存ConsumerConsumerConsumerMaster (active)ProducerProducerProducerBrokerBrokerBrokerBrokerMaster (standby)ZookeeperProducer groupConsumer groupBroker clusterMaster HA分

4、布式消息队列系统TUBE线性扩展数据持久化高吞吐多路分发数据回溯4. 数据分拣Storm集群TUBETDW(hdfs)分拣Topologyspoutboltspoutboltspoutbolt实时分拣万级接口并发上传容灾恢复流量控制基于Storm流式计算平台TDBank运营现状10,000亿200TB10,000个1-2s99.999%接入消息数/天 接入数据量/天并发分拣业务接口表/天 采集平均延时可用度土豪,有了TDBank,是不是很爽爽是爽,丌过最近有了新的麻烦神马情况,说说看呗?老板说了:数据报表 要 分钟粒度 业务监控 要 秒级搞定 道具推荐 要 劢态实时 系统异常 要 在线分析你们

5、老板胃口越来越大了, 那你想怎么办呢?要是能像TDW那样,一条SQL搞定,那就好了有见地,稍等一下,让我来试试看SQL与实时流式计算SQL是数据的语言流式SQL描述计算过程而非计算结果流式计算中的数据存储方式灵活多样,无专用存储一切数据都抽象为表,表的定义有两种:流水表,关联表流式计算处理平台StormSparkStreamingEasyCount系统架构Gaia(基于Yarn的资源调度平台)Storm-YarnStorm/JStormEasyCount(SQL引擎)Spark-YarnSpark Streaming语法/语义分析Topology物理计划逻辑计划EasyCountStormTD

6、Bank(流水表)TDBank KV/DBKV/DB(关联表)输入表输出表用户SQL脚本支持with,where,groupby,union,join等基本sql语法兼容HIVE所有的函数,聚合函数支持复杂数据类型,map,array,structEasyCount-SQL几个重要问题表的分类JOIN聚合计算去重统计复杂逻辑计算表的分类流水表TDBank流水数据表关联表DB:mysql,pgKV:tde,redisHBaseJOINJOIN的数学定义内关联,左外,右外,全外等值,非等值EasyCount支持:左外等值关联左表:流水表右表:关联表流水表乊间的关联需求怎么办?将其中一张表转化为关联

7、表UNION + Group ByJOIN的两种方式KV关联表DB关联表内存流水表KV关联表:数据较大戒即时更新DB关联表:数据较小且允许延迟更新JOIN内存流水表内存流水表定时全量导入计算节点内存每条数据都产生一次外部查询聚合计算select count(uin) . group by appid数据时间聚合窗口累加窗口及滑劢窗口语法级别的支持group by appid coordinate by dtimewith aggr interval 60 secondswith accu/sw interval 180 seconds去重统计count(distinct uin)精确的去重统计

8、资源消耗较大两个问题除了count以外的去重统计是否有意义?精确的去重统计有多么重要?基于HyperLogLog基数统计算法的非精确去重统计函数countd,hllp,hllp_merge,hllp_get1亿对象,99.5%精确度,45KB内存占用复杂逻辑计算SQL表达式select expr from .复杂数据类型的处理循环,判断等自定义UDF?运营成本,代码可维护性, 系统稳定性execute表达式,嵌入在sql内部的过程式处理select execute (DEFINE x as int, .FOR(condexprx := expr)IF(condexprx := expr).EM

9、IT $x) from tblAPP累加UV统计案例分析背景及需求:对100个APP在10个地区每分钟统计累加UV。累加UV:从当天0点开始到当前分钟的独立登录数假设每个APP在每个地区的天UV约为1千万使用KV作为中间状态关联表,以聚合分组字 段为key,以聚合基数数组为valuewith (select appid, areaid, hllp(qq) b from tbl group by appid, areaid . 60 seconds) t1 (select appid, areaid, jkv.k, hllp_merge(t1.b, j.ball) ball, t1.g g fr

10、om t1 left join jkv on concat(appid, areaid)=jkv.k) jt insert into jkv select k, ball from jt insert into dest select appid, areaid, hllp_get(ball) from jtmsgAGGR按分钟输出KV关联更新hllpJOINhllp_mergehllp_get非精确UV统计(99.5%准确率)KV 内 存 占 用 :100*10*45KB=45MB KV查询:100*10*1440=150万次,20次/sEasyCount运营现状单日输入数据量:2000亿,计算量5000亿业务类型包括,报表,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论