1.Hadoop生态的各个组件及其功能

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

(2)mapreduce(分布式计算框架)是一种计算模型,用于处理大数据量的计算。

(3) hive(基于hadoop的数据仓库)定于了一种类似sql的查询语言(hql)将sql转化为mapreduce任务在hadoop上执行。

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

(5)zookeeper(分布式协作服务)解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

(6)sqoop(数据同步工具)sqoop是sql-to-hadoop的缩写,主要用于传统数据库和hadoop之间传输数据。

(7)pig(基于hadoop的数据流系统)定义了一种数据流语言-pig latin,将脚本转换为mapreduce任务在hadoop上执行。

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

(9)flume(日志收集工具)cloudera开源的日志收集系统,具有分布式,高可靠,高容错,易于定制和扩展的特点。

HDFS和数据库 hdfs是数据库吗_hadoop

 

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

Hadoop和Spark都是并行计算,两者都是用MR模型进行计算,Hadoop一个作业称为一个Job,Job里面分为Map Task和Reduce Task阶段,每个Task都在自己的进程中运行,当Task结束时,进程也会随之结束;Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGScheduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset,由TaskScheduler分发到各个executor中执行;executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。

 

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

Hadoop生态系统中的某些组件实现的功能,spark目前无法替代它。例如,storm可以实现毫秒响应的流量计算,而spark不能实现毫秒响应。另一方面,企业中已有许多基于现有Hadoop组件开发的现有应用程序,完全转移到spark需要一定的成本。因此,在很多企业实际应用中,统一部署Hadoop和spark是一个现实合理的选择。