什么是数据程师,主要做些什么,数据⼯程师的学习路线?最近发现⾝边有不少⼩伙伴想转⾏做数据⼯程师,聊天的过程中发现⼤家对该如何⼊门有很多迷茫的地⽅,周末写篇博客记录⼀下。
哪些⼈适合继续阅读
数据⼯程师该如何⼊门?话题有点⼤,⽽且每个⼈的理解都很不⼀样,因此我们会先限定⼀下会对这个话题感兴趣的⼈:
做了⼏年其它软件开发,发现⼤数据⽅向更有前景
在校的童鞋,毕业后想搞数据开发,但是学校没相关课程u盘有写保护怎么办
没搞过软件开发,对之前的⼯作没信⼼想搞互联⽹,发现⼤数据⽅向挺不错
本⽂结构
前⾯已经限定了⼀个⼤致的话题范围,下⾯介绍⼀下主要的⽂章结构:
数据⼯程师的⽇常⼯作,或者是什么是数据⼯程师
数据⼯程师需要具备什么技能,该怎么学
想要在⼤数据这个领域汲取养分,让⾃⼰壮⼤成长。分享⽅向,⾏动以前先分享下⼀个⼤数据交流分享资源
870=097==548,欢迎想学习,想转⾏的,进阶中你加⼊学习。孟子一共有几篇
0x01 数据⼯程师的技能树
1. 什么是数据⼯程师
数据⼯程师这个概念其实很模糊,不同的⼈和公司对它赋予的含义也区别很⼤,感兴趣的可以看⼀下多智时代的相关⽂章。在这⾥,我们⼤概聊⼀下⼀般意义上的数据⼯程师在⼯作中会做什么?
集运维:安装、测试、运维各种⼤数据组件
数据开发:细分⼀点的话会有ETL⼯程师、数据仓库⼯程师等
数据系统开发:偏重Web系统开发,⽐如报表系统、推荐系统等
这⾥⾯有很多内容其实是⼗分重合的,下⾯⼤致聊⼀下每⼀块内容⼤致需要学什么,以及侧重点。
2. 集运维
数据⼯程师,基本上是离不开集搭建,⽐如hadoop、Spark、Kafka,不要指望有专门的运维帮你搞定,新组件的引⼊⼀般都要⾃⼰来动⼿的。
因此这就要求数据⼯程师了解各种⼤数据的组件。
由于要⾃⼰的安装各种开源的组件,就要求数据⼯程师要具备的能⼒: Linux 。要对Linux⽐较熟悉,能各种⾃⼰折腾着玩。
由于现在的⼤数据⽣态系统基本上是 JVM 系的,因此在语⾔上,就不要犹豫了,JVM系的Java和Scala基本上跑不掉,Java基本上要学的很深,Scala就看情况了。
3. ETL
明月出天山下一句
ETL 在⼤数据领域主要体现在各种数据流的处理。这⼀块⼀⽅⾯体现在对⼀些组件的了解上,⽐如Sqoop、Flume、Kafka、Spark、MapReduce;另⼀⽅⾯就是编程语⾔的需要,Java、Shell和Sql是基本功。
4. 系统开发
我们⼤部分的价值最后都会由系统来体现,⽐如报表系统和推荐系统。因此就要求有⼀定的系统开发能⼒,最常⽤的就是 Java Web 这⼀套了,当然Python也是挺⽅便的。
需要注意的是,⼀般数据开发跑不掉的就是各种提数据的需求,很多是临时和定制的需求,这种情况下, Sql 就跑不掉了,⽼⽼实实学⼀下Sql很必要。
0x02 如何⼊门
前⾯提到了⼀些数据⼯程师会⽤到的技能树,下⾯给⼀个⼊门的建议,完全个⼈意见。
1. 了解⾏业情况
刚开始⼀定要了解清楚⾃⼰和⾏业的情况,很多⼈根本就分不清招聘信息中的⼤数据和数据挖掘的区别就说⾃⼰要转⾏,其实是很不负责的。不要总是赶热点,反正我就是经常被鄙视做什么⼤数据开发太Low,做数据就要做数据挖掘,不然永远都是⽔货。
2. 选择学习途径中秋节简单图片
如果真是清楚⾃⼰明确地想转数据开发了,要考虑⼀下⾃⼰的时间和精⼒,能拿出来多少时间,⽽且在学习的时候最好有⼈能多指点下,不然太容易⾛弯路了。
在选择具体的学习途径时,要慎重⼀点,有⼏个选择:
⾃学
报班
⼈指点
别的不说了,报班是可以考虑的,不要全指望报个辅导班就能带你上天,但是可以靠他帮你梳理思路。如果有专业从事这⼀⾏的⼈多帮帮的话,是最好的。不⼀定是技术好,主要是可沟通性强。
3. 学习路线
学习路线,下⾯是⼀个⼤致的建议:
第⼀阶段
先具备⼀定的Linux和Java的基础,不⼀定要特别深,先能玩起来,Linux的话能⾃⼰执⾏各种操作,Java能写点⼩程序。这些事为搭建Hadoop环境做准备。
学习Hadoop,学会搭建单机版的Hadoop,然后是分布式的Hadoop,写⼀些MR的程序。
接着学学Hadoop⽣态系统的其它⼤数据组件,⽐如Spark、Hive、Hbase,尝试去搭建然后跑⼀些官⽹的Demo。
Linux、Java、各种组件都有⼀些基础后,要有⼀些项⽬⽅⾯的实践,这时候⼀些成功案例,⽐如搜搜各种视频教程中如何搞⼀个推荐系统,把⾃⼰学到的⽤起来。
第⼆阶段
到这⾥是⼀个基本的阶段了,⼤致对数据开发有⼀些了解了。接着要有⼀些有意思内容可以选学。
数据仓库体系:如何搞数据分层,数据仓库体系该如何建设,可以有⼀些⼤致的了解。
⽤户画像和特征⼯程:这⼀部分越早了解越好。
新的一天开始了
经典歌词大全⼀些系统的实现思路:⽐如调度系统、元数据系统、推荐系统这些系统如何实现。
第三阶段
下⾯要有⼀些细分的领域需要深⼊进⾏,看⼯作和兴趣来选择⼀些来深⼊进⾏
分布式理论:⽐如Gossip、DHT、Paxo这些构成了各种分布式系统的底层协议和算法,还是要学⼀下的。数据挖掘算法:算法是要学的,但是不⼀定纯理论,在分布式环境中实现算法,本⾝就是⼀个⼤的挑战。各种系统的源码学习:⽐如Hadoop、Spark、Kafka的源码,想深⼊搞⼤数据,源码跑不掉。
希望⼤家在数据⼯程的道路上,能够越⾛越远,为中华数据事业,添砖加⽡,促进⼤数据时代,早⽇到来