What is Hadoop?
Hadoop是一个框架,允许在集群中使用简单的编程模型对大规模数据集进程分布式计算。
1.hadoop包含许多功能模块,它们各自负责了Hadoop的一部分功能,其中最主要的是Common、HDFS和YARN。HDFS负责数据的存储,YARN负责统一资源调度和管理,Common则提供远程过程调用RPC、序列化机制。
2.Hadoop适合处理大规模数据,并且能够实现分布式存储和分布式计算。
3.Hadoop被部署在一个集群上。
Hadoop的生态圈
狭义的Hadoop仅仅代表了Common、HDFS、YARN和MapReduce模块。但是随着围绕Hadoop的越来越多的软件出现,构成了一个生机勃勃的Hadoop生态圈。
1.HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop的基石。它是一个具有高度容错性的文件系统,适合部署在廉价的机器上。HDFS能提供高度的吞吐量的数据访问,非常适合大规模数据集的应用。
2.YARN(Yet Another Resource Negotiator,另一种资源调度器)是统一的资源管理和调度平台。
3.MapReduce是一种编程模型,利用函数式的思想,将对数据集处理的过程分为Map和Reduce两个阶段。MapReduce这种编程模型非常适合分布式计算。
4.Spark是新一代的计算机框架,对迭代计算很有优势,和MapReduce相比,性能提升明显。并且可以和YARN进行集成,Spark也提供支持SQL的组件SparkSQL等。
5.Hbase是一个分布式的、面向列族的开源数据库,擅长大规模数据的随机、实时读写访问。
6.Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,提供简单的SQL查询功能,并将SQL语句转换为MapReduce作业运行。Hive对Hadoop来说是非常重要的模块,大大降低了Hadoop的使用门槛。
7.Pig和Hive类似,也是对大型数据集进行分析和评估的工具,不过与Hive提供SQL接口不同的是,它提供一种高层的、面向领域的抽象语言:Pig Latin,与HQL相比,Pig latin更加灵活,但学习成本高。
8.Impala对存储在HDFS、Hbase的海量数据提供交互式查询的SQL接口。Impala的特点是查询非常迅速,大幅度领先Hive。
9.Mahout是一个机器学习和数据挖掘库,它利用MapReduce实现了经典的机器学习算法,并使其具有良好的可扩展性。
10.Flume使一个高可用、高可靠、分布式的海量日志采集、聚合和传输系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接收方的能力。
11.Sqoop是SQL to Hadoop的缩写,主要作用在于在结构化的数据存储(关系型数据库)与hadoop之间进行数据双向交换。也就是说,Sqoop可以将关系型数据库的数据导入到Hadoop的HDFS、Hive,也可以将Hdfs、Hive的数据导出到关系型数据库中。Sqoop充分利用Hadoop的优点,整个导入导出都是由MapReduce计算框架实现并行化,非常高效。
12.Kafka是一种高吞吐量的分布式发布订阅消息系统,具有分布式、高可用的特点,在大数据系统里面被广泛的应用,如果把大数据比作一台机器的化,那么Kafka这种消息中间件就类似于前端总线,它链接了平台里面的各个组件。