大数据定义
大数据的4v定义
- 数据规模大
- 数据价值密度低
- 数据种类多
- 数据处理速度大
大数据重要的三篇文章
- GFS
- Bigtable
- MapReduce
大数据的生态
大数据计算引擎的迭代
MR计算类型
Hadoop的出现以跨时代的方式,Hadoop的MR计算实现了分布式计算和海量数据存储,但是Hadoop的MR计算无法直接迭代,每次的mr后的结果都要进行落盘,中间需要多次shuffle,性能低
DAG内存迭代计算类型
Spark开启了DAG计算模型的先河,减少落盘的次数,可以直接在内存迭代,只有shuffle时才落盘,并提供了缓存策略和丰富的算子类型,极高地提高开发效率
事件驱动的实时计算
flink和stom都是实时计算引擎,但是flink相较于stom,实现了低延时和精准的一次性(主要是其状态后端的两阶段提交协议)
大数据组件
底层存储
Hadoop
Hadoop是大数据重要的组件,在Hadoop经过长期的发展,初始的MR计算使用逐渐减少,但其Hdfs和yarn组件仍被广泛应用
数据库
Hive
Hive,在大数据离线场景被广泛应用。Hive支持行式和列式存储。Hive包含了多种压缩格式,格式压缩主要是orc和parquet压缩。函数丰富,允许自定义的函数
Hbase
Hbase是非传统的Nosql的K-V的数据库,数据底层存储主要存储在hdfs(主要的),由于其LSM结构,数据读写性能一般,并发能力中规中矩,不会因为数据量增大而性能迅速下降
clickhouse
clickhouse在是俄罗斯的yandex开源的OLAP数据库,拥有高超的性能,可实现亿级的数据秒级的返回,但是存在并发能力低,join能力低的问题,但在单宽表场景下是不错的选择
消息中间件
kafka
kafka在大数据领域常起到削峰的作用。高并发的场景,数据库是整个系统的瓶颈,为了提高系统的并发能力,可将数据先写到kafka内,作为缓存。高效地顺序写入,零拷贝技术和分区写入使kafka性能提升到极致。
消息采集组件
flume
flume是常用的流式数据采集框架,具有断点续传(tair source可实现)和传输可靠性(file channel,kafka channel可实现)的功能,可参考我之前写过的文章