1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。
Hadoop生态包括YARN、Zookeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume、Ambari等功能组件,并且以HDFS和MapReduce为核心。
Hadoop生态圈如图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中,可以带来如下好处:
图 3-1
第一,计算资源按需伸缩。
第二,不同负载应用混搭,集群利用率高。
第三,共享底层存储,避免数据跨集群迁移。