专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

如何基于Spark和ZOrder实现企业级离线数仓降本提效?

  01hrSpark企业级离线数仓面临的痛点
  企业级数仓类的任务基本以ETL类型为主,典型的读取多张表的数据经过一系列SQL算子转换后写到一张表。那么除了在性能上Spark3已经有了充分的保障,剩下的使用痛点集中在了写这个环节。Hive和Spark2在写这个环节也存在很多问题,比如小文件文件倾斜,数据压缩率不理想,动态分区写难以优化。针对这些问题,下面我们逐个分析当前的状况,并给出新的解决方案。
  小文件文件倾斜
  传统的解决方案是在SQL后面增加一个DISTRIBUTEBYcolumns,这本质上是增加一次额外的Shuffle来对数据重新分区,产出的文件质量强依赖于这个Shuffle字段,然而在大部分场景中,数据倾斜是必然的,这造成了部分计算分区需要处理特别大的数据量,不仅带来文件倾斜问题,在性能上也会拖累整个任务完成时间。
  对执行引擎有一定了解的同学可能会用非常hack方式来优化DISTRIBUTEBYrand()files,但是这无论是我们内部已经复现的rand()导致数据不一致,还是Spark社区抛出来的问题:RepartitionStageretriescouldleadtoincorrectdata,都足以证明这是一个有缺陷的方案,可能会导致数据不一致,我们应当避免这种使用方式。
  除此之外,一些有经验的同学会通过取模的方式来调整倾斜的数据,比如DISTRIBUTEBYcolumn100,column。这是一种可行的解决方案,但存在几个缺陷:
  1)存在优化上限;通过优化调试很难判断最佳的取模范围,只能给一个相对可以接受的优化结果
  2)有很大的优化代价;需要非常了解字段的数据分布情况,再经过不断调试验证最终找到较为合理的值
  3)维护成本比较高;可能过1个月,数据发生了一些变化,那么之前优化的取模值就变得不合理
  数据压缩率不理想
  传统的解决方案是在SQL后面增加一个SORTBYcolumn,这本质上是在写之前增加一次分区内的排序来提高数据压缩率。或者结合Shuffle增加DISTRIBUTEBYcolumnsSORTBYcolumns让相同数据落到一个分区后再做局部排序进一步提高数据压缩率。那么问题来了,首先这也绕不过小文件文件倾斜的问题,这里就不再重复。其次传统的字典排序不能很好的保留多维场景下数据的聚集分布,这里的多维在数仓场景下可以理解成多字段。而优秀的数据聚集分布可以在查询阶段提高数据文件的DataSkipping比例。我们目前大部分任务都只考虑任务本身的性能,需要逐渐重视下游任务查询的性能,从而形成一个良好的循环。
  动态分区写场景难以优化
  动态分区一般出现在写大表的任务,单天的数据量往往超过1TB,当然从业务角度出发这是合理的,拆分区后下游任务查询非常灵活高效。但是动态分区类的任务本身优化就非常麻烦,自带小文件问题,压缩率不高,加上数据量大,这简直就是强强联合。而且仔细思考一下就可以发现,动态分区场景下,小文件和压缩率其实是互斥的,如果以尽可能少的文件数优先,那么我们需要考虑用分区字段作为Shuffle和排序字段,让相同分区数据落到一个计算分区内,但是压缩率高低却取决于其他数据字段,造成低压缩率现象。而如果以压缩率优先,那么我们需要考虑数据字段作为Shuffle和排序字段,但此时相同分区数据会落到不同计算分区,产生大量小文件。
  面对这一系列问题,我们基于Spark3ZOrder提出了以下这些解决方案,并且已经在线上环境取得了非常好的效果。
  02hrRebalanceZOrder
  2。1方案介绍
  ZOrder是一种可以将多维数据压缩到一维的技术,在时空索引以及图像方面使用较广。Z曲线可以以一条无限长的一维曲线填充任意维度的空间,对于数据库的一条数据来说,我们可以将其多个要排序的字段看作是数据的多个维度,z曲线可以通过一定的规则将多维数据映射到一维数据上,构建zvalue进而可以基于该一维数据进行排序。
  基于最经典的使用方式DISTRIBUTEBYSORTBY,我们提出了新一代的优化方案REBALANCEZOrder。REBALANCE可以在尽可能满足DISTRIBUTEBY语义的情况下同时解决小文件文件倾斜问题。这里用尽可能满足这个词是因为,文件倾斜本质上是由于计算分区倾斜导致,那么我们把倾斜分区拆成多个的同时也就破坏了DISTRIBUTEBY语义,当然这不影响数准确性,也不会带来其他问题。基于ZOrder算法的排序替换了默认的字典排序,允许在多维场景下继续保留多维数据的聚集分布,在提高压缩率的同时可以加速下游任务的查询性能。
  RebalanceZOrder
  上图展示了RebalanceZOrder运作原理,涉及表的上游任务以及下游任务。首先Rebalance以Shuffle的形式存在,并在Shuffle读阶段做分区的拆分和合并,保证每个Reduce分区处理相同规模的数据量。基于ZOrder的DataSkipping优化强依赖于文件格式,我们知道Parquet和ORC这类主流的列式存储格式会在写数据的同时记录数据的统计信息,比如Parquet默认会以RowGroup粒度记录字段的minmax值,在查询这个文件的过程中,我们会把被PushDown的谓语条件和这些统计值做对比,如果不满足条件那么我们可以直接Skip这个RowGroup甚至整个文件,避免拉取无效的数据,这就是DataSkipping过程。
  2。2案例分析
  落地到具体任务中,可以进行从Spark2升级到Spark3再做ZOrder优化的操作。
  Spark2Spark3
  在实际操作中,由于引入了一次Shuffle,任务会多一个Stage,但执行时间却大幅度缩短。这是因为原本的任务在最后一个Stage存在数据膨胀和严重倾斜的情况,导致单个计算分区处理的数据量非常大。经过Rebalance后,额外的Stage把膨胀的数据打散,并且解决了倾斜问题,最终得到了4倍性能提升。不过此时出现了另一个问题,数据压缩率下降了,计算分区内的数据膨胀倾斜虽然跑的慢,反而有着较高的压缩率。
  Spark3ZOrder
  为了解决压缩率的问题,我们增加了ZOrder优化,可以看到压缩率提升了12倍,对比Spark2时期的任务也有近25的提升。而且由于IO下降,计算性能也没有因为多一次ZOrder变慢。从而实现同时治理任务性能,小文件以及数据压缩率的目标。
  03hrTwoPhaseRebalanceZOrder
  3。1方案介绍
  前面我们提到过,动态分区场景下小文件和数据压缩率其实是互斥的,但是显然相比于在业务层面的优化,我们还是有很大的空间在引擎层面同时改善这两个痛点。我们提出了TwoPhaseRebalanceZOrder,以压缩率优先的前提下尽可能减少小文件。
  TwoPhaseRebalance
  如上图,整个流程分由2阶段RebalanceZOrder组成,第一阶段的Rebalance我们采用动态分区字段,目的是把文件数降到最低,但是此时压缩率是不高的,第二阶段的Rebalance采用动态分区字段ZOrder字段,保证输出最大的压缩率,最后通过ZOrder完成分区内的排序。这里可能有同学会问,为什么第二阶段Rebalance不会产生小文件?这是由于AQEShuffleRead在拆分Reduce分区过程中继承了Map顺序性,也就是说Redcue分区拉取到的Map一定是连续的,而我们在第一阶段Rebalance后,连续的Map意味着他们拥有相同的分区值,所以我们可以实现尽可能的避免小文件产生。
  3。2案例分析
  对比图
  上图展示了一个任务从手动优化切换到ZOrder优化的效果,手动优化也是采用前面提到的DISTRIBUTEBYSORTBY结合取模的方式,当然手动优化前的任务更加惨不忍睹。TwoPhaseRebalanceZOrder优化后,压缩率相比手动优化提升近13,相比原始任务提升近8倍,文件数相比手动优化下降近3倍,相比原始任务下降近14倍。与此同时,任务计算性能也有近15的提升。
  04hrTwoPhaseRebalanceZOrderZstd
  4。1方案介绍
  TwoPhaseRebalanceZOrder已经满足了优化的需求,但是由于相比手动优化会多一次Shuffle,导致任务过程中的Shuffle数据量会增加。这是临时数据,在任务结束后会自动清理,但如果我们本地磁盘冗余不够,也会出现存储空间不足的问题。因此我们引入了更高压缩率的算法Zstd,在尽可能减少对任务性能影响的前提下减少Shuffle过程数据量。
  4。2案例分析
  在具体案例中,两种压缩算法有一些区别,Zstd相比于默认的Lz4节省近60Shuffle数据,并且测试下来无明显性能影响,这是由于IO大幅度减少弥补了额外的cpu耗时。未来,我们的团队也会针对Zstd做更多的推广优化。
  05hr小结
  本文介绍了我们基于Spark3ZOrder对于企业级离线数仓类任务的优化方案,初步解决了当前在迁移和在历史使用Spark的痛点。过程中也有一些体会和感悟:没有一种技术方案可以完美解决所有的问题,但我们也要尽力去找到那个需要妥协的点,而在此之前,优化空间是巨大的。
  专家简介
  尤夕多
  网易数帆大数据离线技术专家,ApacheKyuubiPMCmember,ApacheSparkContributor。
  来源:微信公众号:网易有数
  出处:https:mp。weixin。qq。coms?bizMzIwNTUxNTI1Ngmid2247489132idx1sn54a2767955d10ccb04bc420d3f55cd9d

名导尤小刚64岁后连生两个儿子,三婚与小妻子幸福吗?点击关注,每天都有名人故事感动您!尤小刚与妻子周庭伊著名导演尤小刚的情感生活,与他执导的电视剧一样曲折催泪。他离过两次婚,第一任前妻是北京电视台著名主持人田歌,第二任前妻是知名女星见证历史时刻?里根号进入战斗位置,辽宁山东舰直面美军3艘航母最新消息表明,目前佩洛西的专机已经降落在了马来西亚吉隆坡雪邦国际机场,正式开始对马来西亚的访问。根据台媒的消息,佩洛西有可能会在今晚十点半左右抵达台北,按照吉隆坡飞台北约5个小时的晚节不保?李立群已停更半个月,回台发表不当言论,说要死守台湾上海解封后,李立群回到台湾与妻子团聚,并且分享了自己在台湾的日常生活。每次发视频,都能获得几十万点赞,粉丝数量已经从最初的100万出头,涨到了现在的940万。回到台湾后,李立群接受佩洛西这三十六小时,或是改变世界的三十六小时本文首发策辩,作者授权推送佩洛西或许从来没有像现在这样红过。不仅座机被全网围观。比如其专机一降落新加坡巴耶利峇空军基地,就被网友截图公开8月1日凌晨4点20分降落。或许像她这样即将厦航数十个航班因流控调整,部分东南沿海航线绕飞内陆今日一早,厦门航空官网发布消息称,受福建地区流量控制影响,厦航对8月2日部分航班进行调整。记者查阅厦航的航班更新信息发现,截至今日中午11点,厦航已有30个航班因为流量控制进行了调清华夺冠,网友却一边倒支持亚军,京哨背后有多少傲慢偏激?清华夺冠,却遍地亲儿子的挖苦,中国纯粹的篮球需要更多掌声CUBA,2022赛季的比赛,昨天落下帷幕。清华大学战胜广东工业大学,获得三连冠。比赛很精彩,球员很努力。在漫天广工虽败犹荣双台风纷纷秃头,南方高温压不住了!超级计算机广东福建等除外8月1日上午,从风云四号高清可见光卫星云图上看,今天随着台风桑达和台风翠丝继续活动,西太平洋和我国东部海区仍然有着大量云团活动,但也可以看到的是,今天我国我国中东部秦岭淮河南北都已福建厦门绝色美女汪丽萍离开红楼的日子(1)从厦门红楼里走出来的绝色美女汪丽萍,她那清澈明亮的瞳孔,弯弯的柳眉,长长的睫毛微微地颤动着,白皙无瑕的皮肤透出淡淡红粉,薄薄的双唇如玫瑰花瓣娇嫩欲滴,虽然这时的汪丽萍容颜未改,但是福建宝宝出生3天就命悬一线,协和医院医生修复心脏上的水管出生3天就被查出,心脏主肺动脉完全搭反,还伴有房缺,卵圆孔未闭等问题,让这名女娃小琦(化名)一出生便一脚踏进了鬼门关。但出生15天后的心脏手术,成功让她的心脏复原。专家提醒,福建每台媒台军急派8架幻影战机进驻台东紧盯佩洛西专机航线周边解放军军机动态台空军急派8架幻影战机进驻台东。(图片取自台媒)中国台湾网8月2日讯据台湾中时新闻网报道,美国众议院议长佩洛西率民主党众议员等6人今晚(2日)将搭乘专机抵台窜访。据了解,佩洛西的专向佩洛西发警告!台媒解放军双航母驶出基地,前进目标台湾海峡尽管中方已经多次表达了自己的态度,提出最为严重的警告,在美国国内,也有许多人提出了劝告,但是佩洛西坚持窜访台岛,已传出在8月2日晚到访的消息,现在成了佩洛西窜访台岛敏感时刻,形势已
以诗言志彭德怀不为人熟知的另一面文春紫彭德怀元帅是一位声名显赫的革命家军事家,鲜为人知的是他还有许多诗作。他的诗作大多完成在戎马倥偬之中甚至得之于弹雨纷飞的前线指挥所,有的则写成于社会主义革命和建设时期。彭德怀是这届新排长,不一般文石芝鹏黄霖陈凌潇龚浩图姚龙添郑圣腾田晓龙新排长虽然干龄新但能力素质却相当老练近日东哥走进第73集团军新干部集训队发现刚毕业的新排长个个顶呱呱请看郑圣腾2018年入伍的郑圣腾综合素实事求是文字更正9月25日A11版从钱君匋想到印边文学一文(编辑刘晨校对凌淑琴)第19段第6行,己经应为已经。9月30日深圳大件事B04版老人倒卧路边综合执法队暖心救助一文(编辑李斌校对刘中央气象台本轮冷空气基本结束气温将回升南部海区有大风央广网北京10月11日消息(记者黄玉玲)记者从中央气象台获悉,目前,冷空气对我国陆地的影响基本结束,未来我国大部地区的气温将呈现回升的趋势。不过,受冷空气影响,我国东海南部及南海海桐庐快递商帮往事被资本和科技洗牌的通达系创业家中国快递版图,半壁江山是桐庐人打下的。曾几何时,在中国快递行业前八大快递公司中,桐庐人创立的快递企业占了六家(申通圆通中通汇通韵达天天)。1993年成立的申通是桐庐系快递老大哥。2为什么很多华为老用户,换新手机不再考虑华为了?三点原因太真实随着华为Mate50上市的一系列令人匪夷所思的营销操作,好像现在越来越多华为老用户,开始逐渐的脱离华为队列,大脑门认为主要是这三点原因。高端机型售价配不上手机的功能和配置以华为P5快递小哥有了新身份南京组建金陵应急骑士队伍龙虎网讯(记者史骏摄影朱熹通讯员华宁)为进一步推进民生实事项目落地落实,充分调度多方力量参与突发事件应急处置,9月29日,南京市举行金陵应急骑士签约仪式,市应急管理局与北京三快在线1小时最高10元!共享充电宝企业却还在亏损,钱被谁赚走了?共享充电宝终于也成了价格刺客。曾经每小时收费0。5元的共享充电宝,如今在部分点位已涨到4元至8元,最高甚至达每小时10元。不过,共享充电宝价格一路飙涨背后,定价权却不掌握在企业手里天气转凉,常给家人吃这菜,香辣入味,解馋开胃,顿顿吃光盘十月之后,我们终于迎来寒冷的天气,最近天气非常凉爽,身体都特别虚弱,需要及时提供营养。如果家里人的胃口很差,平常吃山珍海味吃腻了,不要总是吃猪肉,不如试试这道开胃菜豆皮金针菇煲,这降温了,建议常吃八款家常菜,暖心暖胃又暖身,贴秋膘提高抵抗力大家好这里是香姐说美食,每天分享好吃的家常菜。这两天降温了,你们都开始贴秋膘了吗?今天推荐八款家常菜,适合这个秋天贴秋膘,暖心暖胃又暖身,日常可以常吃,提高抵抗力防寒。下面我们一起参加广西农村婚宴,长桌宴一摆,不用随礼连吃3天,会不会太爽了前段时间大学同学在广西贺州老家举行婚礼,刚好赶上国庆假期小编也去凑了凑热闹。同学是瑶族人,当地的婚宴习俗可是让北方长大的小编长见识了,长桌宴一摆连吃3天,竟然还不用随礼,大发!婚礼
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网