天天看点

Hadoop 历史 简介 特点 架构Hadoop

Hadoop

Hadoop 历史 简介 特点 架构Hadoop

hadoop官网戳这里

发展历史

Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件。 Apache Hadoop软件库是一个框 架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据)。 包括这些模块:

  • Hadoop Common:支持其他Hadoop模块的常用工具。
  • Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访 问。
  • Hadoop YARN:作业调度和集群资源管理的框架。
  • Hadoop MapReduce:一种用于并行处理大型数据集的基于YARN的系统。

上述每个模块有自己独立的功能,而模块之间又有相互的关联。

广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

产生背景

 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自 己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch的设计目标是构建一个大型的全网搜 索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问 题--------“如何解决数十亿网页的存储和索引问题”。 

  • 2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System, google公司为了存储海量搜索数据而设计的专用文件系统。 
  • 2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。

ps:2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用 了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch 

  • 2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数 据集(大于1TB)的并行分析运算。
  • 2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。 

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基础)的版本,对于入门学习最好。

Cloudera在大型互联网企业中用的较多。

Hortonworks文档较好。 

Hadoop特点

优势

高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素出现问题或存储出现故障,也不 会导致数据的丢失

高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点

高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理的速度

高容错性:能够自动将失败的任务重新分配 

劣势

不适合低延迟数据访问

无法高效存储大量小文件

不支持多用户写入及任意修改文件

Hadoop架构图

Hadoop 历史 简介 特点 架构Hadoop

上图中涉及到的技术名词解释如下:

Sqoop

sqoop 是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql)间进 行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

Flume

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚 合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Kafka

Kafka 是一种高吞吐量的分布式发布订阅消息系统,有如下特性: 

(1)通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息 存储也能够保持长 时间的稳定性能。

(2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息

(3)支持通过 Kafka 服务器和 消费机集群来分区消息。 (4)支持 Hadoop 并行数据加载。 

Storm

Storm 为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时 处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm 也可被用于“连 续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式 

输出给用户

Spark

Spark 是当前最流行的开源大数据内存计算框架。可以基于 Hadoop 上存储的大数据进行计 算。

Oozie

Oozie 是一个管理 Hdoop 作业(job)的工作流程调度管理系统。Oozie 协调作业 就是通过时间(频率)和有效数据触发当前的 Oozie 工作流程。

Hbase

HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库, 它是一个适合于非结构化数据存储的数据库。

Hive

hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张 数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专 门的 MapReduce 应用,十分适合数据仓库的统计分析。

Mahout

Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用 例:  推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。 聚集:收集文件并进行相关文件分组。 分 类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确 的归类。 频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。 

ZooKeeper

Zookeeper 是 Google 的 Chubby 一个开源的实现。它是一个针对大型分布 式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能 稳定的系统提供给用户。 

继续阅读