前面写了一篇大数据行业介绍,后台有很多小伙伴私信我大数据该如何学,简历该如何优化?尤其很多准备转行大数据的小伙伴,初级入门者,有较多困惑,简历写得天花乱坠,面试总是一面就挂,学习没有重点,找不到突破方向等等。
前一篇地址:写给大数据初级开发者或准备转行大数据的人
1.大数据该如何学?
1.1方向的选择
为什么我一定要强调方向的选择,因为在有限的时间内,对于初级入门者,转行的同学最重要的是术业有专攻。要用有限的时间,去做收益最高的事,所以要在有限的时间内,选择一个方向,突破一个方向,而不是全面开花。先保证可以找到一份工作,在工作中学习,让两者相辅相成,理论与实践互相反哺,将学习的成本降到最低。 同样这个思路试用于所有的IT技术的学习。
说实在之前也没正儿八经的大数据专业毕业的人,大家都是半路出家的,也都是自学的。那如何高效的自学呢? 网上或者培训机构那种全栈的培训线路图,呵呵,从java,linux,到整个大数据生态的各种组件,为了显示自己课程齐全,恨不得都给你整齐,全家桶,结果是每个模块都蜻蜓点水。让人望而生畏,学习找不到重点,涉猎也只是皮毛。
1.1.1大数据“开发”的方向分类
离线开发,
实时开发
大数据运维(数据中台等)
三者的难度而已,离线数据开发最容易入门,岗位最多,也是网上最容易招聘到的人,大数据运维(中台)个人觉得是最有前途的。可以通过下面技术栈的剖析选择适合自己的学习
1.2 大数据方向解析
所有的大数据学习操作,必不可少的是集群,所以可以先从自己搭建一个集群开始,而对于初学者最好的,最方便的,最适合入门的就是CDH集群的搭建,使用CM管理的集群。可以参考搭建:超详细版企业离线部署CDH6.10集群与配置使用
搭建集群只是为了方便你学习,数据开发人员在绝大多数公司都不会接触到集群的运维,搭建,底层的东西,会有专门的人员维护。所以如果做数据开发岗位,会使用相关组件即可。
1.2.1离线开发技术栈分析
1.重点需要掌握的理论,初级开发者主要用来应对面试:
hdfs基础理论,数据读写流程MapReduce基本原理,数据计算过程,shufflHive的基础理论,常见的性能优化,包括参数优化,sql优化,数据倾斜等Hive是重点,数据治理,存储格式,常见的报错异常分析等SQL的执行流程Spark sql的使用,Spark的基本概念,基本函数的使用,性能优化,参数优化;数仓建模步骤,数据仓库建模注意事项等,数仓分层理论等,数据治理,数据质量等基本linux的命令的使用,小公司很多用shell封装的脚本调度了解熟悉基本JAVA SE概念,使用(看公司,有点公司会问,中小公司有点不问,或者不会也没啥),当然后期还是可以学会JAVA,后期拓展性更强。
2.重点需要掌握的实战
熟练Hive常见的函数的使用,尤其是函数的套用分析,官网上,也就那几十个重点。熟练掌握Hive窗口函数分析函数,行转列,列转行等,初级开发一般会给数据让你写函数统计分析,所以网上看下常见的数据分析。Hive常见的性能优化,参数优化:可以自己测试实例,知道有哪些方向。很多小型公司其实根本用不着,或者说常见的参数性能优化都会在集群层面配置好,不用每个开发在代码里前置优化,比如小文件的治理,启用压缩,默认存储格式,调度策略,严格模式,开启数据倾斜负载均衡等等。一般需要在代码里配置也就是比如内存溢出,调整下内存,动态分区等。常见优化系列 比如hive一般必问的数据倾斜之类的。熟练掌握SQL使用,可以写出较位复杂的业务场景的SQL,这也是工作中用到最多的。熟练掌握SQL优化,所以一定要掌握SQL的执行流程才懂得优化。SQL执行流程其他就是hive常见的"CRUD"语法的使用。尤其是分区表的操作。spark的基础语法,看公司,一般公司离线hive居多,也有部分需要spark的,也有公司离线也已Spark为准。Spark基本的性能优化。
对于初学者,离线分析的话,主要重点掌握这些,后续可以不断深入或者拓展。其他的有时间了解最好。
1.2.1实时开发技术栈分析
实时分析具体技术栈就看公司规模了,相比离线实时难度会更加高,所以初学者,转行的同学,不建议直接实时,可以先做一年离线熟悉整个技术框架后,熟悉大数据开发后在逐步学习实时,因为实时技术栈学习的知识点较多,难度较大。
实时主要分为数据接入flume/kafka,很多公司也不用flume了,Sparkstreaming/flink数据清洗(storm基本淘汰了),redis缓存,Hbase数据存放供实时查询,或者直接入数仓供离线T+1分析,后者搞些大屏等,存储也有多种看实际需求。
所以一般实时主要在这三个方向,数据接入,数据清洗,数据存放。可能干其中一步,也可能干整个流程(针对小型公司)。当然数据接入kafka这块,基本配置完数据源后,后期变动不大。主要还在数据清洗这块。SparkSreaming/Flink,这块需要用JAVA/Scala开发等。相对学习的东西比较多。可以选择熟练重点掌握一个组件,如Kafka,重点突破,源码,性能优化等。也可以重点突破Flink或者Hbase,都会有市场的。
建议重点掌握几个组件其中之一,重点突破,这样会有突出点。
1.3.1大数据运维技术栈
一般中小型公司,使用Cdh集群比较多,集群规模一般在十几台到一两百台居多,一般运维1-5人居多,更多的是两三个人,当然也有些中小型公司选择上云,使用云服务部署集群节省服务器硬件损耗以及运维的成本。大公司上千台,上万台都是使用apache 然后自我定制的版本的,运维团队人员也多,几十人,上百人。
大数据运维,一般很少公司你去了需要搭建集群的,一般公司在你去后都是运维现存到的集群。即使需要搭建小集群的,选择CDH集群也比较简单。(超详细版企业离线部署CDH6.10集群与配置使用 ) 集群的运维中其实集群搭建是最简单,集群的安全运维和优化才是重点,如何保证集群的高可用才是目的,比如指标的采集,监控,自动化运维,告警,集群的性能优化,管理平台的搭建等等,包括组件的二次开发,日常高负载时性能问题的优化,有些需要深入熟悉内核,有些则需要经验配合。
初级大数据运维技术栈:
了解/掌握基本的服务器硬件配置相关信息,网络架构,交换机,ip,dns的基本使用与原理(可做了解,一般公司会有专门搞硬件这块的基础运维,当然现在的大数据运维也是之前基础运维转来的)熟悉掌握linux操作系统的安装(Centos,ubuntu等),安装配置,以及之后基本的优化,比如实现批量化安装,相关工具ansible等使用。熟练使用shell编程,linux常用的命令,运维相关的命令。熟悉掌握大数据相关组件的安装配置,集群的搭建,CDH集群安装配置一定要掌握,Apache版本的官网也有,跟着步骤来即可,没必要记清楚每一步,忘了网上查,但是要搭建一次。熟悉大数据集群常见的组件的基本原理与基本知识点,初级前期可以不用很深入。重点掌握hdfs/HA,yarn/HA,Zookeeper, 计算引擎hive,spark等。尤其是组件之间的配合使用原理,集群架构等。熟悉常见集群的参数优化,分为存储和计算,存储如hdfs常见的参数优化,计算引擎Hive、spark等常见参数优化。熟悉大数据常见的监控指标,具体可以参考CDH集群里的监控指标。apache集群监控指标的采集,展示方案,如grapha等。集群遇到的生产问题处理,比如JN挂了,Namenode重启,集群节点退役,扩展集群等等,包括组件的升级。
2.简历优化与面试
简历的书写很重要,很重要。因为面试官一般通过预览简历决定了这个人是不是自己需要招聘的人,决定了你有没有初面的机会。所以一定要在你简历里突出企业招聘需要的技术栈或者工作经验。一般面试官初筛简历:学校(是否名校)+工作背景(是否大厂)+技术栈/项目经验(技术是否深入),所以三维之中一定要有一维突出。其次简历的排版一定要整齐,用PDF,而不是Word。简历最好2-4页,不要1页太单薄。
所以,比如面试大数据开发,离线/实时,简历一定要突出重点。比如你面离线或者实时,简历中就突出上面对应的技术栈,以及对应技术栈的性能优化,对应技术栈的项目经验。比如面数仓开发技术栈写熟练掌握Hive的函数相关函数的使用,熟练进行业务开发;熟练大数据数仓建模;熟练掌握Hive常见异常分析,性能优化,数据治理,熟练掌握spark用于业务分析等。以及对应的技术栈的项目或数据分析经历。
核心技术点,一定要写到性能优化,不能所有的技术栈都是描述性的信息,而且要用专业化的技术语言描述。项目要写出业务难点与技术的结合,突出业务与技术的实现。比如下面这种就不太好。
简历的优化,只能结合实际修改。毫不夸张地说我认识的某大厂一大哥,工作好几年的老油子了。每次换工作简历都会花几百块钱在某招聘网站找人优化, 从排版到话术,技术栈的描述,包括一些常见问题的指导,确认效果很奈斯,可以参考下。现在大哥薪水越来越高,面试也助力不少。
同样技术的人,会面试的人和不会面试的人可能前者可以拿到offer后者不被录取,毕竟在那么短的时间内如何有效地展示自己,显露自己的技术,确实是个技术活。