Hadoop原理

Hadoop核心

  •         Hadoop的核心就是HDFSMapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapReduce是什么

  •      HDFS为海量数据提供存储

  •      MapReduce为海量数据提供计算


  • HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。

 

HDFS:

1、大数据文件,适合上T级别的大文件或者一堆大数据文件的存储,海量小文件不适用。

2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

3、流式数据访问,HDFS不支持修改数据,新版本中支持追加。

4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

6、不支持挂载


HDFS的关键元素:

Block:将一个文件进行分块,通常是64M。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。

DataNode:分布在廉价的计算机上,用于存储Block块文件。


MapReduce

    Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。


整个流程图中有三个重要角色:NameNode、DataNode和Client。

NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。

DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。

Client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系。

文件写入:

1.Client向NameNode发起文件写入的请求。

2.NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。

3.Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。


文件读取:

1.Client向NameNode发起文件读取的请求。

2.NameNode返回文件存储的DataNode的信息。

3.Client读取文件信息。


文件Block复制:

1.NameNode发现部分文件的Block不符合最小复制数或者部分DataNode失效。

2.通知DataNode相互复制Block。

3.DataNode开始直接相互复制。

3.MapReduce和HDFS来看Hadoop的结构:


Hadoop结构示意图


在Hadoop的系统中,会有一台Master,主要负责NameNode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave,每一台Slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务



Hive:

1、要想让Hadoop执行分析工作,要会Java,写map函数,hive就是将整个mapreduce的编程框架抽象成一个系统,当用户想执行一个查询操作的时候,只需向hive发一个sql命令,hive将命令转化成map函数,reduce函数

2、类似于sql的功能的接口(非关系型数据库,NoSql),也是存储,工作在HDFS之上    

3、不支持修改数据


HBase:

1、工作在HDFS上

2、支持数据的修改操作,也是存储,

3、非关系型数据库NoSql

4、支持多版本键值

5、把数据接收并存下来

・key-value:键-值:name=zhangsan


把关系型数据库中的数据导入到hadoop里

RDBMS――>sqoop把数据读取出来――>导入到HBase中――>HBase最终存到HDFS中



你可能感兴趣的:(计算机,经典,计算器,应用程序,吞吐量)