从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析

上传人:我** 文档编号:116772731 上传时间:2019-11-17 格式:PPTX 页数:32 大小:2.79MB
返回 下载 相关 举报
从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析_第1页
第1页 / 共32页
从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析_第2页
第2页 / 共32页
从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析_第3页
第3页 / 共32页
从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析_第4页
第4页 / 共32页
从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析》由会员分享,可在线阅读,更多相关《从TDW-Hive到TDW-Spark-SQL_腾讯TDW数据引擎演进之路讲话剖析(32页珍藏版)》请在金锄头文库上搜索。

1、从TDW-Hive到TDW-SparkSQL 腾讯TDW数据引擎演进之路 沈洪 Agenda n 腾讯TDW平台的介绍 n SparkSQL的优势与挑战 n TDW-SparkSQL的平台建设 n 上线与效果 n 未来的计划 腾讯TDW大数据平台 数据应用数据接入 IDEA 黄金眼 META . FACE+ TDBANK Angel (PS) Spark Gaia(CPU/ GPU / MEM) HDFSCeph Tensorflow Mariana(Caffe) MR SQL Lhotse (任务调度) Tesla (机器学习) HBase GraphX IDE ( 即席查询) MLlib

2、Storm 集群容量 2w+ 机器总数 8800 最大集群 250P+ 存储总量 1250T+ 总内存 24w+ 总CPU物理核 24w+ 总硬盘数 18P+25w+ 200w+ 最大集群的每天负载 扫描量作业数SQL数 CPU利用率 75%+80% 内存利用率 85% 磁盘利用率 WHY 旧Hive引擎的瓶颈 l缺乏DAG,中间结果落地 l基于MR的执行计划,不支持资源重用,Cache M M R R HDFS M M R HDFS M M R HDFS M M R HDFS HDFS HDFS RM R M l社区活跃度不足 Query Hive query complier Syntax

3、 tree Logical plan Physical MR stages SparkSQL的优势 MR M M M R R MR R R HDFS HDFS HDFS R lDAG l全新的查询优化器,基于RDD的执行计划,内存计算 lDataFrame & 钨丝计划 l函数式编程语言Scala和高度活跃的社区 升级引擎面临的挑战 语法,元数据,安全,权限,功能 大集群,跨机房,高负载,SQL复杂TB级别的Shuffle,Aggregate,Join 性能 兼容性 稳定性 功能增强 稳定性提 升 性能优化 TDW-SparkSQL的平台建设 存储层 Protobuf File 分布式 执行层

4、 引擎层 SQL Engine Hive Engine SQL层TDW-SQL ORC File MapReduceSpark Spark-SQL SQL Engine 共享元数据 权限控制 TDW-SQLServer SQL Engine EasyCount Storm 存储透明 Text FileSequence File TDW的SQL框架 功能增强 特色语法功能 支持Python的UDAF和UDTF l 兼容Oracle语法 Insert into、Update、delete 支持 hash/range/list分区 l 窗口函数:ratio_to_report、 first_valu

5、e、last_value l UDF函数: IpInfo、wm_concat、est_distinct、url_decode l 支持查询PG外表,Aggregate、Join 特色语法功能 SparkServer RM PySpark SparkClient PLC NodeManager SQ L SQLApplicationMaster SQLCompiler SQLRunner UDFx Python版本的UDAF/UDTF NodeManager Executor TaskRunner PythonRunner 1. 支持用户使用Python编写UDF、UDAF和UDTF 2. Py

6、Spark嵌入SparkServer中,不再单独起JVM进程 3. PLC执行多个SQL时支持session共享 4.SQL自动封装为PySpark,对用户透明 性能改进 调度策略改进 自动设置Shuffle分区数 SortMergeJoin 优化 调度策略改进优化前 l 问题 Job1长时间占用资源池不释放,其他作业长时间等待资源 公平和FIFO调度,都会导致小作业饿死 l 原因 Spark的调度以Executor为单位粗粒度分配资源,释放慢 Mapreduce的调度以Task为单位细粒度分配资源,释放快 Job1 Job2 Job3 JobN . Jobs queues Resource

7、pool Executor Executor Executor schueduler task Job1 Job2 Job3 JobN . Jobs queues Resource pool Executor Executor Executor schueduler task 释放策略: 1. avg = runContainers/runJobs 2. Job资源数Ravg & remainContainers =0 时,启动释放逻辑, 3. 释放个数=Math.min( (R/runContainers)*waitContainers, R*ratio) 调度策略改进优化后 资源池紧张时小

8、作业不会饿死,资源池空闲时大作业能充分利用资源 资源(Executor)自动释放机制。 2016/8/9 Shuffle分区数自动设置优化前 Scan t1Scan t2 Scan t4 HDFS Parallel=200 15G30G Parallel=200 200G 问题:Spark中Shuffle分区数使用同一设置 1.不同Job需要不同的设置 2.单个Job不同的阶段也需要不同分区数 Scan t1Scan t2 Scan t4 HDFS 15G30G 200G Parallel=45G/512M=90 Parallel=245G/512M=490 优化措施 1.追溯输入,自动计算每

9、个Stage的并行度 2.自动调整cube,distinct等数据膨胀操作的并行度。 3.防止输出小文件过多输出小文件自动合并机制 Shuffle分区数自动设置优化后 SortMergeJoin 优化前 Split Map Memory Buffer other maps Join OutPut partition, spill file other reduces Map Reduce Spill map Fetch Sort External Sorter Join Memory Buffer Spill file 问题 1.Shuffle Fetch效率低,网络利用率低 2.Sort 操

10、作耗时 3.频繁Spill,序列化/反序列化 Merge SortMergeJoin 优化后 Split Map Memory Buffer other maps Join OutPut Partition, sort, spill file other reduces Map Reduce Sort SpillmapFetch Join Memory Buffer Merge sort Merge sort Merge Sort Disk file 优化措施 1.Fetch 大 Block 直接写磁盘 2.增加 Fetch线程 3.Join Sort排序移到Map端,Reduce端只需要合并

11、排序 平均运行时间减少70% 稳定性提升 SparkServer分散化 运行稳定性 2016/8/9 SparkServer分散化 SparkServer SparkDriver SparkDriver SparkDriver SparkDriver ReduceTask ReduceTask ReduceTask MapTask MapTask MapTask ReduceTask ReduceTask ReduceTask Stage1 Stage2 . StageN Ask for MapOutStatus 问题 1.SparkDriver的内存占用大 2.网络(千兆)卡超过一分钟 3.

12、SparkServer最大同时运行1000条SQL,影响其他SQL的运行 2016/8/9 SparkDriver分散化 洛子 IDESparkServer SparkServer SparkServer Resource Manager Node Manager Node Manager Executor Executor Executor MetaStore Executor Resource Manager Node Manager SparkClient SparkClient SparkDriver SparkDriver Metastore Server Metastore Ser

13、ver 改造 1.把SparkDriver的功能迁移到AppMaster上 2.增加MetastoreServer,确保Metastore Cluster的安全 3.增加通信协议,SparkServer获取Driver的作业进度 运行稳定性 AM经常OOM l Tasks 3w+, AM内存OOM l 减少Accumulators,降低AM 70%内存 l AM内存配置由4G减少到1.5G 推测执行改进 l 推测成功后kill掉正在跑的Task l 修复Commit失败导致无限重试的BUG 调度问题修复 l Task不调度:动态资源申请的BUG l Task调度到已释放的Executor失败

14、上线与效果 飞行中换引擎 升级过程 内部Issue社区PR升级覆盖率 80% 30+380+ 1.4.11.5.11.6.1 2015.07.152015.10.022016.03.09 典型的10条线上SQL性能提升 1.4(Seconds)1.5(Seconds) 1.5 vs 1.41.6(Seconds)1.6 vs 1.5 q3.sql 295 218-26.10%150-23.05% q34.sql 805 313-61.12%243-8.70% q42.sql 253 149-41.11%1593.95% q43.sql 804 259-67.79%249-1.24% q52.s

15、ql 390 168-56.92%153-3.85% q55.sql 480 177-63.13%124-11.04% q59.sql 494 204-58.70%189-3.04% q63.sql 131 1385.34%1498.40% q65.sql 274 229-16.42%163-24.09% q82.sql 315 3273.81%3589.84% 边换引擎边升级 分组灰度上线 升级不停服,用户无影响 灰度前 数据一致性 性能评估 灰度时 双引擎自动切换 灰度后 运行时间 资源对比 异常任务监控 引擎升级的效果 每日运行SQL数20w+ SQL运行速度平均提升40%+ 成本节约20%+ 未来的计划 l多表Join优化 l支持处理数据倾斜 l机器增加内存 l结合Spark Streaming提供流式查询 Q & A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号