Hadoop特点和技术介绍

Hadoop特点和技术介绍

1. 基本资料

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。

Hadoop就是一个分布式计算的解决方案。

2. 特点介绍

1. 分布式架构,可以处理数据量非常大的数据,可实现数据性能的线性扩展;

2. 多租户环境,实现多用户共同加工数据,数据无需频繁传输交换;

3. 文件系统采用HDFS,三份数据副本,实现文件系统的高可靠;

4. 有丰富的计算引擎,如MR、Hbase、SparkCore,基于MR可实现Hive,基于SparkCore可实现SparkSQL;

5. 基于Hadoop的Spark计算框架,未来可解决更多的数据处理计算需求。

3. 使用场景

大数据量存储:分布式存储(各种云盘,百度,360~还有云平台均有hadoop应用) 日志处理: Hadoop擅长这个 海量计算: 并行计算 ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库 使用HBase做数据分析: 用扩展性应对大量读写操作—Facebook构建了基于HBase的实时数据分析系统 机器学习: 比如Apache Mahout项目(Apache Mahout简介 常见领域:协作筛选、集群、归类) 搜索引擎:hadoop + lucene实现 数据挖掘:目前比较流行的广告推荐 大量地从文件中顺序读。HDFS对顺序读进行了优化,代价是对于随机的访问负载较高。 用户行为特征建模 个性化广告推荐 智能仪器推荐

4. 大数据存储对比

Hadoop特点和技术介绍

Hadoop特点和技术介绍

5. 架构图

Hadoop特点和技术介绍

6. 技术介绍

1. namenode

名字节点。要管理元数据信息(Metadata),注意,只存储元数据信息。

namenode对于元数据信息的管理,放在内存一份,供访问查询,也会通过fsimage和edits文件,将元数据信息持久化到磁盘上。Hadoop1.0版本利用了SecondaryNamenode做fsimage和edits文件的合并,但是这种机制达不到热备的效果。Hadoop1.0的namenode存在单点故障问题。

2. datanode

数据节点。用于存储文件块。为了防止datanode挂掉造成的数据丢失,对于文件块要有备份,一个文件块有三个副本。

3. rack

机架

4. client

客户端,凡是通过API或指令操作的一端都可以看做是客户端

5. blockSize

数据块。Hadoop1.0:64MB。Hadoop2.0 :128MB。

块大小的问题。从大数据处理角度来看,块越大越好。所以从技术的发展,以后的块会越来越大,因为块大,会减少磁盘寻址次数,从而减少寻址时间

6. HDFS读流程图

Hadoop特点和技术介绍

1.客户端发出读数据请求,Open File指定读取的文件路径,去找namenode要元数据信息。

2.namenode将文件的元数据信息返回给客户端。

3. 3客户端根据返回的元数据信息,去对应的datanode去读块数据。

假如一个文件特别大,比如1TB,会分成好多块,此时,namenode并是不一次性把所有的元数据信息返回给客户端。

4. 4客户端读完此部分后,再去想namenode要下一部分的元数据信息,再接着读。

5.读完之后,通知namenode关闭流

7. HDFS写流程

Hadoop特点和技术介绍


1.发起一个写数据请求,并指定上传文件的路径,然后去找namenode。namenode首先会判断路径合法性,然后会判断此客户端是否有写权限。然后都满足,namenode会给客户端返回一个输出流。此外,namenode会为文件分配块存储信息。注意,namenode也是分配块的存储信息,但不做物理切块工作。

2.客户端拿到输出流以及块存储信息之后,就开始向datanode写数据。因为一个块数据,有三个副本,所以图里有三个datanode。packet初学时可以简单理解为就是一块数据。

pipeLine:[bl1,datanode01-datanode03-datanode-07]

3.数据块的发送,先发给第一台datanode,然后再有第一台datanode发往第二台datanode,……。实际这里,用到了pipeLine 数据流管道的思想。

4.通过ack确认机制,向上游节点发送确认,这么做的目的是确保块数据复制的完整性。

5.通过最上游节点,向客户端发送ack,如果块数据没有发送完,就继续发送下一块。如果所有块数据都已发完,就可以关流了。

6.所有块数据都写完后,关流。


分享到:


相關文章: