大数据常用框架的对比概览
数仓搭建常用框架的对比概览
| 框架 | 常用位置 | 原理 |
| Hive | 1. Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。 2. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 3. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。 |
1. 本质是:将HQL转化成MapReduce程序 2. hive处理的数据存储在HDFS中 3. Hive分析数据底层的实现是MaoReduce 4. 执行程序运行在Yarn上 |
| Sqoop | 主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 | 1. 将导入或导出命令翻译成mapreduce程序来实现。 2. 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。 |
| Hbase | HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 | 1. 逻辑上:HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。 2. 物理上:从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map。 3. 为google的bigtable的实现 |
| Spark | 1. Spark一直被认为是Hadoop MR框架的升级版。 2. Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 3. Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及实时计算。 4. SpakStreaming是一个准实时、微批次的流式数据的处理框架。 |
1. Spark和Hadoop的根本差异是多个作业之间的数据通信问题 : Spark多个作业之间数据通信是基于内存,而Hadoop是基于磁盘。 2. Spark只有在shuffle的时候将数据写入磁盘,而Hadoop中多个MR作业之间的数据交互都要依赖于磁盘交互 3.Spark Task的启动时间快。Spark采用fork线程的方式,而Hadoop采用创建新的进程的方式。 |
| Tez | Tez是一个Hive的运行引擎,性能优于MR | Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能 |
| Kafka | 1. Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 2. 消费者主动拉数据 3. 定位是消息队列 4. 适合有多个消费者的场景。 |
1. 基于磁盘的追加的存储消息机制,使同时应有了速度和可靠性 2. Kafka采取了分片和索引机制,index和log文件以当前segment(每个partition分为多个segment,每个segment对应两个文件——“.index”文件和“.log”文件)的第一条消息的offset命名。
|
| Flume | 1. Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。 2. Flume基于流式架构,灵活简单。 3. Flume的最主要的作用就是,试试读取服务器本都磁盘的数据,将数据写入到HDFS中。 4. 定位是数据通道 |
监控文件或网络端口,实时发送数据到指定位置 分为source、channel、sink三部分,source对接生产数据方,sink对接消费方,channel为缓冲区 |

浙公网安备 33010602011771号