请谈谈你对Hadoop的理解

来源:互联网 发布:apache 更新 编辑:程序博客网 时间:2024/05/30 19:34

一、请谈谈你对Hadoop的理解?


1、Hadoop是什么?(What is Hadoop)
       Hadoop是Apache软件基金会的一个开源项目,是一个分布式处理海量数据的软件框架。
       它为开发者提供了一个分布式系统的基础架构,用户可以在不了解分布式系统的底层细节的情况下开发分布式的应用,充分利用由大量廉价硬件设备组成的集群的强大功能,实现存储和高速运算。Hadoop项目中包括一个分布式的文件系统HDFS,一个分布式的并行编程框架MapReduce以及包括Hive、HBase、Mahout、Pig、Zookeeper、Avro、Chukwa等周边生态系统。
    
2、为什么使用Hadoop?(Why use Hadoop)

       提升单台计算机速度是过去的办法,慢慢走到了极端,CPU的速度不可能再大幅度提升了。人们一直希望通过增加计算机数量提升运算。

       例如:在过去,计算机运算的效率依靠的是CPU的速度,随着对计算机体系结构的不断改善和研究,微型机CPU的处理速度基本达到稳定值了。也就是说过去计算速度依靠的是“个人英雄主义”。而现在呢?通过增加计算机数量(专业术语:集群)并行运算以提升运算和数据处理速度。可见,现在计算速度依靠的是“团体作战主义”。如果过去一台计算机处理一批数据需要24小时,现在通过同时在240台计算机上并行处理数据,仅仅需要10分钟。

     (个人英雄主义->团体作战主义)


3、Hadoop框架的作用
       它为应用程序提供了一组既稳定又可靠的接口。Hadoop计算框架的目的是构建一个具有高可靠性和良好扩展性的分布式操作系统。
     
4、Hadoop的特性(The feature of Hadoop)
       Hadoop是可靠的,如果计算元素或者存储数据失败,它可以启动和维护多个工作数据副本,确保失败的节点重新对数据进行分布式处理。
       Hadoop是高效的,它的工作方式是并行的,采用这种方式加快处理数据的速度。
       Hadoop是可伸缩的,可以处理不同级别的数据,大到能够处理PB级的数据。(1PB=1000TB)

5、Hadoop的应用前景(The application prospect of Hadoop)
云计算是IT界的第三次浪潮。在这次浪潮中,各大厂商面临着极大的挑战--他们需要从TB级乃至PB级数据中挖掘出有用的数据,并对这些海量的数据进行更快捷、高效率的处理。于是IT厂商推出了自己的云计算平台。Google的
MapReduce、GFS、BigTable成为互联网的领头羊,然而它的技术是保密的,Google公司并没有开源MapReduce的
实现细节。Amazon的AWS、微软的Azure和IBM的蓝云等也是云计算的典型代表,但它们都是商业性平台,对想要

继续研究和发展云计算技术的人员或科研团队来说,无法获得更多的了解。

Hadoop是Google云计算平台的开源实现(山寨版),越来越多的公司和组织选择使用Hadoop开源项目作为其解决方案。

Hadoop可以应用到:搜索引擎、广告优化、机器学习。

在未来,企业应用需求要求有更强的计算能力、更广泛的数据分布、更低的耦合性、更强的稳定性以及更灵活的可扩展性,采用传统的集群模式在这些要求面前显得力不从心了。如果采用分布式技术,就可以运用自己已有的资源,组织更加庞大的计算机网络、更大的集群来满足各行业对应用的需求,而Hadoop就是一个相当成功的分布式计算平台。

现代社会的信息量飞速增长,在这些信息里包含着大量的数据,主要有个人数据和工业数据。到2020年,预计数字信息超过1/3的内容将驻留在云平台或者借助云平台来进行处理数据。那么,如何高效地存储和管理这些数据,又如何分析这些数据呢?可以采用Hadoop系统,它在面对存储、管理分析这些数据时,采用分布式存储方式来存储数据,提高了读/写数据的速度并扩大了数据的存储容量;采用MapReduce来整合分布式文件系统的数据,使得分析和处理数据达到了高效率;同时Hadoop采用存储冗余数据的方式来保证数据的安全性。

 起源于Apache基金会项目,随着越来越多的用户加入,扩大了使用面,对其进一步开发和完善,到现在已经形成一个强大的生态系统。

从2009年开始,大力发展云计算和大数据,Hadoop作为海量数据分析的最佳解决方案,受到越来越多IT厂商的关注,使得Hadoop发展飞速,出现了Hadoop的商业版以及相匹配的Hadoop产品,包括软件和硬件产品。

国内淘宝、中国移动、金山、腾讯、百度、网易、新浪等。淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的“大云”系统用于对数据进行分析并对外提供服务;金山专注安全云;腾讯提出“腾云”、WebQQ;百度采用Hadoop进行搜索日志的分析和网页数据的挖掘工作。


      Hadoop将在更多的领域中扮演幕后英雄,将为我们的生活带来更多优质的服务。
   
6、Hadoop的体系结构

core/common:为Hadoop其他子项目提供支持的常用工具,主要包括FileSystem、RPC和串行化库,它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该云平台上的软件开发提供了所需的API。
    
Avro:用于数据序列化的系统。它提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC的功能和简单的动态语言集成功能。其中,代码生成器既不需要读/写文件数据,也不需要使用或实现RPC协议,它只是一个可选的对静态类型语言的实现。

7、HDFS的体系结构
     
8、MapReduce的体系结构

    

MapReduce的基本概述

采用MapReduce架构实现的程序能够在由大量的普通配置的计算机构成的集群中实现并行化操作。MapReduce系统在运行过程中只关心数据如何分割、如何调度,以及集群中计算机如何对错误进行处理,管理着计算机之间的通信。采用MapReduce架构可以使那些没有进行并行计算和分布式计算的开发人员能充分利用分布式系统的丰富资源进行并行式、分布式的开发。

MapReduce框架由一个单独的master JobTracker和集群节点上的slave TaskTracker共同组成。master负责调度一个作业中的所有任务,把这些任务分布在不同的slave上。master监控slave节点上这些任务的执行情况,并重新执行失败的任务,而slave仅负责执行由master指派的任务。

MapReduce是什么

MapReduce是一种编程模型,一种云计算的核心计算模型。

1)MapReduce主要用来解决什么问题

MapReduce致力于解决大规模数据处理的问题。基于分治法的思想,利用局部性原理将整个问题分而治之。数据在处理之前已经将数据集分布到各个节点上,处理时,每个节点先就近读取本地存储的数据来进行Map处理,将Map处理后的数据再进行合并(combine)排序(shuffle和sort)后再分发到Reduce节点。

2)MapReduce的核心思想

MapReduce编程模式的主要思想是将自动分割的要执行问题拆解成Map(映射)和Reduce(化简)的方式。它的两项核心操作是Map和Reduce。在数据分割后通过Map函数的程序将数据映射成不同的区块,分配给计算机群处理,达到分布式运算的效果。再通过Reduce函数的程序将结果汇整,从而输出开发者需要的结果。

9、Hadoop的数据管理
Hadoop的数据管理主要包括Hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库工具Hive的数据管理。它们都有自己完整的数据定义和体系结构,以及实现数据从宏观到微观的立体管理方法。
   1)HDFS的数据管理
HDFS是分布式计算、分布式存储的基石。HDFS文件系统的管理主要通过3个重要的角色来进行:名字节点NameNode、数据节点DataNode和客户端Client。
NameNode是分布式文件系统中的管理者,它主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode节点将文件系统的Metadata存储
在内存中,Metadata的信息主要包括文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode中的信息等。DataNode是文件存储的基本的单元,
它将文件块存储在本地文件系统中,保存了所有的Block的Metadata,同时周期性地将所有存在的Block信息发送给NameNode。Clinet就是需要获取分布式
文件系统文件的应用程序。
   2)HBase的数据管理
HBase是一个分布式的、面向列的开源数据库。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据
存储的数据库。HBase是Google BigTable的开源实现。
   3)Hive的数据管理
Hive作为一个数据管理仓库,它的数据管理按照使用层次方面来看,可以从元数据存储、数据存储和查询计划3个方面来介绍
 ①元数据存储
   Hive数据仓库将元数据存储在关系数据库中,如MySQL、Derby。Hive中的元数据包括表的名字、表的列和分区及其属性、表的属性、表的数据所在目录。
   Hive的数据存储在HDFS中,大部分查询是通过MapReduce来完成的,但是带有*的查询是不会生成MapReduce任务的。
②数据存储
   在Hive中没有专门的数据存储格式,也不需要为数据建立索引,用户可以自由地在Hive中组织表。在组织表之前创建表时通知Hive在数据中采用列分隔符合行分隔符这样
   Hive就可以解析数据了。
 ③查询计划
   查询计划是通过解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化最后生成查询计划。生成的查询计划存储在HDFS中,并在MapReduce调用执行。
   

0 0