你为什么从后端开发(JAVA/golang)转到大数据开发(Hadoop/Spark)?

[复制链接]
kubbs.net 发表于 2023-10-3 19:49:01|来自:中国 | 显示全部楼层 |阅读模式
你为什么从后端开发(JAVA/golang)转到大数据开发(Hadoop/Spark)?
全部回复5 显示全部楼层
kino 发表于 2023-10-3 19:49:41|来自:中国 | 显示全部楼层
个人简介: 南方一所211的计算机专业硕士,大数据从入门学习,实习到今天刚好一年半的时间,刚在杭州某未上市的互联网大厂实习结束,实习岗位是数据研发工程师!
志同道合的小伙伴可以进入大数据交流群一起学习 :763068478
为什么选择大数据


竞争的程度相对小

  • 比普通后端开发和算法岗竞争小,目前大部分应届生首选的都是从事后端开发,所以每年春招和秋招的时候真的存在一些岗位神仙打架的情况,一些后端岗位的投录比高的吓人,而大数据开发岗位是15年左右才开始热门起来的岗位,相对来说竞争比较小,而且因为学校比较少有对应专业的应届生,所以缺口还是比较大的。(最明显的是目前XX跳动的秋招到今天后端基本都招满了,但是大数据的很多秋招岗位还有缺口)。
  • 最重要的,也是一个最实际的问题:每一个行业当人很多的时候门槛就会越来越高,那在第一关筛选简历的时候很多时候都是简单粗暴直接从学历开始筛,所以今年有一些学校还不错的同学卷后端出现简历练初筛都没有通过,反而比他学校略差的同学投递非后端岗位都过了初筛。
  • 其次大数据开发的收入待遇也处于普通后端开发和算法岗之间,或者最低保证也是和后端待遇持平;
就业方向选择多
大数据专业未来就业有几个方向,看你是往工程方向走还是往数据分析方向走。 工程方面会有数据仓库开发和数据平台开发两类。

  • 数据仓库处于技术与业务之间。
  • 数据平台开发会处于技术底层。
  • 数据分析会离业务最近。
---------------------------------------分割线---------------------------------------
下面主要是针对有意入门大数据行业的应届生,提出一些个人的经验以及建议,避免像我一路摸爬滚打过来走了不少的弯路。 现在很多人都会在互联网上寻找一些学习的资料,但是很多资料的质量其实远没有达到我们的预期,尤其主次不分明,讲得不够精华,这对于我们刚要入门的小白来说非常不利。这么多资料一下子全学基本都只能懂得一些皮毛,而且还比较浪费时间。那时候刚入门的时候,我相信很多人都有这样的想法,如果有一个人给我画个重点那是多么好啊。 所以今天我希望我可以成为一个去年自己期待的那个指路人,能为正在迷茫的你们带来一点帮助。
学习和面试时间线

学习时间线
其实整个学校时间线可以分为两部分学习和实习:

  • 大概花3-6个月的时间进行学习大数据的相关知识点,并且中间要多刷算法题和顺带刷一点SQL题;
  • 如果在有时间的基础上,可以考虑两段实习;如果时间不允许的话,其实一段实习也足够了;
第一段实习的时间:对于三年制的研究生,最好在研二第1学期,对于本科生来说,最好是 在大三的第1学期(对于本科生可能有点难度)。主要原因,这段时间的实习比较好找,因为大部分实习生都返校,大厂这时候空出来比较多的岗位,需求量也有,竞争也会比较小;可以比较低的成本进入公司,而且这一段实习主要是为了积累项目经验,为春招拿到更好的offer做铺垫;
第二段实习的时间:最好在研二第2学期到暑假这段时间,对于本科生来说,最好是在大三的第2学期到暑假,(能早点去实习就早点去,因为早点去实习后,有时间准备提前批)春招一般都是过完年之后大概半个月就会拉开帷幕,所以也就是金三银四,所以三月和四月就是我们真正检验学习成果的时候了。有一份好的春招实习对于你后面拿正式offer会有很大的帮助,比如:


    • 直接在实习公司秋招答辩转正
    • 拿到春招offer,假如没有去实习,部分公司可以在提前批的时候直通终面
    • 大厂背景会在秋招面试的时候发挥出比较大的作用,尤其筛选简历

3.秋招提前批今年从6月下旬就开始一直到8月左右,一定要抓住提前批去面一面,提前批其实和常规批的面试难度差不多,不过竞争小很多,因为这时候很多人才刚开始实习,还在适应实习的工作环境。而且提前批的投递不影响正式批,也就是你会多了一次投递或者面试的机会
4. 秋招正式批,一般是从8月上旬左右开始,这时候就要开始各种笔试和面试了,在这里提醒能在提前批面试尽量在提前批面试,因为正式批投递的人数远远大于提前批,竞争人数应该会上升一个倍数,因为这时候所有实习和非实习的都全身心投入到正式批中去了;

面试大体内容
因为面试过去的时间比较久了,有一些问题忘了,只记录了一些自己记得的大体部分,大体都是2-3轮技术面+1轮HR面,其中一面和二面会问一些基础和项目,第三面一般都是比较偏项目和思维的考察;可能也是比较幸运,自己在春招和秋招面过的岗位基本都能挺好最后一轮,也基本都拿到意向(包括蚂蚁,腾讯,京东,快手,网易,科大讯飞等等),秋招因为实习完感觉还不错直接转正了并且也拿了鹅厂的提前批意向书,也就没有投递了,直接躺平。所以面试基本都是春招的时候为主。

大数据的学习路线
基础篇

  • (★★★★)作为一个计算机从业者,首先必须具备相应的计算机基础知识,包括

    • 操作系统知识
    • 计算机网络知识
    • 数据结构及算法
    • 数据库基本知识
    • Linux常用命令

  • (★★★★)语言基础,必须要熟练一门语言,大数据主要使用的编程语言是Java,Scala以及SQL,不仅要会用,而且要知其所以然:

    • Java语言,JVM虚拟机, 线程,集合等
    • Scala语言
    • SQL语言以及基本调优,主要是Hive SQL


大数据篇



  • (★★★★★) 大数据入门Hadoop生态体系,主要掌握分布式数据处理,存储的思想,以及会写一些简单的MR任务:

    • Hadoop生态圈的全貌
    • MR,Yarn,HDFS的工作过程
    • Zookeeper架构以及原理
    • 数据采集的对应框架Sqoop,Flume;
    • 任务平台Oozie和Azkaban,主要是了解工作原理;

  • (★★★★★)数据仓库建模方法理论,以及OneData方法论:

    • E-R建模理论
    • 维度建模理论
    • DataVault建模理论

  • (★★★★★)离线数据处理,主要围绕Hive,Spark的学习

    • Hive的基本架构以及工作流程
    • Hive的基本调优
    • Spark的基本架构以及工作流程
    • Spark的基本调优
    • 数据倾斜的处理

  • (★★★★) 实时数据处理,主要围绕Spark Streaming和Flink进行学习

    • Spark streaming的基本架构以及工作流程
    • Spark streaming的基本调优
    • Flink的基本架构以及工作流程
    • Flink的基本调优
    • Hbase的基本架构
    • Kafka消息队列

  • (★★★) 数据治理

    • 元数据管理
    • 数据质量监控
    • 数据存储治理
    • 数据计算治理

  • (★★★★★)算法与SQL:

    • Leetcode热门100题
    • 牛客在线编程热门100题(基本覆盖了面试的时候遇到的70%-80%的题目)
    • 剑指offer的67题
    • leetcode的SQL练习


资料推荐



1.视频资料
推荐B站最新的尚硅谷大数据视频,但是不需要全看,可以根据上面的学习框架进行筛选的看
然后跟着做一些项目,个人比较推荐做一个数据仓库的项目和一个实时的项目,这样简历的丰富度比较好,如果还不清楚,需要进一步细化,可以加群交流 :763068478, 因为每个人的背景和情况都不一样,没办法做一个通用的推荐;
2.面试资料
因为学完上面的知识之后,想要拿到好的实习或者秋招offer还是离不开面试的,并且面试其实是有一些前人的知识可以总结和沉淀的。在这一路学习以来以及大半年的实习过程中,我也不断做一些大数据的笔记以及在总结每一场面试的共同点以及常出现的知识点,包括我们到职场之后,在大数据这个领域摸爬滚打需要的基础知识,我都做了总结,基本这份资料从入门到现在一共花了一年半的时间整理出来的,包括实习期间学习到的一些建模理论。基本能涵盖绝大部分的大数据面试问题,同时也依靠这个过程整理出来的这份资料在春招和秋招中拿到了不错的offer。



最后放一张卑微打工人的身份照
benben82 发表于 2023-10-3 19:50:09|来自:中国 | 显示全部楼层
我是从java后端开发转到大数据开发的,现在回想一下,当初转方向的原因如下:
1、趁风口,有机会加入互联行业。
那时在传统行业做java开发,一直想加入互联网行业,但是很难,一直在寻找突破口。正好大数据刚火起来不久,真正有经验人的很少,大数据在招人方面 要求还没那么严格。 然后就果断转了,最后,经过坎坷努力,加入自认为还不错的互联网公司。
2、大数据开发待遇总体level比java后端开发要好一些。
做java后端开发,记得当时薪资是9k,当时老板说已经很高了,不能再高了; 转了大数据之后,第一份工作13k,还入门级别的,当然现在待遇是更好一些了,毕竟物价也在涨。
3、做java后端开发转大数据 更有优势。
还记得当时hadoop还是hadoop1版本,学了不到两周,就出去找工作了。能学这么快,完全是因为有java后端开发的功底。再加上后来,自己研究hadoop源码,hive源码,包括现在的spark sql,flink sql源码调试,都是与之前的java开发功底分不开的。
最后,我想说,如果想尝试一件事,just do it, 趁年轻!
稍息立正 发表于 2023-10-3 19:50:29|来自:中国 | 显示全部楼层
-------再更新2021年3月13日----------
目前,很多同学应该在找2021年的暑假实习了,但是很多人咨询我关于简历上的项目该怎么办?
我这里系统回答一下:
无论何种项目,突出能力为主,尽可能表现你的知识深度,适当突出广度。
简历上的项目一般分为以下几类:(你的项目是哪一类,请打在评论区,可以简单描述你的项目,我会定期对项目进行评价,共同进步)
1、伪实战项目(最多人用):本质就是培训班项目,比如秒杀系统、订单系统、大数据分析项目等等,说白了,只是在功能上进行复现,距离真正的企业实战还有一定差距。但是,可以体现自己的学习内容,对于框架或组件的深入理解,比如你用到了dubbo,那么你知道了dubbo底层原理或源码,也是非常优秀的,项目就得到了升华,建议是少谈业务,多聊底层技术,这样显示你的深度。
2、实习项目(鲜有人有):有些同学在实习期间做的项目,这是真正的实战项目,但是人在少数能够有这个经历。如果你有的话,建议朝实战方面封装,比如JVM调优、GC调优、并发量或者实际遇到的并发问题,并发锁的使用等等。
3、比赛项目(部分同学有):做了一些天池、中间件比赛,也是很优秀的。突出比赛难度和你自己的贡献,用比赛数据说话、描述请比赛流程,如何攻克其中的难点,提高了成绩等等。
4、实验室弱相关的项目(部分同学有):实验室做的项目可能和你的职位不太相关,但是也可以体现能力,比如:我之前实验室用linux做了一个项目,虽然和大数据关系不是那么大,但是能够突出linux一些技能和计算机消息队列等方面,我就封装了下,面试下来发现效果还不错,因为这个项目在实验室中是真正运行起来的,属于国家重点项目,说起来有底气。
5、写一个框架作为项目(难度较大):难度大且有点重复造轮子的嫌疑,但是你能写出一个框架的部分功能,说明你的能力是有,比如实现一个RPC框架,一般面试官对这种项目还是很感兴趣,并且面试官可以从写的框架展开提问,也许一个框架就可以占据面试的60%的时间。
6、参加开源项目(难度更大):在开源项目中做过贡献,比如Apache旗下的热门项目中提交过代码,这是非常值得炫耀的,另外面试官也会被深深吸引,这就是你和竞争对手的差距,你的独特之处,面试官就会记住你。
最近也准备好好搞下公众号,感兴趣的同学,去搜TALKDATA,去关注,满满的干货,如果不是干货,随时取关,佛系发帖,随缘点赞。
-------更新2020年7月18日----------
下面学习经验更新了一些内容,书籍讲解链接,记得看!
来知乎很长时间了,这个回答收到的赞最多了,今天想更新下说几点:
1、这个帖子下本来是有群号码的,但有人说是软广,我就去掉了,下面说的资料想自取,看我主页自己加(两个群加起来快3000多人了,觉得是软广就不要加了);
2、个人看法:这个时代“软广”真的是错误吗?高质量“白piao”真的有吗?我只想说高质量的付出也是希望获得一定的利益吧,人总要生存。
3、这个贴子,官方曾主动邀请加入广告,我拒绝了,我觉的这个广告我不懂,我也不想为了一点广告费,误导认同我的人,不信看下图


-------更新2020年3月31日----------
以下是我的个人学习经历,由于每个人学历、学习时间和能力不一样,不能完全复制。
Java后端本身也是一个非常好的方向,我本身是非科班出身,所以想走不一样的道路,转行到大数据开发。
咨询较多的问题统一回复:
Java后端开发和大数据开发怎么选?
以下是个人建议:
1、我是非科班转行大数据,学了大概1年多,最终也拿到一些大数据或者后端的offer(因为大数据开发岗位少,所以为了降低风险,就多准备了一些后端的知识),但是我的路线不能完全复制,要根据自身情况,比如学历、学习能力、时间安排等等原因;
2、如果你的学习时间不充分,只是想去互联网找一份工资较高的工作,目前(2020)来看,走后端开发比较合适,岗位多、需求大;
3、如果你对大数据技术感兴趣,想走一条不同的技术路线,可以走大数据开发,但是学习成本和求职难度是相对后端较高
4、未来发展主要看个人是否会持续学习,谁也无法预知。
当转行大数据开发的时候,就看到这个帖子,那时候我也是很迷茫,经过1年多的学习,现在的我应该可以回答这个问题了。
一、笔者背景

1、本科阶段
专业自动化,主要学习C语言、嵌入式、硬件等,拿过电设、飞思卡尔等国奖,没刷过算法、对软件几乎零基础
2、研究生阶段
硕士985,控制专业,研一开始,从零基础学习了Java基础、算法、大数据框架等。
3、收获offer
春招实习拿到了蚂蚁金服、拼多多、华为(终端)、远景能源、华泰证券(Java)等。


4、已入职
工作方向:数据中台,大数据开发等
二、我为什么转行大数据开发

从转行到面试全过程视频讲述:
https://www.bilibili.com/video/av691422601、大家都选择Java开发,那我有什么优势?
当我决定转行时,身边的同学几乎都是Java,但是我想走一个与众不同的路线,当时可以选择算法或者大数据开发,感觉算法岗应该是神仙打架,而且一堆公式看不懂,所以最终选择了大数据开发,因为这个岗位既要学Java基础,也要学大数据框架,虽然学的比较多,但是,就算大数据学的不理想,也可以直接转向Java开发岗,两手准备,最后事实证明,我选择大数据开发是对的,当然中间也经历了痛苦和迷茫,差点放弃。
2、未来的职业规划
如果做Java的话,每天可能是针对不同的业务CURD,这样感觉好无聊啊,于是,希望做一些有挑战性的工作,比如组件优化、中间件、流计算、大数据存储等工作,所以,希望未来工作是少一些业务、多一些技术,这样可以帮助我技术提升和积累,未来技术路线走的更加长远。
3、未来是DATA时代
网上很多人说:互联网的后半程应该是数据时代,谁掌握数据,谁就能创造价值。我暂且相信了这句话,数据时代需要什么技术人才呢?数据可靠存储、数据计算、数据挖掘等等,感觉大数据开发还是有未来的。
三、学习计划与过程



如何制定学习计划、准备简历和项目的视频讲述:
https://www.bilibili.com/video/av698034201、第一阶段:深入Java体系
(1)Java语法基础:跟着毕向东老师的视频敲了一遍,看了《Java核心技术卷I》和《Java编程思想》(Java书籍重点标注:《Java编程思想》_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)这两本书,刚开始看编程思想是有点难度的,不懂的地方标记出来,后面学了一段时间,回过头再看,这样的话,Java的语法基础基本过关;
(2)数据库:看了《MySQL必知必会》,学会了sql语法,刷了几十到牛客上SQL题目(https://www.nowcoder.com/ta/sql ),最后看了《MySQL技术内幕:InnoDB 存储引擎》(https://www.bilibili.com/video/BV1CJ411t7Ku)中的索引部分(有点难),数据库基本过关;
(3)JVM和并发:开始学习《深入理解java虚拟机》(https://www.bilibili.com/video/BV1yE411R7co)、《Java高并发程序设计》(https://www.bilibili.com/video/BV1ZE411S79m)这两本书,刚开始看,真心不知道再讲什么,但当后面学了多了,看了一些源码后,再看就明白了,前期看不懂是正常的;
(4)计算机基础:毕竟非科班,需要看的挺多的,看了《现代操作系统》(【Java后端和大数据开发面试书籍】:《计算机网络:自顶向下方法》:HTTP/TCP/UDP/IP等重点讲解_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)、《图解TCP/IP》,重点掌握了一些关于内存、IO、TCP/IP、HTTP等方面的知识;
(5)Linux部分:看了《鸟哥Linux私房菜:基础篇》,然后自己装个Linux,练习指令操作,多多总结常见指令。
(6)缓存:看了《Redis设计与实现》(https://www.bilibili.com/video/BV1WE411f7fo) 和《Redis深度历险》两本书,缓存基本过关;
(7)源码:推荐学习Java集合和并发包的部分源码,面试必问;
(8)架构:推荐看下《大型网站技术架构》,扩展自己的知识广度。
2、分水岭第二阶段:需要选择是Java后端还是大数据开发了
Java后端方向:要开始学习Spring框架那一套了,并做一个后端的项目,深入理解数据库、缓存、并发、spring底层等原理,在项目中体现这些基础,面试时可以表现出你学习的深度,不只是会用。
大数据开发方向:开始学习hadoop全家桶、spark、storm等流计算,下面第3点重点讲述。
3、第三阶段:深入大数据体系
(1)入门:个人感觉视频入门最快,我看了一个关于大数据组件的介绍、安装和使用的视频课程,了解了大数据中各个组件是干嘛的,视频需要的话,联系我。
(2)Hadoop原理:先后看了《Hadoop权威指南》(https://www.bilibili.com/video/BV1DE411r7Fn)、《Hadoop技术内幕:Yarn》(推荐看博客http://dongxicheng.org )、《HBase权威指南》,掌握了hadoop中的Mapreduce、YARN、HBASE、HDFS、Hive的基本原理;
(3)流计算:先后看了《Spark大数据处理技术》(https://www.bilibili.com/video/BV1pJ411W7P5)、《Storm分布式实时计算模式》和Flink官网介绍,分析了三者的优点和缺点,学了他们的计算调度原理、容错机制、语义等方面;
(4)分布式协议:主要学了《从paxos到zookeeper分布式一致性协议》(https://www.bilibili.com/video/BV1EJ411L7AU) 这本书,并根据网上博客学习Raft协议,将这些协议进行总结,并对zk进行深入学习;
(5)深入源码:我选择深入的是HDFS源码,结合《Hadoop 2.X HDFS源码剖析》书籍,看了大概3个月左右,中途看到怀疑人生,甚至想放弃大数据了,还好坚持了下来。也可以选择其他源码,只要是用Java写的就好。
(6)消息队列:这个对于Java后端的同学也是需要的,我主要学习时Kafka,根据网上总结一些常见面试题,看了官网的介绍,基本可以应付面试;
4、第四阶段:简历、算法与项目
【终于把项目讲明白了】如何封装简历上的项目?推荐必看
https://www.bilibili.com/video/BV1EE411T7HF
【终于把简历讲明白了】好简历就该这样写!如何写出有亮点的简历!
https://www.bilibili.com/video/BV1XE411P7s8
我自己大概花了2个月,完成了一个大数据项目,根据网上的视频学的,自己封装了一下,效果还可以的,这个项目已经开源了,大家可以去Star:
changeforeda/Big-Data-Project
5、推荐我的知乎专栏
Java大数据留言的话,我定期会回复一些的。
lqxxql 发表于 2023-10-3 19:50:50|来自:中国 | 显示全部楼层
从语言的角度,spark hadoop 只是java/scala 的子集,就像docker 之于golang,我很少听说go转到k8s。
从市场的角度,大数据的概念已经不火,很多大厂的岗位叫算法工程师,更偏向算法,而不是工具的使用。我有个朋友数学博士,基本上没有编程基础,在大厂半年spark kafka hbase flink这些工具也用的很熟练。
另外在数仓中大数据应用也很多,不过就像js之于前端,数仓的第一语言是sql,离线的hive sql spark sql,甚至实时的structured streaming也可以使用sql。
大数据也变成了后端开发的一部分,特别是kafka目前为止已成mq的主流,hbase cassandra nosql在某些特定场景也非常好用,扩展性比传统关系型数据库强,rowkey设计合理tb级别数据也是毫秒之内返回结果。
另外大数据平台开发,其工作内容包含平台搭建,使用spark/ storm /flink做一些离线/实时的数据清洗,以及后期运维工作。
从职业规划的角度,我不太建议程序员转到大数据,如果只懂几种工具,对程序员来说这是退化。
曾经面试过我司golang服务网格自研和大数据开发两个岗位几十个候选人,从简历上看,后者更加花里胡哨,hadoop生态圈的框架又多,各种名词看的眼花缭乱。但可能是做大数据开发的框架用太多,后者的理论知识和编码能力明显不如前面岗位的候选人。
很多后端开发转到大数据平台开发,其实从职业发展角度,个人觉得还不如做懂大数据的数仓,系统学习一下建模理论。
chuangkou5 发表于 2023-10-3 19:51:05|来自:中国 | 显示全部楼层
根据经验,其实很多大数据开发都是从JAVA或者其他语言的后端开发转型的,原因主要有以下几点:
1,越来越多的公司开始拥有大数据的应用场景,同时也开始面临数据量极速膨胀所带来的挑战。
2,大数据开发还不同于一些数据分析和数据挖掘场景,通常需要一定的开发基础,此类任务往往会建立在Spark等开源计算框架上,这也就要求开发者具备一定的开发能力和实践经验。
3,大数据开发人员需求量越来越大,而专门做大数据开发的人并没有那么多,很多公司开始自行培养。
以上三点基本就是大环境下为什么很多从事后端开发的人开始转型到大数据开发
从个人层面来讲,大数据的信息量呈现爆炸式的增长,层出不穷的框架,各种语言的融合和分布式的编程思路,往往能吸引更多的开发者去探索。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则