昨日阅读3小时,总计56.5小时
《大数据技术体系详解-原理、架构与实践》-董西成著-机械Press-2018.4
接上次的技术架构A
计算引擎层:MapReduce(一个批处理计算框架,采用分而治之思想,对大规模数据集的操作,分解成Map和Reduce两个阶段,即任务的分解与结果汇总,具有高吞吐率、良好容错、扩展性、易于编程等特点,广泛应用于构建索引、数据挖掘、机器学习等应用中)----->Dremel(一个分布式OLAP,引入列式存储、树状架构,能秒级处理PB级数据,一定程度上弥补了MapReduce系统在交互式查询方面的不足)------>Pregel(分布式图计算框架,专门解决网页链接分析、社交数据挖掘等设计的大规模分布式图计算问题,采用了BSP模型,即Bulk Synchronous Parallel Computing Model,也即“计算->通信->同步”模型,通过消息传递机制,实现高效的迭代计算)------>Precolator(一个基于BigTable构建的大数据集增量更新系统,弥补MapReduce无法逐个处理小规模更新的问题)---->MillWheel(是一个分布式流式实时处理框架,具有低延迟、自动处理乱序、数据严格一次投递exactly-once-delivery等优点)
数据分析层:FlumeJava(一个建立在MapReduce上的Java编程库,非常适合构建复杂的数据流水线。内置优化器)---->Tenzing(建立在MapReduce之上的SQL查询执行引擎,能将SQL语句转化为MapReduce程序,并提交到集群中分布式并行执行)
B. Hadoop和Spark开源大数据技术栈
1. 数据收集层
主要由关系型与非关系型数据收集组件,分布式消息队列构成。
Sqoop/Canal:
关系型数据收集和导入工具,是连接关系型数据库和Hadoop(HDFS)的桥梁。前者全量导入,后者增量导入
Flume:
非关系数据收集工具(主要是流式日志数据,可近实时收集,经过过滤,聚集后加载到HDFS等存储系统)
Kafka:
分布式消息队列,一般作为数据总线使用,它允许多个数据消费者订阅并获取感兴趣的数据。相比其他消息队列,它采用了分布式容错设计,更适合大数据应用场景。
2.数据存储层
主要由分布式文件系统(面向文件的存储)和分布式数据库(面向行、列的存储)组成
HDFS
Hadoop分布式文件系统,Google GFS的开源实现,具有良好的扩展性与容错性等优点,尤其是出色的存储机制设计,使得它非常适合构建在廉价机器上,大大降低了大数据存储成本。开源社区已开发了各种类型的数据存储格式,包括SSTable(Sorted String Table),文本文件、二进制key/Value格式Sequence File、列式存储格式Parquet、ORC和Carbondata等
HBase
构建在HDFS之上的分布式数据库,Google BigTable的开源实现,允许用户存储结构化与半结构化的数据,支持行列无限扩展以及数据随机查找与删除。
Kudu
分布式列式存储数据库,允许用户存储结构化数据,支持行无限扩展以及数据随机查找与更新。