Hadoop概述

Hadoop起源

2002年,Apache Nutch项目的Hadoop开始,属于Apache Lucene的子项目。
2004年,Google在“操作系统与实现”会议上公开发表了题为MapReduce:Simplified Data Proccessing on Large Clusters的论文后,收到启发的Doug Cutting等人开始尝试实现MapReduce计算框架,并与NDFS结合,用以支持Nutch引擎的主要算法。
2006年,由于NDFS和MapReduce在Nutch引擎中有良好的应用,它们在2月被分离出来,称为一个独立完整的软件,并命名为Hadoop
2008年初,hadoop已经称为Apache的顶级项目,包含众多子项目,被应用在包括Yahoo在内的很多互联网公司。

Hadoop优点

高可靠性 Hadoop按位存储和处理数据的能力值得人们信赖。
高扩展性 Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可用方便地扩展到数以千计的节点中。
高效性 Hadoop能够在节点之间动态地移动数,并保证各个节点的动态平衡,因此处理速度非常快
高容错性 Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
低成本 与一体机、商用数据仓库以及各种数据集市相比,hadoop是开源的,项目的软件成本大大降低

Hadoop的局限性

时效性低 Hadoop是高吞吐量的系统,不适合低延时的交互式数据访问,如实时返回结果数据就不是Hadoop目前能够做到的。
不适合存储大量的小文件 Hadoop适合存储大文件,不适合存储大量的小文件。因为NameNode会将元数据信息存储在内存中,Hadoop存储大量的小文件会占用大量NameNode的内存。导致Hadoop的存储受限于NameNode的内存大小,极大地限制Hadoop的存储空间
不支持任意修改文件 Hadoop不支持对文件的任意修改,但是可以对文件进行追加操作,适合一次写入,多次读取。
不支持多人同时进行写操作 Hadoop不支持对人同时进行写操作,在某一时刻,只能有一个人对Hadoop执行写操作。

Hadoop大数据处理的意义

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对适合,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

Hadoop组件

HDFS(Hadoop分布式文件系统) Hadoop体系中数据存储管理的基础
MapReduce(分布式计算框架) 一种计算模型,用于处理大数据量的计算。其中map对应数据集上的独立元素进行指定操作,生成键值对形式,reduce则对中间结果中相同的键的所有值进行规约。
Hive(基于hadoop的数据仓库) 最初用于解决海量结构化的日志数据统计问题。
Hbase(分布式列存数据库) 针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
zookeeper(分布式协作服务) 解决分布式环境下的数据管理问题:统一命名、状态同步、集群管理、配置同步等
sqoop(数据同步工具) 一个数据导入/导出工具,主要用于传统数据库和hadoop之间传输数据,可以将Hadoop HDFS中的数据导出到关系型数据库中,也可以将关系型数据库中的数据导入Hadoop HDFS中。
pig(基于Hadoop的数据流系统) 一款支持大数据并行化处理的工具,定义了一种数据流语言-pig latin,将脚本转换为mapreduce任务在Hadoop上执行。
mahout(数据挖掘算法库) 主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建只能应用程序。
flume(日志收集工具) 一款日志收集工具,能够实时监听并收集服务器上的日志信息,并可以根据配置将日志信息发送到HDFS或其他的框架进行处理。
YARN(资源管理器) Hadoop框架用于作业调度和集群资源管理的框架,为运行于Hadoop上的程序提供服务器运算资源。主要负责Hadoop的资源分配和调度工作。

MapReduce编程模型

MapReduce编程模型借鉴了“分而治之”的思想,以键值对的形式来进行数据的输入和输出,它将待处理的数据集分解为多个小的键值对来处理。
MapReduce编程模型将负责的并行计算过程高度抽象到map()函数和reduce()函数中。
MapReduce编程模型将一个大问题分解成多个小的计算问题,由多个map()函数对这些分解后的小问题进行并行计算,输出中间计算结果,然后由reduce()函数对map()函数的输出结果进行进一步合并,得出最终的计算结果。

HDFS(分布式文件系统)

HDFS是Hadoop存储海量数据的基石,能够提供对应用程序数据的高吞吐量访问。
HDFS是用于在大规模集群上部署并运行的分布式文件系统,其使用Master/Slave架构模式。
Hadoop从Hadoop2.0开始支持NameNode HA,整个集群中只能同时又一个NameNode处于工作状态,并且有多个DataNode。

posted @ 2022-04-02 09:33  霜鱼CC  阅读(30)  评论(0)    收藏  举报