导图社区 大数据技术组件
大数据技术涉及到的中间件和解决方案梳理,思维导图展示了大数据处理流程中的关键组件及其相互关系,从数据采集、存储、处理到分析,涵盖了大数据技术的各个方面。
编辑于2024-08-05 18:24:51《方法论与工程化解决方案》知识总结,本书借助数据仓库实现一套用户画像系统的方案。从实际工程案例出发,结合多业务场景,内容涵盖开发离线批处理计算的标签及流式计算标签,为读者的分析、开发、搭建用户画像系统,并借助该用户画像系统为运营人员制定运营用户的策略提供端到端的解决方案。
数据仓库与数据挖掘相关背景、概念、技术信息梳理,包含1数据资源、2数仓的概念与结构、3数仓的设计与开发、4联机分析处理OLAP、5数据挖掘、6数据预处理、7数据挖掘常用算法等内容。
大数据技术涉及到的中间件和解决方案梳理,思维导图展示了大数据处理流程中的关键组件及其相互关系,从数据采集、存储、处理到分析,涵盖了大数据技术的各个方面。
社区模板帮助中心,点此进入>>
《方法论与工程化解决方案》知识总结,本书借助数据仓库实现一套用户画像系统的方案。从实际工程案例出发,结合多业务场景,内容涵盖开发离线批处理计算的标签及流式计算标签,为读者的分析、开发、搭建用户画像系统,并借助该用户画像系统为运营人员制定运营用户的策略提供端到端的解决方案。
数据仓库与数据挖掘相关背景、概念、技术信息梳理,包含1数据资源、2数仓的概念与结构、3数仓的设计与开发、4联机分析处理OLAP、5数据挖掘、6数据预处理、7数据挖掘常用算法等内容。
大数据技术涉及到的中间件和解决方案梳理,思维导图展示了大数据处理流程中的关键组件及其相互关系,从数据采集、存储、处理到分析,涵盖了大数据技术的各个方面。
大数据技术组件
数据采集传输
Flume
是什么
Flume是一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统。
干什么
最主要的应用:实时读取服务器本地磁盘的数据,将数据写入到HDFS
架构组成
架构及事务保证
Source数据源
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、 taildir 、sequence generator、syslog、http、legacy。
Sink数据下沉
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。 Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。
Channel数据缓冲通道
Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。 Flume自带两种Channel:Memory Channel和File Channel。
Memory Channel
Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
File Channel
File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
Sqoop
是什么
是一个用于Hadoop和传统数据库进行数据转移的工具。
数据存储
缓存
Kafka
是什么
是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。
干什么
建立实时流数据管道,为应用程序和系统间提供可靠地数据数据获取 构建实时流应用程序,以转换或响应数据流 与Flume想结合实现离线数据处理
Redis
持久化
HDFS 顺序读写
是什么
一个分布式的文件管理系统
干什么
适合一次写入,多次读取的场景,暂不支持文件的修改(但支持文件内容追加)。适合用来做数据分析,并不适合用来做网盘应用。
特点
高容错性 通过保存多个副本实现。 适合存储大数据 数据规模,能够处理GB、TB、甚至PB级别数据; 文件规模,能够处理百万规模以上的文件数量。 可构建在廉价机器集群上 不适合低延迟数据访问 比如毫秒级的存储数据,目前是做不到的。 无法高效处理大量小文件 存储大量小文件的话,会占用NameNode大量的内存(用于存储文件的目录和块信息)。这样是不可取的,因为NameNode的内存总归是有限的。 另外,小文件存储的寻址时间会超过其本身数据的读取时间,这就违反了HDFS的设计目标。 不支持并发写入、修改文件 一个文件只能有一个写操作,不允许多个线程同时写; 仅仅支持数据的追加,不支持文件随机修改。
HBase 随机读写
是什么
是一个高可靠性、高性能、面向列族、可伸缩、实时读写的分布式数据库。
干什么
写密集读稀疏型应用,写多读少场景; 不需要复杂查询条件来查询数据的应用,HBase只支持基于rowkey的查询; 对数据量大(数据增长量无法预估)且对性能和可靠性要求非常高的应用;
特点
容量大 Hbase单表可以有百亿行、百万列,横纵向数据量级具有弹性。企业级应用的HBase可实现单表千亿条数据(每行百万列)的秒级查询。 列族存储 面向列族的存储和权限控制,并支持独立检索,可以动态增加列,即,可单独对列进行各方面的操作。 数据多版本 Hbase的每一个列的数据存储有多个Version,比如住址列,可能有多个变更,所以该列可以有多个version 稀疏性 为空的列并不占用存储空间,表可以设计的非常稀疏。不必像关系型数据库那样需要预先知道所有列名然后再进行null填充。 拓展性 底层依赖HDFS,当磁盘空间不足的时候,只需要动态增加datanode节点服务(机器)就可以了。 高可靠性 WAL机制,保证数据写入的时候不会因为集群异常而导致写入数据丢失。副本机制,保证了在集群出现严重的问题时候,数据不会发生丢失或者损坏。Hbase底层使用HDFS,本身也有备份。 高性能 底层的LSM数据结构和RowKey有序排列等架构上的独特设计,使得Hbase写入性能非常高。 Region切分、主键索引、缓存机制使得Hbase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能够到达毫秒级别。
数据查询
随机查询
HBase
Phoenix
是什么
Phoenix是基于Hadoop的允许用户以JDBC API方式操作HBase的开源框架。可以把它看做是HBase的,具有加成属性的皮肤。
干什么
常作为HBase与Spark\Hive\Flume\MR等大数据组件集成的中间组件。
特点
1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce; 2)操作简单:支持标准 SQL,以及完整 ACID 事务特性; 3)支持HBase二级索引创建。
顺序(全量)查询
Hive
是什么
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
干什么
Hive的本质是将HQL转化成MapReduce程序。
特点
优点 (1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。 (2)避免了去写MapReduce,减少开发人员的学习成本。 (3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。 (4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。 (5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 缺点 1)Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现。 2)Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive调优比较困难,粒度较粗
数据分析计算
离线计算
Hadoop MR
Pig
Hive
Spark
实时计算
Storm
SparkStreaming
Flink
资源协调调度
Hadoop Yarn
Zookeeper
运维监控