Hive
hbase 是个数据库,NoSQL 数据库
hive 类似是一个编译器,将 SQL 语言编译成 MapReduce 的作业语言
Hive 是一个构建于 Hadoop 顶层的数据仓库,注意这里不是数据库。Hive 可以看作是用户编程接口,它本身不存储和计算数据;它依赖于 HDFS 和 MapReduce。其对 HDFS 的操作类似于 SQL—- 名为 HQL,它提供了丰富的 SQL 查询方式来分析存储在 HDFS 中的数据;HQL 经过编译转为 MapReduce 作业后通过自己的 SQL 去查询分析需要的内容;这样一来,即使不熟悉 MapReduce 的用户也可以很方便地利用 SQL 语言查询、汇总、分析数据。而 MapReduce 开发人员可以把己写的 mapper 和 reducer 作为插件来支持 Hive 做更复杂的数据分析。
hbase 可读写,提供了自己的 API,不用 Hive,也能操作 HBase
hive 默认的挂接 HDFS 的文本文件,当然 hive 也可以挂接 Hbase
Spark
一般提到 Spark 都会提到 Hadoop,所以这里通过对比,来帮助理解什么是 Spark。
一、解决问题的层面不一样:
Hadoop 和 Spark 两者都是大数据框架,但是各自存在的目的不尽相同。
Hadoop 实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。
HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。意味着您不需要购买和维护昂贵的服务器硬件
MapReduce,通过简单的 Mapper 和 Reducer 的抽象提供一个编程模型,可以在一个由几十台上百台的机器上并发地分布式处理大量数据集,而把并发、分布式和故障恢复等细节隐藏。
Hadoop 复杂的数据处理需要分解为多个 Job(包含一个 Mapper 和一个 Reducer)组成的有向无环图。
Spark 则允许程序开发者使用有向无环图(DAG)开发复杂的多步数据管道。而且还支持跨有向无环图的内存数据共享,以便不同的作业可以共同处理同一个数据。是一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。
可将 Spark 看作是 Hadoop MapReduce 的一个替代品而不是 Hadoop 的替代品。
二、Hadoop 的局限和不足
一个 Job 只有 Map 和 Reduce 两个阶段,复杂的计算需要大量的 Job 完成,Job 间的依赖关系由开发人员进行管理。
中间结果也放到 HDFS 文件系统中。对于迭代式数据处理性能比较差。
Reduce Task 需要等待所有的 Map Task 都完成后才开始计算。
时延高,只适用批量数据处理,对于交互式数据处理,实时数据处理的支持不够。
三、两者可合可分
Hadoop 除了提供为大家所共识的 HDFS 分布式数据存储功能之外,还提供了叫做 MapReduce 的数据处理功能。所以这里我们完全可以抛开 Spark,使用 Hadoop 自身的 MapReduce 来完成数据的处理。
相反,Spark 也不是非要依附在 Hadoop 身上才能生存。但如上所述,毕竟它没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作。这里我们可以选择 Hadoop 的 HDFS, 也可以选择其他的基于云的数据系统平台。但 Spark 默认来说还是被用在 Hadoop 上面的,毕竟,大家都认为它们的结合是最好的。
四、Spark 数据处理速度秒杀 MapReduce
Spark 因为处理数据的方式不一样,会比 MapReduce 快上很多。MapReduce 是分步对数据进行处理的: “从集群中读取数据,进行一次处理,将结果写到集群,从集群中读取更新后的数据,进行下一次的处理,将结果写到集群,等等…”
Spark 会在内存中以接近“实时”的时间完成所有的数据分析:“从集群中读取数据,完成所有必须的分析处理(依赖多个算子),将结果写回集群,完成,” Spark 的批处理速度比 MapReduce 快近 10 倍,内存中的数据分析速度则快近 100 倍。
如果需要处理的数据和结果需求大部分情况下是静态的,且有充足的时间等待批处理的完成,MapReduce 的处理方式也是完全可以接受的。
但如果你需要对时实流数据进行分析,比如来自工厂的传感器收集回来的数据,又或者用户访问网站的日志信息,那么更应该使用 Spark 进行处理。
五、灾难恢复机制
两者的灾难恢复方式不同,因为 Hadoop 将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。
Spark 的数据对象存储在分布于数据集群中的叫做弹性分布式数据集 (RDD: Resilient Distributed Dataset) 中。这些数据对象既可以放在内存,也可以放在磁盘,所以 RDD 同样也可以提供完成的灾难恢复功能。
六、Spark 优势
Spark 的优势不仅体现在性能提升上,Spark 框架为批处理(Spark Core),交互式(Spark SQL),流式(Spark Streaming),机器学习(MLlib),图计算(GraphX)提供了一个统一的数据处理平台。
Spark 通过在数据处理过程中成本更低的 Shuffle 方式,将 MapReduce 提升到一个更高的层次。利用内存数据存储和接近实时的处理能力,Spark 比其他的大数据处理技术的性能要快很多倍。
Spark 将中间结果保存在内存中而不是写入磁盘,当需要多次处理同一数据集时,这一点特别实用。
支持比 Map 和 Reduce 更多的函数。
Spark 的 RDD 是分布式大数据处理的高层次抽象的数据集合,对这个集合的任何操作都可以像函数式编程中操作内存中的集合一样直观、简便,但集合操作的实现确是在后台分解成一系列 Task 发送到集群上完成。
网友评论