3、涵盖技术:mysql、hadoop、hive、Spark、Flink、Kudu、Impala等…
推荐阅读:
★ 数据仓库专栏:数仓方法论、实战经验、面试真题(https://blog.csdn.net/weixin_39032019/category_8871528.html)
★ Python专栏:Python黑科技:爬虫、算法、小工具(https://blog.csdn.net/weixin_39032019/category_8974792.html)
★ 大数据面试专栏:面试真题、开发经验、调优策略(https://blog.csdn.net/weixin_39032019/category_11048805.html)
1)hadoop中的数据倾斜表现:
-
有一个多几个Reduce卡住,卡在99.99%,一直不能结束。
-
各种container报错OOM
-
异常的Reducer读写的数据量极大,至少远远超过其它正常的Reducer
-
伴随着数据倾斜,会出现任务被kill等各种诡异的表现。
2)hive中数据倾斜
一般都发生在Sql中group by和join on上,而且和数据逻辑绑定比较深。
3)Spark中的数据倾斜
Spark中的数据倾斜,包括Spark Streaming和Spark Sql,表现主要有下面几种:
-
Executor lost,OOM,Shuffle过程出错;
-
Driver OOM;
-
单个Executor执行时间特别久,整体任务卡在某个阶段不能结束;
-
正常运行的任务突然失败;
我们以Spark和Hive的使用场景为例。
他们在做数据运算的时候会涉及到,count distinct、group by、join on等操作,这些都会触发Shuffle动作。一旦触发Shuffle,所有相同key的值就会被拉到一个或几个Reducer节点上,容易发生单点计算问题,导致数据倾斜。
一般来说,数据倾斜原因有以下几方面:
1**)key分布不均匀**
2**)建表时考虑不周**
我们举一个例子,就说数据默认值的设计吧,假设我们有两张表:
user(用户信息表):userid,register_ip
ip(IP表):ip,register_user_cnt
这可能是两个不同的人开发的数据表。如果我们的数据规范不太完善的话,会出现一种情况:
user表中的register_ip字段,如果获取不到这个信息,我们默认为null;
但是在ip表中,我们在统计这个值的时候,为了方便,我们把获取不到ip的用户,统一认为他们的ip为0。
两边其实都没有错的,但是一旦我们做关联了,这个任务会在做关联的阶段,也就是sql的on的阶段卡死。
3**)业务数据激增**
比如订单场景,我们在某一天在北京和上海两个城市多了强力的推广,结果可能是这两个城市的订单量增长了10000%,其余城市的数据量不变。
然后我们要统计不同城市的订单情况,这样,一做group操作,可能直接就数据倾斜了。
很多数据倾斜的问题,都可以用和平台无关的方式解决,比如更好的数据预处理,异常值的过滤等。因此,解决数据倾斜的重点在于对数据设计和业务的理解,这两个搞清楚了,数据倾斜就解决了大部分了。
1**)业务逻辑**
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新