唯品会大数据平台大数据存储和计算资源管理邮箱:eric.shan@vipshop.com微信:shanchaoeric唯品会大数据平台规划离线计算A台流B计算A台VDProcess实时计算VDBank实时接入VDEngine分布式存(RE(实时推荐A台ABT(分流与实S)oring(初选Sorting(精EFiltering(过S个性化推荐广告联盟精准营销CRMMixer(接入分发DMP统一T户数D货品画像验P型训练A台SparkDNN算法库数D分M数D服务数DF索数D管控标准化元数DeiV控校准gVR维控c唯品会大数据平台现状大数据管理工作范畴❖业务系统❖调度系统❖ETL❖数据模型❖元数据/主数据管理❖数据质量❖开发流程❖运维流程❖数据审计和安全❖资源管理“数据平台使用申请”❖用户提交:❖资源类型❖hdfs存储/hive数据库/hive计算资源/mr计算资源...❖资源数目❖100T存储/1T内存/1000颗CPU...❖访问方式❖hive/presto/spark/webhdfs…❖管理员处理:❖hdfs分配:❖path/namequota/spacequota❖hive分配:数据库/授权❖yarn分配:❖队列最小资源/最大资源/weight理想很丰满,现实很骨感❖系统强大❖数据规范❖流程规范❖技术成熟❖业务成熟❖模型变更迅速,开发周期短❖用户能力参差不齐❖大量的历史包袱❖大量的技术包袱❖平台不稳定,掌控力差❖分层不明确理想现实各种问题❖这个任务昨天还好好的,为什么今天跑不出来了?❖2-10倍的数据量,能撑得住吗?❖怎么几千个任务都慢了?❖最近磁盘使用急剧增加,谁在用?❖这个表好像不用了,我能删除掉吗?❖集群要扩容吗?扩多少?核心资源管控❖分田到户❖目的:❖从乱序到有序❖申请和分配有据可查❖规则公开透明❖数据公开透明❖有多少资源,干多少事❖合理的KPI和惩罚机制❖ROI,资源倾斜给回报率高的项目资源有什么?为什么存储和计算需要关注?❖ScaleUpScaleOut❖Namenode-存储(2亿blocks/2亿files)❖standbynamenodeupdateCountForQuota缓慢影响主从一致性,进而影响切换(HDFS-6763)❖standbycheckpoint缓慢导致增量blockreport汇报被skip,影响主从一致性,进而影响切换(HDFS-7097)❖standbycheckpointGC导致transferFsimage超时失败❖集群启动期间,blockreport需要错开,导致启动缓慢,namenode压力增加❖ResourceManager-计算(1k+并行job/40w+job每天)❖大量任务运行期间,resourcemanager分配能力不足❖部分解决问题❖❖队列分配过粗,互相影响严重开源节流Federation存储优化管理计算优化管理提升namenoderpc性能提升yarn的containaerassign性能增加机器存储资源管理存储资源管理-hdfs存储资源存储资源管理-如何获取存储数据hdfs-lsR[slowbuteasy]load【均为hivetable】文件元数据信息hive表元数据信息调度任务元数据信息路径访问信息calc1.维度分区/表/数据库/任务/业务/人/目录层级/时间2.指标全量/增量/趋势/平均文件大小/最大文件大小/最小文件大小/文件数目/占比3.热度哪些表被频繁访问?哪些表3个月都没人访问了?4.安全有没有敏感信息被非法访问fsimageparser[fastbutneeddev]hivemetastoreETLmetadatahdfsauditlog资源管控系统-demo资源管控系统-demo存储资源管理-如何使用存储数据❖容量计费❖通过计费来控制资源❖存储数据完整透明❖消费预警,提前知会用户❖空间管理❖自动配置生命周期管理规则❖存储格式,压缩格式选择(orc+gzip)❖文件管理❖自动配置生命周期管理规则❖小文件har归档存储资源管理-控制存储的价值❖解决NN“单点”瓶颈❖控制服务器数量,降低成本❖规范数据生命周期管理❖统计冷热数据使用,反馈给ETL生命周期管理计算资源管理计算资源管理yarn-统一调度管理❖yarn,好像搞定了资源管理,我们还需要管理什么?计算资源管理-beyondyarn❖队列管理,共享还是独享?队列分到多细合适?如何确保关键队列的资源?❖每个队列的使用情况如何?❖这个部门的新同事总是写错sql,占用大量资源,怎么办?❖晚上3点多A队列资源紧张,在干什么?❖B任务,最近消耗资源情况怎么样?❖B任务,Csql,为什么step1的application突然跑慢了?❖今天最消耗资源的application是哪个?能优化吗?❖有没有数据倾斜造成的任务延迟?我们要解决一下❖这么多机器,分配的任务数均衡吗?❖有没有一些机器任务失败率特别高?计算资源管理-实时计算资源信息yarn-mapreducewebui业务应用mrcodesparkcommandhivecmdexecutor(hive/spark)hiveservermysql/hbase每分钟app快照实时app基本信息实时明细task信息ETL任务信息+job基础信息分钟快照实时快照明细task信息ETL相关信息队列资源使用实时信息计算资源管理-离线计算资源信息分钟任务快照loadyarn每分钟的任务快照yarn的明细的任务执行信息ETL的任务信息ETL任务内部的job信息队列使用信息【均为hivetable]calc1.维度任务/业务/人/队列/时间/类型(map|reduce)/服务器2.指标全量/增量/趋势/占比/读写资源/cpu资源/shuffle资源实时任务快照task执行明细ETL信息队列使用信息计算资源管理-如何使用计算资源❖容量计费❖通过计费来控制资源❖存储数据完整透明❖消费预警,提前知会用户❖实时告警和自动处理❖根据队列设置不同的规则,如运行时长,使用资源,自动发现和触发停止动作❖通过业务注码,自动展示运行中的业务细节❖数据倾斜自动识别❖队列数据化运营计算资源管理-公平调度❖我们的管理原则:❖尽量细化,单个业务分配单独队列❖队列分配的min/max/weight由实际业务来评估,上线初期会不断调整❖min是保证的最小资源,确保优先获得❖max是业务的最大资源限制,确保不会超过❖每个队列由多个不同级别的子队列组成,子队列业务可灵活调整❖子队列大小可以基于时间动态调整❖自天,天任务队列缩小,小时任务队列放大❖夜晚,天任务队列放大,小时任务队列缩小❖关键任务确保队列内的最小队列保证计算资源管理-Yarn实时运行情况监控❖优点❖数据完全实时❖缺点❖展现不够直观❖无历史时序数据计算资源管理(秒级)-数据获取❖historylog❖通过实时计算框架,获取每个application的明细执行结果❖缺点:任务完成后才能获取到完整信息❖jobapi❖通过api实时获取到所有job的基础信息❖比默认rm的api提供更多字段信息,如sql信息❖缺点:不是100%完整的数据,定期获取必然会丢失数据计算资源管理(秒级)-用户查询识别示例ThuApr2118:48:01CST2016jobname=--xxx.chen-qid:152011-...100(Stage-2)user=xxx.chenjob_id=job_1459656116710_7806076starttime=1461232053exceed3600seconds,killing...计算资源管理(秒级)-实时监控taskkillratio计算资源管理(分钟级)-jmx数据来补充❖jmx:http://%s:8088/jmx%(IP)❖返回格式:❖#name:Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=mapreduce,q2=xxx,q3=panda,❖#modelerType:QueueMetrics,q0=root,q1=mapreduce,q2=xxx,q3=panda,❖#tag.Queue:root.mapreduce.xxx.panda,❖#tag.Context:yarn,❖#tag.Hostname:xxxx,❖#running_0:0,❖#running_60:0,❖#running_300:0,❖#running_1440:0,❖#FairShareMB:0,❖#FairShareVCores:0,❖#SteadyFairShareMB:1228800,❖#SteadyFairShareVCores:0,计算资源管理(分钟级)-单个队列监控实例队列分配红线跑平队列等待蓝线升高-结论,单个业务资源吃紧-需要增加最大可分配资源计算资源管理(分钟级)-resourcemanagermetric监控示例调整前:高峰期apppending增加凌晨任务1个小时任务延迟调整min后:最大pending不超过100pending很快下降计算资源管理(分钟级)-resourcemanagermetric监控示例高峰期资源需求增加,但是分配能力下降yarn分配能力受到影响,将问题加剧计算资源管理(分钟级)-优化展现❖集群总体资源分布情况❖最消耗资源的是什么任务❖实时/历史的数据查看计算资源管理(分钟级)-队列总览展现计算资源管理(分钟级)-队列总览展现计算资源管理(天级)-离线资源使用❖查询集群的资源使用场景❖时间/应用/队列维度的资源使用情况❖核心ETL任务近期map/reduce使用情况❖单个attempt的metrics指标查看,如读取超过1kw行数据的map任务❖等等计算资源管理(天级)-数据倾斜识别示例计算资源管理-计算资源优化实例❖用更少的资源计算❖orcfile,压缩率更高,列式存储降低资源消耗❖权衡资源和性能,基于record而不是size调整reduce数量❖基于hll的uv估算函数,提供可增量的uv计算计算资源管理-计算资源优化实例❖用更多的资源计算,更快的释放❖sparksql,内存需求高,复杂计算快❖presto/impala,利用mpp框架提高计算性能计算资源管理-计算资源优化实例❖不同队列的资源使用上限限制❖基于项目粒度的队列资源把控,个性化控制最大可提交资源❖项目队列的最大值限制,避免单个项目失控计算资源管理-计算资源优化实例❖ReduceSlowStart❖基于实际m/r的比值设置该参数❖资源更快的获得和释放,整体集群受益资源使用报告❖1年:1T=3000RMB,1CPU/1.5GMem=800RMB❖部门磁盘使用费用❖磁盘使用是没有时间范围的概念,最大值计算❖部门CPU/Mem使用费用❖cpu/mem使用要考虑task执行时间,面积计算!