今天不学技术了,今天说一下最近一段时间对大数据的几种岗位的观察。希望通过这篇文章能让大家知道自己想去什么岗位,该准备什么,未来的工作是什么样。
1.数仓开发
数仓开发分离线和实时,大数据开发中最常见的岗位,具体工作可以看之前的文章。
总结一下就是:
- 熟悉业务逻辑;
- 使用大数据组件;
- 分层建模。
需要的技能大概是:
- SQL;
- 数仓建模;
- 离线的话 Hive、Spark 的原理以及调优,数据倾斜处理;
- 实时的话 Flink 的原理;
- MapReduce 原理。
- 对业务敏感。
简单来说就是 SQL boy。
2.数据产品套件开发
公司一般都要给数据研发同学提供一站式数据开发平台。比如操作 Hive 或者 HDFS,是在开源的组件里那种难用的黑框框里写 SQL 或者 Shell 脚本吗?No!公司都有一站式数据开发平台,具体内容是:
- 开发数据研发同学需要的开发工具,统一的前端页面,可以对 SQL 进行语法校验、格式化代码等功能,让数仓的同学开发更轻松;
- 能够可视化 CPU、内存等资源的使用情况。
- 开发数据可视化的工具(BI 工具)。
需要的技能大概是:
- Java、Scala 语言,包括 JVM、类装载、线程、并发、IO资源管理、网络 ;
- 微服务架构;
- Web 后端技术栈;
- 熟悉数仓开发流程(知道数仓开发的同学要用到什么,才能开发出好的一站式开发套件);
- 熟悉 hadoop / flink / spark 等。
类似于 Java 后端开发。我之前面过众安保险的大数据开发,大概就是这种。面试时问了工作内容,面试官说是开发大数据平台给用户使用。可以看面经:
3.基础组件开发
大公司一般不会把开源框架直接来使用,一般是会二次开发,实现一些定制化功能,比如
- 把 ClickHouse 魔改一下突破性能瓶颈;
- 对 Flink 二次开发优化;
- 开发新的大数据存储系统、查询系统。
上面只是举例,具体就不一一枚举了,需要的技能大概是:
- 熟悉 Flink、Spark 等一种或多种大数据组件的原理和源码;
- Java、Scala、C++ 等编程语言要熟练;
- 存储系统经验等;
- 设计模式。
可能类似于 java 中间件开发?或者基础设施开发。
4.测试
数仓开发的 SQL 也是有 测试人员写 case 测试的,测试完才能上线。要求和数仓开发差不多,但要会测试相关的知识。
5.总结
各种岗位平时也有合作:
- 【数仓开发】使用数据产品套件 → 有疑问或出 bug → 咨询【数据产品套件开发】;
- 【数仓开发】使用 Spark 等框架 → 有疑问或出 bug → 咨询【基础组件开发】;
- 大数据任务都是晚上 0 点开始运行 → 出问题 → 值夜班同学一起解决。
技术深度要求:【数仓开发】 < 【数据产品套件开发】 < 【基础组件的优化和开发】。
业务能力要求:【数仓开发】 > 【数据产品套件开发】 > 【基础组件的优化和开发】。
技术没有好坏,只有合不合适,分享一段别人对我说过的话:
看个人喜好吧,有人喜欢做业务,有人喜欢做基础架构。如果抛开个人喜好:
业务:
- 好的地方在于比较实际,更贴近一线,后期发展更好点(领导大多是做业务技术出身的)。
- 不好的地方在于要看运气,如果碰上快速发展的业务,能够快速成长。如果业务不咋地,可能就进步缓慢。
基础:
- 好的地方在于技术方面的成长比较快。
- 不好的地方在于后期发展受限,如果没有技术上特牛逼,可能就是个高级别员工了。
这些只是我基于我们部门观察的结果,可能不同部门不同公司情况就很大不同,仅供参考。
上面的观点只是参考,有的公司看重技术,有的公司看重业务,不同公司不一样,甚至一个公司不同部门都不一样。不过多学习才是真的。被多个面试官问过的问题:最近在看什么书?这里推荐两本:
- 《大数据之路》
- 《数据密集型应用系统设计》,豆瓣 9.7 分。
根据自己想做数仓开发还是基础组件开发选择吧。关注公众号回复 802 和 805 获取 pdf。