hadoop(批量,离线,非实时) | 主要用于搜索引擎,文件存储等等, | Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的 |
MapReduce | 海量数据地计算 | MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据. 如果计算的数组长度少的话,这样实现是不会有问题的,还是面对海量数据的时候就会有问题。 MapReduce会这样做:首先数字是分布存储在不同块中的,以某几个块为一个Map,计算出Map中最大的值,然后将每个Map中的最大值做Reduce操作,Reduce再取最大值给用户。 |
Hdfs | 分布式文件系统 | NameNode(主机存文件目录)-DataNode(分布在廉价机)-Block(64M,多个Block构成DataNode) |
Hive | MapReduce的改进 | 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。2.Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。 |
Spark | MapReduce的改进 | spark是一种分布式计算框架,和mapreduce并列,可以运行于yarn上。yarn是hadoop2.0的一种资源管理框架 1、MR作业的资源管控是通过yarn进行的,spark可以通过yarn进行资源管控,也可以不使用yarn,但是多个组件合设时(如集群中既有spark计划,又有HBase查询),建议还是使用yarn; 2、spark是基于内存计算的,计算的中间结果存放在内存,可以进行反复迭代计算;而MR计算的中间结果是要落磁盘的,所以一个job会涉及到反复读写磁盘,这也是性能比不上spark的主要原因; 3、MR的一个task就要对应一个container,container的每次启动都要耗费不少时间,有些hadoop版本(如华为OceanInsight Hadoop)实现了容器预热(重用)功能,这个消耗可能会小一些;而spark是基于线程池来实现的,资源的分配会更快一些。 |
ZooKeeper | ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 | |
Apache Storm | 实时的、分布式以及具备高容错的计算系统 | Nimbus:负责资源分配和任务调度。 Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。 Worker:运行具体处理组件逻辑的进程。 Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor |
几种大数据框架的对比
最新推荐文章于 2024-07-25 17:59:35 发布