【数据开发】大数据岗位,通用必备技术栈(数据分析、数据工程、数据科学)
文章目录
- 1、岗位与技术要求
- 1.1 常见岗位介绍
- 1.2 行业发展方向
- 1.3 附部分JD
- 2、数据开发技术栈
- 2.1 数据处理流程
- 2.2 学习路线与框架
- 3、数据分析技术栈
- 3.1 基础知识
- 3.2 进阶知识
1、岗位与技术要求
1.1 常见岗位介绍
- 数据分析(低阶)
- 在很多公司里,**数据分析一般是产品岗位,所以对技术栈要求一般较低。**毕竟这个年代,大家都是大数据了,产品要分析某些功能数据时,总不能等程序员来帮你取数据,所以现在很多公司有数据分析岗位,要求求职者有相关的数据处理技能。
- 语言(Python,SQL)
- 框架(Pyspark, Pandas)
- 软件(PowerBI, SAS等)
- 其他(有做产品经验,会数据可视化)
- 其实技能对于数据分析岗位来说真的不算核心竞争力,所以就会从其他,比如产品经验,学历背景等方面进行设置门槛,同时长期发展来说也容易被替代, 薪资比起程序员来说也不算有竞争力。
- 数据工程(中阶)
- 数仓工程师, 具备看需求文档的能力,对大数据产品技术架构原理有深入了解。熟悉数据仓库开发及建模,熟悉Mysql Redis等常用数据库及缓存;熟悉Hadoop生态圈技术,了解生态圈相关组件;掌握Java、Hive、Sql,熟悉至少一门脚本语言。
- ETL工程师(ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程)等。
- 技术栈: Hadoop Hive Spark Storm Flink HBase Kafka Zookeeper Flume Sqoop Azkaban Scala
- 语言(Java, Scala, SQL,Python,C/C++)
- 框架(Hadoop, Spark,Zookeeper, Flink,Kafka)
- 数据库/数据系统(Hive, HBase, Hdfs,TD, MongoDB/Click House)
- 其他(了解数据传输,包括FTP,syslog,socket等各种方式, 有过T级别数据的处理经验)
- 数据科学(高阶)
- 例如数据科学家、算法工程师、深度学习模型工程师等等,细分到领域,还有NLP工程师,CV工程师等等。其实就是机器学习工程师和深度学习工程师。
- 语言(Python,Scala)
- 框架(Pandas, MLlib, sklearn,Tensorflow, NLTK, CNN等,Tensorflow/PyTorch, NLTK, OpenCV等)
- 机器学习模型(线性模型:Logistic Regression 非线性模型:xgboost, random forest, CART等等非监督模型:isolation forest,KMeans等等,CNN、BERT等前沿深度学习模型)
- 深度学习模型(Yolo、BERT等前沿深度学习模型和XGBoost等集成机器学习模型)
- 其他(掌握相关domain knowledge,数据可视化,概率论基础知识,linux, Spark,熟悉linux,线性代数,概率论)
- 由于深度学习领域还分CV、NLP等,所以很难说加分技能栈。反正懂什么技能栈都不如发篇顶会加分。
- 无论你搞不搞深度学习,只要是搞数据建模的,难逃概率论。常考的面试题如:均值与方差及其公式什么是高斯分布什么是正态分布贝叶斯公式三门问题
1.2 行业发展方向
- 大数据目前基本可分为实时和离线两大类,前者要求分钟级甚至秒级延迟,后者则可以接受t-1离线跑批,即当天(t)查询前一天(t-1)数据的需。
- 离线数仓:Hadoop + Spark/Mapreduce + Hive/HDFS+ Impala + Sqoop/Kettle + Azkaban
- 实时数仓:Hadoop + Flink + Kafka + Hbase + Sqoop + Azkaban
- 大数据主流发展的都是实时方向,也有数据流,数据湖,以及湖仓一体。如果基于实时方向 Java/Scala 比SQL重要,而离线跑批 则是SQL,Shell,Perl/Python。
1.3 附部分JD
1、
岗位职责:
1、打造有竞争力Hadoop软件平台;
2、独立或带领小组完成大数据领域定制需求的设计和开发工作;
3、完成需求验证和维护工作。
岗位要求:
1、计算机相关专业本科及以上学历;
2、熟悉C/C++、JAVA、Python、JS中的至少一种,掌握常见的数据结构、算法,了解软件工程、敏捷开发等知识,熟悉常用设计模式;
3、熟悉大数据开发框架,熟悉Hadoop/Spark/Hbase/MPP DB及业界主流流处理平台如Storm/Flink/Spark Streaming之一;
4、精通Java,能深刻理解IO,多线程等基础框架,熟悉JVM的原理和性能调优;
5、对大数据框架开发有成功实践经验者优先。
2、
1.熟练掌握数据分析方法,包括但不限于excel、tabluea等BI分析工具使用;
2.熟练掌握sql语句编写,对hive clickhouse等大数据相关数据库相关sql语法了解熟悉;
3.有python算法开发经验或机器学习&深度学习开发经验,能独立开发相关数据分析算法及模型;
3、
岗位要求
1、 掌握Linux操作系统日常使用和shell等脚本、可使用脚本处理集群开发、运维相关问题
2、 熟悉数据库原理,有ORACLE/MYSQL等数据库开发经验,可编写SQL查询语句,具备SQL调优能力
3、 熟悉hadoop生态圈组件,如Hive/HDFS/HBASE/spark/flink等
4、 至少熟悉Java/Scala/Python中一门开发语言,熟悉程序报错处理以及应用调试
5、 良好的沟通能力,需具备与项目干系人沟通和协助能力。
岗位职责
1、 客户需求分析和大数据规划方案落地设计
2、 大数据产品FusionInsight HD规划设计、部署安装、运维管理,故障处理
3、 协助客户或伙伴解决FusionInsight HD开发支持和性能调优问题
4、 独立完成大数据项目规划和部署、指导客户或伙伴解决大数据产品问题,保证项目成功
4、
岗位职责:
1、建设公司级大数据平台,提供稳定、高效、先进的流式计算服务,支撑万亿级实时业务;
2、打造和优化计算引擎,面向业务扩展引擎能力,提升计算效率与可靠性。
任职要求:
1、本科及以上学历,扎实的计算机基础,良好的数据结构、操作系统、计算机网络功底,良好的技术热情与工程能力追求,具有大数据平台或组件的研发、运维经验;
2、掌握 Java/Scala/C++ 语言(之一),对并发编程、内存模型、RPC、JVM等有良好掌握,具有良好的编程习惯,追求高标准的工程质量;
3、对 Flink 或 Spark 等计算引擎有深入理解,具有丰富研发经验或开源贡献经验;
4、熟悉 Hadoop 生态(HDFS/HBase/Kafka/Hive/Zookeeper/YARN/Iceberg/Hudi等)相关组件原理,对大数据平台架构与规划有一定的理解与思考;
5、具备较强的自驱力、责任心、沟通能力、学习能力。
5、
工作职责
岗位职责:
1、基于金融行业特点构建企业级数据仓库;
2、参与实时和离线的数据采集,处理和存储,方案设计及标准制定;
3、对现有大数据数据体系进行脚本优化,功能优化等,提升数据存储和计算资源利用率;
4、参与解决大数据数仓建设、数据治理过程中的难点和问题,了解行业前沿大数据数据处理方法。
任职要求
任职要求:
1、本科及以上学历,2年以上数据平台开发经验,较好的业务理解和沟通能力,具备金融业务知识优先;
2、熟悉数据仓库建设过程,具备数据集市、数据主题、标签体系建设经验优先;
3、熟悉数据治理流程,具有数据热点、元数据管理、血缘分析经验优先;
4、熟练Hive、Spark、Flink等离线、流式计算框架的使用和调优,理解核心机制,有良好的SQL性能优化能力;;
5、熟练掌握Java、python中的至少一种开发语言,较强编码能力,熟悉Python和Shell开发优先;
6、熟悉HBase、Clickhouse、Doris等常见分布式数据存储读写及其性能优化优先。
2、数据开发技术栈
2.1 数据处理流程
-
数据收集:
- 现在的中大型项目通常采用微服务架构进行分布式部署,所以数据的采集需要在多台服务器上进行,且采集过程不能影响正常业务的开展。基于这种需求,就衍生了多种日志收集工具,如 Flume 、Logstash、Kibana 等,它们都能通过简单的配置完成复杂的数据收集和数据聚合。
-
数据存储:
- 收集到数据后,下一个问题就是:数据该如何进行存储?通常大家最为熟知是 MySQL、Oracle 等传统的关系型数据库,它们的优点是能够快速存储结构化的数据,并支持随机访问。但大数据的数据结构通常是半结构化(如日志数据)、甚至是非结构化的(如视频、音频数据),为了解决海量半结构化和非结构化数据的存储,衍生了 Hadoop HDFS 、KFS、GFS 等分布式文件系统,它们都能够支持结构化、半结构和非结构化数据的存储,并可以通过增加机器进行横向扩展。
- 分布式文件系统完美地解决了海量数据存储的问题,但是一个优秀的数据存储系统需要同时考虑数据存储和访问两方面的问题,比如你希望能够对数据进行随机访问,这是传统的关系型数据库所擅长的,但却不是分布式文件系统所擅长的,那么有没有一种存储方案能够同时兼具分布式文件系统和关系型数据库的优点,基于这种需求,就产生了 HBase、MongoDB。
-
数据分析:
- 大数据处理最重要的环节就是数据分析,数据分析通常分为两种:批处理和流处理。
- 批处理:对一段时间内海量的离线数据进行统一的处理,对应的处理框架有 Hadoop MapReduce、Spark、Flink 等;
- 流处理:对运动中的数据进行处理,即在接收数据的同时就对其进行处理,对应的处理框架有 Storm、Spark Streaming、Flink Streaming 等。
- 批处理和流处理各有其适用的场景,时间不敏感或者硬件资源有限,可以采用批处理;时间敏感和及时性要求高就可以采用流处理。随着服务器硬件的价格越来越低和大家对及时性的要求越来越高,流处理越来越普遍,如股票价格预测和电商运营数据分析等。
- 上面的框架都是需要通过编程来进行数据分析,那么如果你不是一个后台工程师,是不是就不能进行数据的分析了?当然不是,大数据是一个非常完善的生态圈,有需求就有解决方案。为了能够让熟悉 SQL 的人员也能够进行数据的分析,查询分析框架应运而生,常用的有 Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix 等。
- 这些框架都能够使用标准的 SQL 或者 类 SQL 语法灵活地进行数据的查询分析。这些 SQL 经过解析优化后转换为对应的作业程序来运行,如 Hive 本质上就是将 SQL 转换为 MapReduce 作业,Spark SQL 将 SQL 转换为一系列的 RDDs 和转换关系(transformations),Phoenix 将 SQL 查询转换为一个或多个 HBase Scan。
- 大数据处理最重要的环节就是数据分析,数据分析通常分为两种:批处理和流处理。
-
数据应用:
- 数据分析完成后,接下来就是数据应用的范畴,这取决于你实际的业务需求。比如你可以将数据进行可视化展现,或者将数据用于优化你的推荐算法,这种运用现在很普遍,比如短视频个性化推荐、电商商品推荐、头条新闻推荐等。当然你也可以将数据用于训练你的机器学习模型,这些都属于其他领域的范畴,都有着对应的框架和技术栈进行处理。
-
其他框架:
- 上面是一个标准的大数据处理流程所用到的技术框架。但是实际的大数据处理流程比上面复杂很多,针对大数据处理中的各种复杂问题分别衍生了各类框架
- 单机的处理能力都是存在瓶颈的,所以大数据框架都是采用集群模式进行部署,为了更方便的进行集群的部署、监控和管理,衍生了 Ambari、Cloudera Manager 等集群管理工具;
- 想要保证集群高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分布式协调服务,它能够解决大多数集群问题,包括首领选举、失败恢复、元数据存储及其一致性保证。同时针对集群资源管理的需求,又衍生了 Hadoop YARN ;
- 复杂大数据处理的另外一个显著的问题是,如何调度多个复杂的并且彼此之间存在依赖关系的作业?基于这种需求,产生了 Azkaban 和 Oozie 等工作流调度框架;
- 大数据流处理中使用的比较多的另外一个框架是 Kafka,它可以用于消峰,避免在秒杀等场景下并发数据对流处理程序造成冲击;
- 另一个常用的框架是 Sqoop ,主要是解决了数据迁移的问题,它能够通过简单的命令将关系型数据库中的数据导入到 HDFS 、Hive 或 HBase 中,或者从 HDFS 、Hive 导出到关系型数据库上。
2.2 学习路线与框架
- 语言基础:
- JAVA:大数据框架大多采用 Java 语言进行开发,并且几乎全部的框架都会提供 Java API ,目前大多数框架要求 Java 版本至少是 1.8。
- Scala:一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在 Java 虚拟机上,可以与所有的 Java 类库无缝协作,著名的 Kafka 就是采用 Scala 语言进行开发的。当前最火的计算框架 Flink 和 Spark 都提供了 Scala 语言的接口,使用它进行开发,比使用 Java 8 所需要的代码更少。
- Maven:自动化构建工具主要是 Maven,不论你的项目是使用 Java 语言还是 Scala 语言进行开发,提交到集群环境运行时,都需要使用 Maven 进行编译打包。大部分大数据框架使用 Maven 进行源码管理,当你需要从其源码编译出安装包时,就需要使用到 Maven。
- 框架学习:
- 数据收集:
- 日志收集框架:Flume、Logstash、Filebeat
- 数据存储:
- 分布式文件存储系统:Hadoop HDFS
- 数据库系统:Mongodb、HBase
- 数据分析:
- 分布式计算框架:
- 批处理框架:Hadoop MapReduce
- 流处理框架:Storm
- 混合处理框架:Spark、Flink
- 查询分析框架:Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix
- 分布式计算框架:
- 集群:高可用、任务调度、并发、迁移
- 集群资源管理器:Hadoop YARN
- 分布式协调服务:Zookeeper
- 任务调度框架:Azkaban、Oozie
- 集群部署和监控:Ambari、Cloudera Manager
- 数据迁移工具:Sqoop
- 数据收集:
3、数据分析技术栈
(高级的数据分析看起来需求不低于数据开发,数据工程,毕竟是更直接面向老板的)
3.1 基础知识
- Excel、MySQL
- Python编程基础、Python数据清洗、Python数据可视化
- Python机器学习,Python网络爬虫
3.2 进阶知识
- R,spss或者其他统计分析工具
以上是数据分析和数据工程部分的,算法的不再详细展开了,不如卷学历卷科研去
参考资料:1-八股,2-知乎1,3-知乎2, 4-数据开发,5-数据分析,6-R语言