我的程序员之路02:大数据实习篇

简介: 我的程序员之路02:大数据实习篇

实习一年,我从Java入门者成为了一名大数据开发。

第一份实习offer

专升本的第一学年末,凭借着自学Java拿到了人生的第一份Java开发的实习offer。我深知那时候我的Java水平有限,也深知能拿到offer并不是因为我多优秀,而是公司一批招了20多个人。

17年7月,收拾好行李,和舍友体验了一天的找房、打扫、入住流程之后,于第二天的早晨第一次踏入了公司,开发岗的八个人被安排在空闲的工位上等待着新人培训。培训主要分为:数据安全培训、数据库培训、Linux培训等。培训之前说是有一个人可以进入大数据组实习,所以那时候的我充满着渴望与热情,以致于大学里一年都没学懂的Linux,自学了三天就把基本的命令练习地滚瓜烂熟。

培训过后,其他7人被分到了各个组内,陆续离开了这片空闲工位。而我,在接下来一个月一直处于无人认领的状态,大数据的实习名额也无人再提及。在这段实习期最安逸的日子里,我决定自学大数据。那时候网上大数据教程不像现在一样丰富,于是从某宝上花25RMB,买了一套大数据课程开始自学。

自学的过程和预料的一样一波三折。还记得刚开始跟着视频搭建Hadoop,却怎么也不成功。或是版本问题,或是操作系统问题,也许是个人能力问题。那时候也没有人指导,只能自己摸索,视频上20分钟搭建好的Hadoop,而我用了五天时间搜集资料、不断尝试,最后才在我的虚拟机上搭建完成。

一个月后某一天,我终于被人领走了,进入大数据组的那个人原来是我!

初识大数据

初入大数据组,还记得那时候的心情是小心翼翼的。那时候组里没有那么多的年轻人,感觉都是大佬,也不敢多说话,只能默默地坐在工位上。第一份工作是关于hive的,很简单。简单到什么程度,一份列表和一个hivesql,我只需将列表中的每项粘贴到sql的where条件空白处,分别执行并截图保存即可。空闲的时候也会被安排各种写工程文档的工作。

就这样在理想和现实之间工作了一个月。当我以为实习生涯就要在这种平平淡淡中度过的时候,人生出现了转机。组里年轻的运维小哥决定离职,我也被领导叫进了办公司,在各种鸡汤灌输加持下,我第一次勇敢的说出了”我可以“这三个字,我也开始转职成为了一名大数据运维。

运维工作就是写一些监控调度来保障正常生产,有时候也需要人工干预,所以出去玩也要背着电脑以备不时所需。虽然我的运维工作技术含量不高,但是因为这份工作,与组内同事的工关联也密切了起来,也开始渐渐融入到这个集体中。

人生,总会有让你努力的理由,为了别人,亦或自己。

关于理想和学习

理想今年你几岁

虽然我是一名运维,但始终有着开发的梦想。在下班回到家之后,会继续看我的课程来学习大数据。在公司的日常,干完领导安排整理文档的工作就开始学习。工作的时候喜欢听大佬们讨论技术,虽然我一句也听不懂。所以那时候我给自己的目标就是,一定要听懂大佬们讨论的技术,于是我开始利用早晨公交车上的一个小时开始看公众号文章,一天要求自己至少看五篇,当某一天回过头来,发现已经关注了近300个计算机行业的公众号。

那一年flink还未兴起,公司流处理使用的是商业版的IBM Streams,这个平台带给我的感觉就是稳定且小众。它的开发语言是SPL(Stream Processing Language),一种只适用于这个平台的开发语言,所以导致那时候基本上都没有人愿意接手这个平台。我在运维这个平台应用的过程中,开始自学SPL,从最开始研究别人的程序,到后来在官网上寥寥的资料中学习语法,最后开始负责SPL的开发。目前,我是公司唯一一个会SPL开发的人。

科普一个SPL简单的例子:

composite Main {
 graph
 stream<rstring sourceFile, rstring movedFile, uint64 fileSize> Dir3 = Di {
  param
  directory : "/tmp/work";
  moveToDirectory : "/tmp/active";
  output Dir3 : sourceFile = FilePath(), movedFile = DestinationFilePa
}
stream<rstring name, uint32 age, uint64 salary> Beat = Beacon() {} stream<rstring name, uint32 age, rstring login,
tuple<boolean young, boolean rich> info> Annotated = Punctor(Beat){
  param punctuate : age >= 18u;
  position : after; 
  output Annotated : login = lower(name),
  info = { young = (age<=30u), rich = (salary>100000
 } 
}

实习是我整个计算机生涯成长最快的时光,让我提升了技术、扩展了眼界,确立了从业方向。那时候的我,对知识充满了无尽渴望。

关于加班

虽然现在很多人,包括我内心都很抵制加班和996,但是不可否认的是,实习加班的日子使我快速成长。

17年,是公司大数据起步的一年,也是大数据平台动荡的一年。大数据行业,当以数据为核心,数据的实时接入是大数据根本,也是重中之重。11月的一个夜晚,接入程序即将随着数据规范的升级而进行新版本割接。作为一名不明所以的旁观者,选择留了下来当个配角。

负责的同事升级前测试的时候没有问题,但等到十点割接的时候却发生了乱码问题。当时我自学过Java,所以就坐在旁边跟着看,跟着他们在上万行密密麻麻的代码逐行找问题,从晚上十点一直看到凌晨五点,眼花缭乱,当我看到一个方法中全局变量和局部变量命名相同的时候,弱弱地指了出来,修改了这个问题之后,数据不再乱码,代码层面问题得以解决。

凌晨六点,新程序启动,但在运行了一个小时后,OOM内存溢出。我也是那时候,开始第二次学习JVM,跟着大家一起通过jstat、jmap等查看内存和gc,调整jvm参数一直到中午十二点,最后只能增加处理机器来暂时保证程序的正常运行。下午两点回到家,睡到下午六点又去了公司,又一直工作到凌晨四点才休息。那个星期我以工作时长65H位居公司第一。

以后的日子,大家周六周天都聚在一起寻找问题。功夫不负有心人,在长时间的测试之后,发现是Kafka0.8版本的吞吐瓶颈导致的性能问题,后来升级到v1.0之后,这个问题就解决了。不过这一次,我真正的融入到了大数据这个集体,也是这个时候我成为了一名参与者,了解了数据从接入到存储的整个流程,为我以后完全负责大数据程序开发打下了基础。

实习的日子,感谢那年冬天加班的夜晚,让我离开发更近了一步。亦感谢我搭乘回家的101路公交车可以运营到凌晨一点,让我在很多加完班的夜晚都很有安全感。

实习过后,最要感谢的往往不是那个和你谈笑风生的人,而是那个指出你的错误并帮助你的人。

关于朋友

感谢大数据每个人对我的帮助,尤其感谢带我入门、亦师亦友的刚哥,和对我无私帮助、经常蹭他车的超哥。

实习的时候,遇到一个好的师傅是很重要的。可能很多人向往的实习生活是轻轻松松,每天可以谈笑风生,这些固然重要,但更重要的是有多少人愿意将自己的知识教给你,你到底学到了什么

实习期的我无疑是幸运的,有人倾囊相授于我、有人指引我前行的路、有人指正我的不足,有人谈论技术人生,出了错误有人给我兜底。等我长大再回首,这种愿意耐心帮助你的人还能遇见几个?虽然后来一起吃饭、一起喝酒,他们经常会说愿意教我是因为我自己努力好学,但是我知道他们在很努力地培养我。

不加班的日子,我一般都从公司学习到八点半,刚哥有时候研究技术或者看球也是这个时间回家。学习的时候我遇问题,就会寻求他的帮助。我一直都都记得,每当这个时候他会不紧不慢的走过来坐下,然后在电脑上操作,会把这个问题的解决思路解释给我。

下班路上,我们只有短短600米三个路口的共同路程,但是一路上他都会叮嘱我要好好努力,偶尔也会解答我的一些困惑。每当最后一个路口分别时,他往北,我向东,他会对我挥挥手,我说一句我回去了,他回一声注意安全。如今路依旧,但终究只能成为一段记忆深刻的青春。

物是人非事事休。毕业两年半之后的今天,我可以说我实现了理想,成为了一名大数据开发,也经常自诩是目前大数据组资历第二的人。组里的年轻血液越来越多,有时候我特别期待成为当初那个很有耐心的人,但最终愿望落空,因为再也没有人愿意刨根问底,没有人想知道这个大数据平台的架构,没有人关心数据的流向,更多的人最终还是更倾心于谈笑风生。

实习遇到的朋友终会分离,而学到的知识、养成的习惯会陪伴一生。

关于我

我从小到大都是个不善言辞的人,和陌生人说话自带尴尬体质,是他们可以让我表达自己。

在大数据实习的第一个月,一直做一些写文档的工作,后来做了大半年运维,牺牲了很多休息时间来加班完成工作。一年后实习结束,成为了一名大数据开发。我在运维岗的时候,幻想过但没奢望过有一天可以在开发岗上做自己喜欢的工作。那时的我只是和刚开始自学Java一样,在公司、在家里、在公交车上一直在学习大数据。

当你还在埋怨生活决定了你命运的时候,多想想是不是自己先放弃了理想。

18年6月,毕业前夕,引进Scrapy构建了百万级数据的爬虫程序,研究用Flume写了几千行的配置,将8000亿/天的数据落地到了HDFS。

后来我毕业了,后来他们离开了公司,后来的某一天,领导说工资你自己开吧。至此,我的故事结束。

未来亦可期

2020年末,和刚哥、超哥一起吃饭,亦回忆感叹以前的日子,举杯,一饮而尽、皆在酒里。我感叹那时候数据量1000亿/天,我只是个参与者,如今数据量10000亿/天,而我却成了主导者。亦感叹那时候我以为大家会一直在一起工作,最后还是扎根在了各地。

那天晚上的风很冷,我走在回家的路上,身边一辆101经过,不过这次是背道而驰。



写的都是日常工作中的亲身实践,处于自己的角度从0写到1,保证能够真正让大家看懂。

文章会在公众号 [入门到放弃之路] 首发,期待你的关注。



相关文章
|
2天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1519 4
|
29天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
5天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
502 19
|
2天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
179 1
|
8天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
21天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
9天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
457 5
|
7天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
314 2
|
23天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
25天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2608 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析