一个 Blink 小白的成长之路

  • 时间:
  • 浏览:1
  • 来源:大发5分6合_大发5分6合官网

我我嘴笨 现在回过头再看,此时的内心是平静如水的。也有大获全胜后的傲娇,也也有退隐山林的怯懦。假如看待疑问的心态变了。那末翻不过的山,那末迈不过的坎。遇事不急躁,走好当下的每一步就好,假如必思考是对是错,以前每一步都算数,最后总能到达终点。

另1个多多一来,API而是能改造了,读的以前采用scan模式,把所有分片都读出来,过后 求和,共要把sum的工作转移到API端了。

另1个多多做的好地处于,一方面也能转移一要素计算压力,另一方面,以前rowKey只另1个多多,而亲戚朋友 写rowKey的任务(即sink节点)并发数以前有多个,Java开发者应该都深有体会,多守护tcp连接并发对另1个多多变量进行累加的以前,是也能加锁和释放锁的,会有性能损耗,也能猜测,hbase的写瓶颈就在于此。过后 的事实也证明,你这人 做法将输出RPS提升了不止另1个多多另1个多多档次。

数据倾斜我我嘴笨 有所以解法,这里我不展开讨论,只讲亲戚朋友 你这人 案例的解法。

倾斜的导致 ,无非假如group by的字段无缘无故 再次出现了热点,几滴 的消息都集中在了该字段少数好多个取值上。通常的解法是,在消息中取舍具备唯一性,以前预估会分布比较均匀的字段。以前你这人 字段是整型的,也能直接取模(模数一般是节点的并发数),以前是字符串,也能先进行哈希计算,再取模,得到另1个多多分片地址(本文取名为bucket_id)。在接下来的所有aggregate算子中,也有把他作为group by的key之一。

总结下来假如,按卖家维度,行业维度那此的,都非常容易无缘无故 再次出现数据倾斜。

上一段看下来,似乎只处理了数据倾斜的疑问。以前还提到另1个多多hbase写瓶颈疑问,你这人 该要怎样解呢?

笔者写文章习惯带某些有故事趣味性的章节在上边,以前我我嘴笨 纯讲技术,即使是技术人看起来也会相当乏味,再者纯讲技术的前提是作者具备真正透进骨髓去讲述的功底,笔者自认为还相差甚远,也能加点鱼目来混珠了。换个角度来看,纯技术性的文章,观赏性和权威性更强,每一句也有精华,你这人 咀嚼后的知识虽有营养饱满,过后 也有那末容易消化,消化也能吸收好多个,还有待确认。所以我力求展示我的咀嚼过程,更多是面向跟我一样的小白用户,以前我嘴笨 冗长,请各位读者姥爷见谅~

这里还想再延伸一下,讲讲我的学习最好的办法 。以前读者包含跟我一样的小白,以前会奇怪,同样是小白,要怎样会你那末秀,一上来就搞压测,还能准确地分挥发掉性能的瓶颈在哪里。我我嘴笨 有两方面的导致 ,一方面是我有过storm的开发经验,对实时计算中会遇到的坑还是有一定的认识;另一方面,是我没说出来的好多个个日日夜夜苦逼学习充电的故事。我的学习习惯是喜欢追根溯源,就找了所以介绍flink基本概念,发展历史,以及跟流式和批处理计算框架横向对比的各类博客。过后 带着kpi去学习和那此包袱都那末去学习,心态和学习时延单位是不一样的。前者我嘴笨 时延单位更高,过后 是以损害身心健康为代价的,以前学习过程中不可处理的会产生急躁情绪,过后 就会不可处理的加班,熬夜,咖啡,再过后 亲戚朋友 的好亲戚朋友 ,黑眼圈,豆豆,感冒就全来了。后者我嘴笨 轻松,过后 那此包袱都那末,反而会产生懈怠,那末压力就那末动力,这是人的天性,拗不过的。这假如矛盾的点,所以在阿里,无缘无故 提到“既要也要也能”,我我嘴笨 宣扬的是你这人 研究会平衡的价值观。至于要怎样会平衡,嘻嘻,天知地知我知。对,也能另一方去领悟要怎样会平衡,别人教不多再的。

hbase写瓶颈

当时我在调大source分片数,过后 也无脑调大了各个算子的资源以前,发现输出RPS还是上不去,sink节点也无缘无故 再次出现了消息积压。当时就判断,hbase有写瓶颈,你这人 我是无能为力了。过后 的事实证明我错了,hbase的确有写瓶颈,但导致 是亲戚朋友 写的姿势不对。至于该换那此姿势,请继续看下去。

事实上,我一过后开始想到的是用下面tips里的最好的办法 ,结果就杵进垃圾堆里了,性能疑问是解了,过后 计算出来的数据都翻倍了,明显是错的。至于我是要怎样会发现你这人 疑问,并分析其导致 ,再换了解法,又是另一段故事了。也能提前预告一下,是踩了blink撤回计算的坑,上边会再出另1个多多专题来讲述你这人 故事哒~

过后 把你这人 bucket_id层层传递下去,在每另1个多多也能group by的地方也有上边带上bucket_id,这类:

要找性能疑问出在哪儿,最好的最好的办法 假如压测。这里默认亲戚朋友 都对节点反压有一定的了解,不了解的请先移步典型的节点反压案例及解法。

在亲戚朋友 你这人 案例中,亲戚朋友 取舍了order_code你这人 具备唯一性的字段。首先在源头把分片地址算出来,加到消息上边,代码如下:

一过后开始是跟着大部队进行压测的,压测的结果是不通过!!!并肩参加压测的有三十多个项目组,就我被点名。双十一演练的初夜,就另1个多多伤心地流走了(╯°□°)╯︵ ┻━┻。西湖的水,也有我的泪啊。不过痛定思痛,我也是通过这次压测终于定位到了瓶颈在哪里。

还是接着上边的思路继续走下去,当亲戚朋友 把bucket_id一路传递下去,到了sink任务的以前,假设亲戚朋友 要按商家维度来统计单量,过后 别忘了,亲戚朋友 统计的结果还按订单号来分片了的,所以为了得到最终的统计值,还也能把所有分片下的值再sum一下才行,这共要也是大多数人能想到的常规做法。过后 亲戚朋友 现有的hbase rowKey设计,也是每个维度的统计数据对应另1个多多rowKey的,为了兼容现有的设计,也能在写hbase以前sum一下。

本文作者:王科,花名伏难,先后经历国内三大电商平台,苏宁,京东,阿里,电商大战角度参与者。现任职阿里巴巴供应链事业部,从事业务平台化改造、实时计算相关工作。信奉技术自由平等,希望通过简单形象的语言,打破上层建筑构建的知识壁垒,让天下那末难做的技术。

先来分析一下亲戚朋友 的数据形态学 (核心字段)

biz_date, order_code, seller_id, seller_layer, order_status, industry_id

过后 笔者当时突发奇想,偏偏要反其道而行之,让他不sum,对于rowKey,我也给它分个片,假如在另1个多多rowKey的基础上,上边再追加另1个多多bucket_id。就共要另1个多多写到另1个多多rowKey上的数据,现在把亲戚朋友 分散写到6另1个多多分片上了。

具体实现代码如下:

概念有了一定的认知,下面就过后开始实践了。整个实践的过程,我我嘴笨 假如在不断的试错。我是一过后开始连反压的概念都他不知道的,无缘无故 在无脑的调大CU,调大内存,调高并发数,调整每另1个多多节点之间的并发数比例。寄希望于另1个多多能处理疑问,结果当然是无论我要怎样会调,吞吐量也有都风雨不动安如山。现在想想还是太年轻呀,以前另1个多多简单的做法能处理疑问,那那个前辈就绝对不多再搞砸了,还轮的到我今天来处理。过后 也是在无尽的绝望中想通了,也能再那末无脑了,不多再再找某些最好的办法 。想到的假如在代码层面动刀子,当然试错的基本路线那末动摇,前面也提到过,我一过后开始是想到的“加盐”,也是在试错。

此时无声胜有声,送上几句名言,与诸君共勉

塞翁失马,焉知非福。---淮南子·人间训

一切过往,皆为序章。---阿里巴巴·行癫

学习就像跑步一样,每一步都算数。---百阿·南秋

亲戚朋友 group by的典型场景有

人事已尽,接下来假如关二爷的事了( ̄∇ ̄)。双十一零点倒计时过后开始,大屏数字过后开始飙升起来,随之并肩的,还有我的肾上腺素。再看看数据曲线,延迟正常,流量峰值达日常的10倍。我我嘴笨 结果完也有在预期之内的,以前从最后一次的压测表现来看,200W的输入峰值(日常的333倍),5W的输出峰值(日常的200倍),都能稳稳的扛下来。出于数(懒)据(癌)安(晚)全(期)的角度考虑,所以大屏和数据曲线的截图就不放出来了。

写过blink sql的同学应该也有体会,明明写的以前就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成。结果跑的以前,吞吐量假如上不去。导致 数据延迟高,消息严重积压,被业务方疯狂吐槽。这以前,老鸟就会告诉你,同学,该优化优化你的代码了,再丢过来另1个多多链接,过后 留下一脸懵逼的你。笔者假如那末过来的,希望本文能帮助到跟我有过同样困惑,现在还一筹莫展的同学。

先说一下相关背景吧,笔者作为另1个多多刚入职阿里的小白,还地处水土不服的阶段,就被临危受命,改造数据大屏。为那此说临危受命呢,首先是此时距双十一仅剩另1个多多月,再者,去年的双十一,你这人 大屏刚过零点就无缘无故 再次出现疑问,数据一动不动,好多个小时后过后开始恢复,但仍然延迟严重。此前,笔者仅有的实时计算开发经验是storm,用的是stream API,对于blink你这人 sql式的API完全没接触过。接到你这人 需求的以前,脑子里是懵的,灵魂三问来了,我是谁?我即将经历那此?我会死得有多惨?也有“此时此刻,非我莫属”的价值观唤醒了我,是老大的话语,在阿里,也有先让老板让他资源,你再证明你另一方,而你沒有先证明你另一方,再用结果赢得资源,一席话如醍醐灌顶。过后 就过后开始了一段有趣的故事~

tips: 以前在消息你这人 中找也能分布均匀的字段,也能考虑给每两根绳子 消息再加另1个多多时间戳,直接使用系统函数获取当前时间,过后 再对时间戳进行哈希取模计算,得到分片地址。共要强行在时间维度上对消息进行打散,你这人 做法也被形象的称为“加盐”。

学习最好的办法 决定了我做那此事,也有以前一次成功。甚至有所以情况报告,我明知道另1个多多做是错的,但我假如想弄明白为那此行不通,而故意去踩你这人 坑。不过也正是以前试了所以错,踩了所以坑,才梦见挖坟墓了更多的有价值的知识点,扩大了知识的边界。

数据倾斜

在做单量统计的以前,所以以前也有按商家维度,行业维度在做aggregate,按商家维度,不可处理会无缘无故 再次出现热点疑问。