大数据开发工程师与数据分析工程师有什么不同?从工作内容来看大数据开发主要负责大数据采集,数据清洗(ETL),数据建模,数据应用开发工作。总结就是主要负责处理海量数据和大数据应用,而数据分析工程师,通过挖掘出有价值的数据,为企业提供业务发展支持;大数据开发工程师偏重数据链路建设,数据资产建设和数据应用开发,为业务发展提供数据支撑。
大数据开发工程师的技术栈与后端开发工程师有什么不同?大数据开发工程师除了掌握Java,Python,Shell ,Linux IT开发需要的技术栈,还需要掌握和了解大数据组件以及一些消息中间件,如Hadoop ,Spark,Flink,Kafka,除此之外还需要学习掌握数据建模理论。总结是除具备后端开发技能,还需要深入了解大数据组件和消息中间件的原理和API使用,以及数据建模的知识。
第一类工作就是编写一些Hadoop、Spark,Flink的应用程序,现在大数据组件提供多种语言的API,常见的Java, Python,SQL都会支持,Spark支持Scala, R语言,因为大数据组件SQL学习门槛低,而且开发效率高,在大数据开发中应用最多,导致很多人理解大数据开发就是写SQL,这部分工作内容占日常工作的80%,甚至更多;
第二类工作偏后端开发,比如某些应用层数据需要对外提供服务,就需要开发API接口;如果要做数据应用产品,就完全做的是后端开发的工作内容,需要掌握Springboot 技术体系(springboot + mybatis + mysql + kafka),一般做两个项目就可以上手,这一类工作能力在中小公司是要求具备的,在BAT大厂这类工作都是后端开发做;
大数据开发学习有一定难度曲线,零基础入门首先要学习Java语言打基础,一般而言,Java学习SE、EE,当然为了快速上手,也可以看Hive编程指南这本书(虽然很老了,但是对于大部分小白来讲,这是最容易入行的一本书了);然后进入大数据技术体系的学习,前期主要学习大数据存储和计算相关组件Hadoop、Yarn、Hive、Spark、Flink,HBase(按照这个顺序来学习),后面再去学习资源调度和组件管理相关组件Yarn、Zookeeper,再后面可以学习数据传输组件和消息中间件:Flume,Kafka,最后学有余力可以去学习企业的大数据场景应用;
这张图对于搞数据的人再熟悉不过了,总结一句话:描述数据从业务源头到数据应用的流转过程。从下到上来看包括:贴源层(来自业务系统,数据埋点,第三方爬虫)->数据接入层->数据计算层->数据服务层->数据应用层;
CAP 理论,它是指:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
在分布式系统内,P 是必然的发生的,不选 P,一旦发生分区错误,整个分布式系统就完全无法使用了,这是不符合实际需要的。所以,对于分布式系统,我们只能能考虑当发生分区错误时,如何选择一致性和可用性。
这里推荐一篇文章:一文看懂CAP理论
数据处理大致可以分成两大类:
是传统的关系型数据库(Oracle、Mysql...)的主要应用,主要是基本的、日常的事务处理,数据量小(千万级),准确性及一致性要求高,例如银行交易,商城订单交易。
是数据仓库系统(HBase、ClickHouse,Presto)的主要应用,支持对海量数据进行复杂的统计分析操作,持久化数据一般不进行修改,数据一致性要求不高,侧重决策支持,并且提供直观易懂的查询结果,例如商城推荐系统,用户人物画像;
ODS(Operation Data Store):把操作系统数据几乎无处理的放进数据仓库系统【保留原始数据,一般永久存储】
CDM(Common Data Layer):存放事实表,维表,dws轻度汇总表;由ODS清洗产出
DWD(Data Warehouse Detail):存放明细数据,一般是大宽表,星型模型;
DWS(Data Warehouse Summary):存放轻度汇总数据,一般是一部分维度,有DWD层加工而来
ADS(Application Data Service):存放数据产品个性化的指标数据,有DWD和DWS以及DIM计算产出;
上一篇:大数据平台运营的基础是什么