1.大数据概述

1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。

Hadoop生态包括YARN、Zookeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume、Ambari等功能组件,并且以HDFS和MapReduce为核心。

Hadoop生态圈如图1所示:

1.大数据概述

                     图1-1 Hadoop生态圈图

 

 

 

1.1、HDFS

HDFS是hadoop体系中数据存储管理的基础。他是一个高度容错的系统,能检测和应对硬件故障。

1.2、Mapreduce

Mapreduce是一种计算模型,用于处理大数据量的计算。其中Mapreduce对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。

1.3、Hive

最初用于解决海量结构化的日志数据统计问题,Hive定于了一种类似SQL的查询语言(HiveQL)将SQL转化为Mapreduce任务在Hadoop上执行。

1.4、Hbase

Hbase是一个针对结构化数据的可伸缩,高可靠,高性能,分布式和面向列的动态模式数据库。

和传统关系型数据库不同,hbase采用了bigtable的数据模型:增强了稀疏排序映射表(key/value)。

其中,键由行关键字,列关键字和时间戳构成,Hbase提供了对大规模数据的随机,实时读写访问,同时,Hbase中保存的数据可以使用Mapreduce来处理,它将数据存储和并行计算完美结合在一起。

1.5、ZooKeeper

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

 

1.6、Sqoop

Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据。

数据的导入和导出本质上是Mapreduce程序,充分利用了Mapreduce的并行化和容错性。

1.7、Pig

将脚本转换为Mapreduce任务在Hadoop上执行,通常用于离线分析。

1.8、Mahout

Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

Mahout现在已经包含了聚类,分类,推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。

1.9、Flume

Flume具有分布式,高可靠,高容错,易于定制和扩展的特点。

他将数据从产生,传输,处理并写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。

1.10、Yarn

Yarn是一个资源调度平台,负责为运算程序调度服务器运算资源,相当于一个分布式的操作系统平台。

 

2.对比Hadoop与Spark的优缺点。

2.1、运行速度

系统运行速度与数据处理的效率直接相关,早期的Hadoop,基于分布式计算框架MapReduce,基于磁盘进行计算,因为需要不断从磁盘读取,所以运行整体速度会减慢。

而Spark,基于内存计算,中间计算结果也存储在内存中,迭代效率更高,数据处理效率也大大提高。

2.2、容错性

面对大规模的数据处理任务,容错性是非常值得关注的指标。Spark引进弹性分布式数据集RDD的概念,在RDD计算时可以通过CheckPoint来实现容错。

而Hadoop的容错机制,HDFS保证数据的容错性性,ZooKeeper以及Yarn组件等保证运行的容错性。

2.3、编程操作

Spark支持的数据集操作类型很多,也就是对RDD的操作,各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。而相对来说,Hadoop就要单一得多,只有Map和Reduce两个阶段。

 

3.如何实现Hadoop与Spark的统一部署?

一方面,由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由Spark取代的,比如,Storm可以实现毫秒级响应的流计算,但是,Spark则无法做到毫秒级响应。另一方面,企业中已经有许多现有的应用,都是基于现有的Hadoop组件开发的,完全转移到Spark上需要一定的成本。因此,在许多企业实际应用中,Hadoop和Spark的统一部署是一种比较现实合理的选择。

由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署(如图3-1所示)。这些不同的计算框架统一运行在YARN中,可以带来如下好处:

1.大数据概述

 

                      图 3-1 

第一,计算资源按需伸缩。

第二,不同负载应用混搭,集群利用率高。

第三,共享底层存储,避免数据跨集群迁移。

上一篇:1.大数据概述


下一篇:JavaScript:下拉列表框的事件处理