前言介绍
关于大数据面试岗位,经过近十多年的发展,对于大数据岗位的分工逐渐细化,从最开始的数据开发工程师,到拆分为离线开发和流计算开发,到拆分为基础组件开发、大数据运维、大数据产品等等一系列的细分岗位,这其中无疑是「大数据」的概念深入到各个行业领域,「数据」对于社会的发展和进步带来了实质性的作用,从大约2014年,2015年左右时间开始,移动互联网开始蓬勃发展,以数据为底座的各种移动应用百花齐发,面向C端群体的各种用户分析、行为预测、广告推荐以及基于算法+数据的内容推送平台都利用自身的数据采集技术,加上数据算法调度能力进行业务扩展。
整个大数据历史背景,就不多加赘述了,本篇作为专栏的开篇内容,更多的是站在一个全局者的角度,来观测整个大数据领域对于数据岗位的细分,一方面本专栏作为一个大数据面试专栏,需要读者朋友对于数据岗位有一个清晰的认识,才能够去选择切合自身需求与发展的岗位,另一方面目前市面上我还没有见过能够将整个大数据岗位能够清晰明确的描述出来的内容,那么不妨从我的角度来输出一下,虽然不能保障100%的完全正确,正如同大家对于DBA岗位的认知都是不同的,对于架构师岗位的认知也是不同的,但是从我工作近15年的研发经历,以及近10年的大数据研发经历来说,我觉得能够涵盖绝大部分的真实性,至少从读者的角度不会把人带偏方向。
大数据岗位介绍
为了让读者更直观、结构化的将内容有一个清晰的了解,我将大数据相关岗位进行了分类处理,基本上分为以下几类:
大数据研发类
大数据研发类下面可以具体划分为大数据离线研发、流计算研发工程师、数据仓库研发工程师、大数据架构师。
这里,离线研发和数仓研发对于很多人来说可能会有不明白的地方,直观来讲,离线研发主要做偏向于日志文件分析、数据爬取、数据清洗、从采集、分析、计算、调度都会涉及到,而数据仓库研发的话,更多是上层业务的数据建模、数据提取、数据模型建设等等,更多的是跟着具体某个业务的情况进行迭代。
大数据离线研发
工作职责:
负责处理批处理任务,适用于大规模数据的批量处理和分析。
管理和调度批处理作业,通常是通过定时任务或基于事件触发的方式。
所需技术栈:Hadoop-HDFS、Hadoop-Yarn、Spark、Flink、Hive、Hudi、Iceberg。其中Hudi、Iceberg数据湖场景是当下及未来的趋势
入门难易度:入门较为复杂,需要掌握很多大数据周边组件,比如调度相关、数据采集相关,但核心需要掌握的是上面这几个。
发展前景:常青树,基本上是随着大数据技术迭代而发展的,而且对于大数据技术掌握程度不需要太深厚,对于其它岗位横向发展路径比较宽
并且,对于技术转型来说,更具有竞争力,一方面是大数据技术掌握足够宽泛,另一方面对于业务场景应用以及调优有一定经验,可以考虑做技术咨询、大数据相关售前、解决方案,如果对于某一个组件足够精通,可以加入背后具有商业化公司支撑的开源社区,做一名远程开发者。
流计算研发工程师
工作职责:
基础技术栈:Hadoop-HDFS、Hadoop-Yarn、Spark、Flink、Kafka/Pulsar/RabbitMQ、HBase/Clickhouse
入门难易度:入门难度高,相比离线研发来说,流计算对于服务保障要求更高一些,基本要求是7*24不间断运行的
发展前景:常青树,对于流计算掌握比较好的话,基本上也能具备离线计算的能力,二者的底层基础组件基本也是相通的。
数据仓库研发
工作职责:
基础技术栈:Hive、Mysql、Spark、Flink、数仓建模
入门难易度:入门较低,数据仓库相比其它大数据研发岗位来说,门槛相对低一些,但是市场需求量更高一些,天花板相对较低。
发展前景:发展空间有限,如果随着经验增长没有更多其它技能傍身的话,那么就不太容易找到新的机会。职业后期大多会转型业务方向、数据运营方向、数据分析方向,或者对于技术有追求的会转向数据挖掘。
大数据架构师
工作职责:
-
对大部分的大数据组件都能涉猎,能够根据不同的业务场景进行组件选型
-
具备大数据组件调优能力,在组件遇到瓶颈问题或者集群异常时能够进行排障处理
-
研究前沿大数据组件能力,持续赋能业务进行降本增效
基础技术栈:离线/流计算方向组件基本都会掌握,如果是数仓架构师,那么对于数仓建模原理也会掌握,组件丰富度更高一些,能够根据不同的场景进行不同组件的选型
入门难易度:无法入门,需要经过时间历练
发展前景:天花板较高,上升可以转管理、下沉可以做研发,横向扩展可以做业务方向、技术解决方案、产品经理等,大部分架构师会转型管理或者产品方向,对某个行业领域足够熟悉的话,可能会转做售前或者解决方案架构师。
数据平台类
大数据平台研发方向内部其实也包含了离线计算和流计算,所谓平台,其实本质上来说就是将原本需要一系列的脚本化的功能,抽象为一个可视化的功能,研发人员在实现一个计算作业的时候,不需要从零去构建作业代码,也不需要手动配置调度、数据采集等等,直接在平台上进行点击操作即可,这里最为典型的就是阿里云的DataWorks、腾讯的WeData以及数据中台部门所做的核心工作。
但是,平台的离线计算和流计算的研发不同于大数据业务类的研发,他们更聚焦于代码的抽象和任务性能问题,比如离线计算中的算子(函数)会被抽象为平台的算子,可以通过拖拽的方式组合为一个具有业务逻辑的实现,这些保存后台其实就是一个DAG的关系,只不过在运行时候,离线计算Spark/Flink会解析这些算子关系,然后一一转义为可运行的程序。而业务类的离线计算,更多的是针对具体某个功能进行开发,是实打实的编写具体的业务逻辑实现。
那么从这里可知道,平台类的离线和流计算研发对于代码水平、组件掌握程度会更高一些,并且对于常见的优化手段、资源分配策略、自动调优方式等等都要有所擅长,笔者有幸这两者都经历过,平台研发对大数据程序员的锻炼和成长会更大一些,它不会为了实现一个功能做实现,更多的还要考虑扩展性、稳定性、性能,并且业务逻辑各式各样,对于代码稳定性是一个大的考验。
所以,大数据平台研发类里面的很多大数据角色,都是要求对具体某个组件有深入掌控能力的,并且有时候一个组件可能就需要一个团队来维护,比如离线计算可能是一个独立部门(3-5人),流计算研发(3-5人),数据采集(3-5人)数据调度(3-5人)等等,他们只负责这一两个组件的维护。
大数据平台研发类可以具体为以下几个:
大数据平台研发
工作职责:
-
核心工作是作为平台后端研发,为平台的前端系统提供API接口。
-
对接底层各个数据组件的接口交互,将大数据组件功能进行可视化。
-
对接产品需求,根据产品需求文档/PRD设计进行功能开发
基础技术栈:SpringBoot、Java、Mysql、Redis
入门难易度:简单
发展前景:
- 前景较好,在熟悉掌握Java编程之后,可以有机会接触到大数据相关组件,掌握更多的大数据组件对于自己职业发展来说会多一种可能性。并且作为平台研发入门相对简单
离线计算研发 & 流计算研发
工作职责:
-
负责深入Spark/Flink的组件原理,能够将算子能力包装为系统能力。
-
二次开发的能力,当组件本身不满足产品/客户的需求,能够进行二次开发。
-
能够和社区结合,调研跟进组件未来规划,将其能力补充到产品能力中。
基础技术栈:Java/Scala、Spark/Flink、Hadoop、Kafka/Pulsar
入门难易度:较难
发展前景:常青树,基本上对于某一个组件能够深入了解和掌握之后,就能够养活自己未来几年的职业发展,当然这里要认识到一点很重要,要学会掌握底层能力,如果底层能力掌握不够扎实,你也无法达到对组件本身深入了解的能力,如果达到了某一个组件深入了解之后,其实你也可以横向的掌握其它组件,这里大家要认识到一个概念就是底层知识是通用的,掌握底层技能之后,才能够一通百通。
任务调度研发
工作职责:
-
负责大数据核心组件任务调度系统的研发。
-
不断优化、改进任务调度系统的性能问题,能够承接更多的算子构建。
-
根据产品&业务需求,完成相关功能的迭代开发。
基础技术栈:
-
掌握市面上常见开源任务调度系统架构设计,比如Oozie、Airflow、Dolphinscheduler等等
-
熟悉大数据相关组件,比如Spark、Kafka、Flink、Hadoop等
-
熟悉相关开发语言,比如Java、Scala、Python等。
入门难易度:
- 相对较难
发展前景:
-
常青树,任务调度系统是技术所有大数据作业所必须的一套系统,大部分的稍微有点规模的企业都会有一套任务调度系统,可能是自研的,也可能是利用开源系统构建的,这里其实对于整个任务调度以及复杂逻辑的抽象能力要求比较高一些,任务调度想象起来可能比较简单,但是实现细节相当复杂,它需要维护各种的中间复杂状态,以及各种工作流引擎的适配工作。
-
我身边有不少一直在做任务调度方向的同事,至少持续了7,8年的时间,而且还在一直不断迭代系统,如果这里能够参与到开源能力建设的话,则是一个很大的加分项。
数据采集研发
工作职责:
-
负责大数据核心组件数据采集系统的研发
-
需要熟悉市面上大多数主流数据采集组件的原理和应用,对底层有比较清楚的认识
-
能够根据产品&业务需求,完成相关功能的开发和迭代
-
不断优化,改进数据采集系统的性能问题,能够承接更多样的数据采集方式
基础技术栈:
- Hadoop、FlinkCDC、Spark、Kafka等
入门难易度:
- 入门易、深入难
发展前景:
-
普遍来说,一般般,主要在于数据采集系统大多数业务场景是不会有太多变化的,这是采集系统简单普通的地方,难点在于:1. 一些大汽车或者AI、车联网类似相关企业数据来说,数据的格式是多样的,这对于数据采集来说是一个难点。2. 实时采集其实是一个比较有挑战性的事情,需要考虑到众多因素在里面,比如数据一致性问题、数据容错问题、资源占用问题等等 。3. 采集+ETL操作,很多数据中台类的产品其实都具备采集过程中对于数据做一些简单的清洗和转化,这样当入库时就是相对比较标准的数据,而且有些还要做一些FORMAT操作,这些对于采集也是具有挑战性的问题。
-
如果你在目前是专职做数据采集工作的话,建议就多参与开源社区,争取成为某一个顶级项目的commiter。同理,和任务调度上面一样的话,掌握底层核心技能,才能横向做技术迁移。
大数据运维工程师
工作职责:
-
负责大数据集群的日常运维保障、问题处理工作。
-
负责大数据集群的硬件选型、组件配置、相关组件安装/部署工作。
-
构建大数据整体的监控运维体系,能够做到预警、告警、日志采集、自动化处理等等
基础技术栈:
Hadoop、Spark、Flink等大多数大数据组件都要连接,另外加Prometheus、Grafana。
入门难易度:
较难,一般是由业务运维或者系统运维转过去的。
发展前景:
常青树,基本一个完善的团队是有研发、测试、运维来组成的,也有一些中小企业,可能研发负责了运维、测试工作,特别是对于大数据类的业务来说,有些小公司可能大数据团队就3-5人,包含了产品、运维、测试等等各个角色担当,另外一些大企业或者中大型规模的集群来说,是需要一个运维团队来支撑的,这里硬件故障、机器故障、内核故障、组件故障等等都需要专业人员去操作。
运维相对是一个不太轻松的工作,出现问题要第一时间响应,哪怕是半夜两三点,很是苦逼,所以如果熬不住的话,就不太建议往这个方向发展,年纪大了扛不住。
大数据基础架构工程师
工作职责:
-
负责核心组件的维护、调优、二次开发工作
-
能够根据业务形态,给出比较合理的最佳实践应用。
-
对于底层原理、操作系统、核心应用掌握的比较熟练。
-
当组件遇到故障问题时,能够快速找到根因,并进行相关问题处理。
基础技术栈:
- 基本上有Spark、Flink、HDFS、Yarn方面的技术专家角色来担任,比如可能就一直负责Yarn一个组件或者HDFS一个组件。
入门难易度:
- 较难,需要对一个组件很深入了解,基本上会是开源社区commiter或者pmc的角色。
发展前景:
- 常青树,一些中大型企业比如京东、阿里、字节、小米,小红书等等都有专门负责某一个组件的专家团队,用来针对这个组件进行深入研究。有些做基础架构方向的人,可能近10年都在专攻一个方向,比如我所看到的很多在MQ方向就做了十几年,对Kafka、Pulsar、RabbitMQ等中间件都很熟悉。这种人一般都比较有工匠精神。
大数据产品经理
工作职责:
-
负责产品功能设计,能够将客户需求转换为产品标准化功能。
-
能够连接、协调不同职能部门的工作,解决产品形态问题。
-
能够对外收集客户/业务需求,解答客户/业务问题,完善产品功能。
-
调研竞品分析,规划产品未来迭代趋势。
基础技术栈:
- 需要对大数据组件有所了解,知道大体的原理。
入门难易度:
- 相对较简单。
发展前景:
-
常青树,大数据产品经理岗位在大数据平台里是一个比较重要的角色,有些比较大一些的平台,可能一个系统就有一两个产品经理来维护,比如离线计算、流计算可能就有一两个产品经理,调度系统可能也有对应的产品经理。
-
产品经理大多数事从大数据研发转来的,对大数据技术有所了解,有一定的技术背景,并且有一定的沟通协作能力的人。
大数据测试工程师
工作职责:
-
负责大数据平台的测试工作,根据产品需求整理出测试case。
-
大数据作业的测试,对大数据组件进行压力测试,评估整体性能。
-
设计和编写测试用例,进行功能测试、性能测试、安全测试等。
-
管控产品线上预期,能够进行开发和维护自动化测试脚本。
基础技术栈:
-
熟悉大数据生态的核心组件,比如Hadoop、Spark、Flink、Kafka等
-
熟悉常用的测试工具和框架,比如JUnit、JMeter等。
入门难易度:
- 相对容易
发展前景:
-
测试工程师也是伴随着研发岗位一起的,有些测试工程师也会转为研发工程师或者产品经理的角色,所以横向的职业发展空间是比较大的
-
另外,也可以深入研究测试研发领域,这样就不仅仅限于做大数据方向,其他业务方面,哪怕底层基础架构方向也可以尝试去做的。
三、数据科学方向
工作职责:
-
负责数据的收集、整合、清洗处理等操作
-
使用统计学&数据工具,对数据进行探索、理解数据的特征辅助业务发展
-
能够根据数据展示成果预测未来发展趋势和潜在机会或者潜在风险。
基础技术栈:
-
常用的编程语言:python、R、SQL语言
-
对大数据组件Spark、Flink、Hadoop有一定了解
-
统计学或者数学相关专业,能够理解各种统计学方法和模型
-
熟悉统计学相关工具:Pandas、Numpy、Dask、Tableau等等。
入门难易度:
- 较难,一般都是博士或者研究生领域
发展前景:
比较广阔,在数据越来越重要的当下时代,数据科学家岗位是很多大企业中不可或缺的角色,一般数据科学家也有跨学科融合、业务整合的能力,并且大多数数据科学家是能够推动企业使用数据驱动决策的,并且针对数据诊断出的业务问题具有很大的参考性。
四、大数据业务方向
数据分析师
工作职责:
-
使用统计方法和数据分析工具,对数据进行可视化分析。
-
能够结合数据模式、趋势、状态给出相关的业务分析报告。
-
能够使用可视化工具比如Tableau、PowerBI进行可视化图表输出能力。
-
能够根据数据分析结果,协助公司指定业务策略和营销计划。
基础技术栈:
-
编程工具:python、R、SQL、Excel
-
可视化工具:Tableau、PowerBI、Pandas
入门难易度:
- 入门相对简单
发展前景:
-
常青树,发展前景比较广阔,数据分析师是距离业务比较近的,具备一定的数据思维,并且对业务也有一定的了解,能够给出日报、周报、月报等分析报告的结果,甚至说能够根据结果给到业务一些建议来支撑。
-
很多COO的岗位都是从数据分析师岗位成长起来的。
数据治理工程师
工作职责:
-
负责公司内部数据质量管理,包括数据标准制定、数据安全、数据规范等等
-
参与设计数据架构的设计和优化,管理数据生命周期
-
跨部门协调数据治理工作,确保各个部门的数据使用规范性
基础技术栈:
-
有些数据治理是偏向于业务的,可能只需要掌握基本SQL使用、Python使用,行业数据规范等即可。
-
有些是偏向于技术的,比如整个业务数据清洗逻辑、数据格式规范等,需要对大数据组件有些大体了解。
入门难易度:
入门容易,深入较难,数据治理不是一个很容易做的工作,硬性技术门槛并不是很高,但是对于软性技能(沟通、协调)的能力要求会高一些,通俗来说,就是拿着一线工资干着总监的事情,需要给不同业务线出数据规范的要求,还要不断矫正数据质量,chuchu
发展前景:
五、大数据售前&解决方案方向
工作职责:
-
了解客户需求,与客户进行沟通、了解客户的业务需求痛点、项目背景、技术架构等。
-
对客户现有的数据架构、业务流程有一定的了解,并整理和分析客户需求。
-
能够根据客户需求制定解决方案,能够搭配客户场景进行技术选型,确保方案可行性。
基础技术栈:
-
对大数据基础框架能够熟练掌握,知道底层的核心原理是什么。
-
对于常用的大数据组件知道其使用场景,比如Spark、Flink、HBase、Hive、Doris、StarRocks、Clickhouse、ES等等
-
对大数据技术有一个全局观,不需要每个精通,但是需要根据业务场景制定合理的解决方案。
入门难易度:
-
相对较难,大多数都是大数据架构师岗位转型过去的,想要从事一线工作,能够距离业务更近一些,或者说为了切换到业务角色。
-
相对来说,业务岗位会比技术岗位更容易出结果,更容易晋升,更容易成长起来。
-
企业内部的高管,负责技术的可能只有CTO,但是其它CIO、COO、CEO等等各种C“X”O都是业务成长起来的。
发展前景:
- 比较广阔,能够接触到技术、业务、管理等各个维度的工作,对于有技术背景的人转型过去会更容易一些,向上可以晋升为CTO或者COO、CIO岗位,向下也可以兼容架构师岗位。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。