大数据开发轻量级入门方案

2022-01-10 14:10:10 浏览数 (1)

Hi,我是小萝卜算子!

经过这么多年的发展,大数据的技术正处于群雄逐鹿阶段 ,面对这么多技术框架,我们得学会做减法。

还记得我转行大数据时,只学了hadoop和hive,非常简单,差不多一周的时间,就可以出去面试了,边面试边改进,最后找到不错的工作。那个时候大部分企业用的还是1.X版本的hadoop,正逐渐的升级到hadoop2.X。

当时可以很容易的转型,一大部分原因是大数据的技术还没有普及,需要学的框架也不多。

现在再看网友给提供的一些大数据学习路线,很全很棒,但同时也被吓尿了有木有?

(图片来自网络-图片太大,传上来有点糊了) 各种组件五花八门,需要学的东西太多了,而我们的精力又不足够把这么多组件学好,再加上大数据方向经过这些年的发展,各家企业在生产上踩过很多坑,面试的深度也更深了,这就加大了转型的难度。

那有没有一种轻量级入门大数据的方案呢?——答案是肯定的!

先来分析一下大数据开发的工种,大体有三种:

基础组件的优化和开发

这一块偏底层,职位名称可能是【大数据开发】、【大数据开发-XX方向(比如:数据湖、流式计算等)】或者其他的什么命名,具体要看职位描述和技能要求。

主要做的事情:

  • Olap引擎优化——比如sparksql新feature开发,源码bug修复、clickhouse二次开发优化等;
  • 存储系统研发——分布式块存储 、文件存储、冷存储等方向,对硬件IO等技术深度有一定的要求;
  • 流式计算——Flink等实时框架的二次开发及优化;
  • … …

下面这个是内推职位【大数据开发-流式计算方向】的技能要求,感受一下:

1、对流式计算系统有深入的了解,在生产环境有TB级别Flink实时计算系统开发经验,深入掌握Flink DataStream、FlinkSQL、Flink Checkpoint、Flink State等模块,有Flink源码阅读经验优先,有二次开发经验请在简历显著位置标注;2、熟悉常见消息队列原理和应用调优,有Kafka、Plusar、RocketMQ等项目源码阅读经验优先; 3、熟悉Java、C 、Scala、Python等编程语言,有强悍的编码和 trouble-shooting 能力; 4、乐于挑战没有明显答案的问题,对新技术有强烈的学习热情,有PB级别数据处理经验加分; 5、有数据湖开发经验,熟悉Hudi、Iceberg、DeltaLake等至少一项数据湖技术,有源码阅读经验优先; 6、熟悉其他大数据系统经验者优先,YARN、K8S、Spark、SparkSQL、Kudu等; 7、有存储系统经验加分,HBase、Casscandra、RocksDB等。

不同的方向会有不同的侧重,总体上对源码阅读且二次开发的经验和能力有要求。

面向用户的数据产品套件开发

这一块偏系统开发,比如现在比较火的数据治理N件套:数据地图、数据质量管理、指标体系管理、调度系统、埋点管理等一系列web产品的后端研发。

职位名称可能是【大数据开发工程师】、【大数据开发套件服务端工程师】等,主要还是看职位描述和技能要求。

因为这个方向都是大数据类的产品,所以要求比一般的web类开发高一些,要懂数仓建模、大数据的框架原理等,但不会像【基础组件开发】那样有必须读过源码、二次开发这些硬核要求。

下面这个是内推职位【大数据开发套件工程师】的技能要求,感受一下:

1、精通java/scala语言,包括JVM、类装载、线程、并发、IO资源管理、网络 ;2、精通SOA架构和微服务架构 ,对可扩展性、稳定性、性能、质量有特别的执着,若有高可用、高性能 Web 实践经验更佳;3、掌握 Web 后端开发技术: 协议、架构、存储、缓存、搜索、安全、消息队列等;4、熟悉数据仓库实施方法论,深入了解数据仓库体系,并支撑过实际业务场景优先;5、有 IDE 开发经验者优先考虑;6、熟悉前端技术的全栈开发工程师优先;7、熟悉hadoop ecosystem常用开源框架者优先,例如hadoop/flink/spark等。

这个就要求要有三方面的能力:

  • Web开发架构
  • 要了解数仓相关的知识——毕竟做的产品大部分都是数仓相关的同学在使用
  • 大数据组件的能力——这些产品要和大数据相关组件交互,比如做任务血缘、字段血缘

数仓开发

数仓开发常被人称为sql boy/sql girl,和业务关系比较密切了,主要的工作是ETL,做报表、看板等支持业务看数的需求,对数仓建模理论和实践要求较高,技术上的要求是懂原理,重要是使用的熟练程度和sql的调优技能。

职位名称可能是【大数据开发工程师】、【数据开发工程师】、【数仓开发工程师】】等,主要也还是看职位描述和技能要求。

下面这个是内推职位【数仓开发工程师】的技能要求,感受一下:

1、精通数据仓库实施方法论、深入了解数据仓库体系,并支撑过实际业务场景;2、熟悉Hadoop架构和工作原理,精通MapReduce编程;精通Hive,有HQL优化经验;精通spark、flink开发;3、熟练使用JAVA,python等编程语言一种或多种多种编程技术,编程能力强;4、具备海量复杂数据处理及优化的能力,能对遇到的技术挑战进行解决;5、善于沟通,对业务敏感,能快速理解业务背景,具备优秀的技术与业务结合能力。

可以看到数仓这块,偏向对业务敏感,对数据敏感,这是为了能更好的和业务结合。

经过上面的分析,结论是:

技术深度要求:【数仓开发】<【面向用户的数据产品套件开发】<【基础组件的优化和开发】

业务能力要求:【数仓开发】>【面向用户的数据产品套件开发】>【基础组件的优化和开发】

而在面试时,业务能力是很难考察的,所以如果想转入大数据开发领域,选择【数仓开发】是个捷径。如果特别想做更底层的开发,也可以选择从【数仓开发】切入,先接触,再曲线救国。

那么【数仓开发】需要学啥?

1、会一门基础语言:java/python/scala 【非必须】

Java or python or scala 这三个是or的关系,只用会一种就行;

如果是java相关开发转大数据,那实在是太容易了,这一项就可以略过了;

如果实在是没有语言基础,也实在是不想学,其实也没关系,我周边就有好多同事没有程序开发语言的基础,照样也能把数仓做好

2、分布式存储及调度理论【必须】

hdfs、yarn的理论要理解且熟记,这些对于学习spark 或者hive 以及sql的优化是最最基础的知识。

3、sql 框架要会一个:spark sql/hive sql 【必须】

如果对hive和spark都不懂的话,那就选择学spark,现在离线数仓越来越多的公司切spark了。

Spark 相关主要学习spark core 和spark sql;

要求sql要写的熟练,调优参数及原理,能懂一些源码就更好了。

4、数仓建模、分层理论【必须】

这个是数仓的方法论,是一定要掌握的,理论都在《维度建模权威指南-kimball》这本书里,好书是好书,看起来比较枯燥,在看的时候多思考,结合自己正在做的业务,想象一下如果要为现在的业务划分主题该怎么划、业务矩阵该怎么设计等等,大胆想象就ok。

5、其它需要了解【非必须】

大数据相关的架构理论、olap、数据湖等等,知道越多越好,不需要太深入,主要作用是帮助理解大数据的那一套东西;网上的其它公司数仓的架构是啥样子,要知道架构里每个组件的作用是啥。

还有一些其它的框架组件:kafka、presto、druid、flink 等了解,写个demo跑跑,知道流程就可。

数仓开发日常用到的核心技能就是上面【2】、【3】、【4】,如果搞的扎实,其它的软技能是加分项。我们在准备时,可以把精力集中在这几项上,要学就学个透,不要懂一大堆框架,但哪个都经不起问,这样是最头疼的。

好啦,这一篇主要是提供了一个轻量级的方案,下一篇从面试的角度讨论一下针对这个方案我们该怎么学、学什么、学到什么程度。

0 人点赞