大数据扫盲贴,你想知道的这里都有
本文不介绍过多专业知识和名词,想了解专业内容网上到处都能搜到,知识根据我经验说一些大家应该比较感兴趣的点。
php能不能开发大数据
虽然好多文章可能说大数据不限语言,但是实际上还是java和scala语言主导了绝大部分的大数据开发工作。对于php,可能仅仅能做到支持部分大数据组件的api(比如Kafka,dorisdb)。而且支持的不是很好,大部分数据组件压根就没有php的api
java开发大数据,需要对java熟悉到什么程度
很多人对java的了解phper可能也是听过他的很多的web框架,springboot,springcloud等等。但是这些都是javaweb的框架。大数据开发用不到这些东西。需要会java的语法和掌握自带的各种api。
但是还有些其他的东西需要掌握,比如maven
看见大数据技术栈懵逼
我估计很多人了解过大数据之后会看到各种各样的技术栈名词,而且这些里面每一个拿出来都是学习成本不小的东西,有点望而却步。就算硬着头皮想了解下去根本不知道是个什么顺序,也不知道这些组件之间有什么关系。
这里随便列几个比较出名的:
Hadoop、Hive、Kafka、Spark、Flink
技术栈分类
大数据各种技术栈,其实差别挺大的,我大致分为四类
1、Hadoop
Hadoop比较特殊,单独放一类,估计绝大数人对大数据的第一印象都是他。作为三板斧之一,相当重要。不做过多介绍,Hadoop有三个核心组件
- hdfs:可以理解为做文件存储,很多框架会用到这个组件
- MapReduce:做数据计算处理
- yarn:做分布式任务调度,用来处理各个application
现在直接使用Hadoop做数据处理的很少,他更多是做一个支撑的作用,但是他是基本上必装的,因为大部分的大数据组件用到了hdfs做一些状态存储和用yarn来做任务部署。
就类似springcloud每个程序启动时候要在nacos上注册一样。
2、计算类
这类框架通常是做大数据开发时候核心的编码工作,90%的代码都是在这部分完成,一般都是由框架提供的各种算子操作来完成想要的数据分析。
代表框架:Flink、Spark
3、管道类(数据传输)
无论是对业务数据的数据还是说程序的日志数据做分析,基本上都需要一个东西来做中间层传输,将数据源对接到处理的程序上面。
代表框架:Datax、Kettle、Kafka、Flume
4、存储类
存储顾名思义就是当做一个数据库来使用,存的各种结构的数据,用起来基本上也都是使用sql来操作
代表框架:Hive、HBase、Clickhouse、Dorisdb
框架整合
基于上面几类框架,我可以列一个最常用的组合来帮大家理解一下各层在链路上得作用:
业务数据库(Mysql)/日志数据 -> kafka传输 -> 程序计算(Flink/Spark)-> yarn调度 -> 写入Clickhouse -> 数据展示
上面展示的是一套比较主流的数据处理模式,当然实际开发中得问题比这会复杂的多得多
实际场景怎么选型
- 不是每个公司都需要搭建一套大数据架构,都不说大部分公司的机器数量和配置都支撑不了一套重型的架构。
- 搭建大数据体系大部分是为了做报表数据和数据分析平台,而且数据量过大,普通的关系型数据库满足不了分析场景,而且不能过多占用业务数据库的资源。
- 但是即时你的公司说需要搭建大数据架构的时候,也不是要完整的都要学习一遍。因为这种大数据分析绝大部分的公司我认为是离线需求的(可以延迟半天或一天),而且很多时候统计规则没那么复杂。
- 对于这种比较轻量需求的公司,推荐大家去了解一下Starrocks和Dorisdb这种湖仓一体的数据库,可能你的公司只需要搭建这一个分布式数据库就能解决所有的需求,甚至Hadoop都不需要;你更多需要考虑的是如何把业务数据库同步至数仓,推荐了解下Datax和Kettle,甚至自己手写定时任务程序都可以简单实现。
学习路线
可能很多时候并不是所有东西都需要掌握,这里推荐一些个人觉得比较实际的框架
- Hadoop(着重hdfs和yarn)
- Hive
- Kafka
- Spark Flink
- ClickHouse
- Dorisdb
最后
希望这篇文章能让你对大数据的技术栈层面有点浅显的了解,有在公司搭建数仓和数据处理架构的也希望大家多多交流
最后苏州求内推~
本作品采用《CC 协议》,转载必须注明作者和本文链接