hadoop基础知识(1)

1. Hadoop概述

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。所以用户可以利用Hadoop轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。

2. HDFS优缺点:

优点:
1)数据冗余备份、高容错性。文件以block的方式,多副本存储在集群的节点上,保证硬件的容错,当某一机器损坏时,不至于数据丢失
2)适合处理流式的数据访问。流式:一次写入,多次读取的操作
3)适合存储大文件
4)可构建在廉价的机器上

缺点:
1)不适合低延迟的数据访问。
2)不适合小文件索引。大量小文件,会占用namenode大量空间存储目录和块信息。甚至会导致小文件寻址时间超过读取时间。
3)不支持并发写入,不能文件随机更改。写文件时只能一个写,不能多线程同时写。更改时只能追加,不能文件随机修改。

3. HDFS组成架构:
HDFS采用Master/Slave的架构存储数据,由HDFS Client、NameNode、DataNode和Secondary NameNode四部分组成。
Client:客户端  
1、文件切分。文件上传HDFS时,Client按照Block大小切分文件,然后进行存储  
2、与NameNode交互,获取文件位置信息
3、与DataNode交互,读取或写入数据  
4、Client提供一些命令管理和访问

HDFSNameNode:Master(管理者)  
1、管理HDFS的名称空间  
2、管理数据块(Block)映射信息  
3、配置副本策略  
4、处理客户端读写请求

DataNode:Slave(NN下达命令执行实际的操作)  
1、存储实际的数据块  
2、执行数据块的读/写操作

Secondary NameNode
并非NameNode的热备,当NN停止服务时,它并不能马上替换NN并提供服务  
1、辅助NN,分担其工作量  
2、定期合并fsimage和fsedits,并推送给NN
3、在紧急情况下,可辅助恢复NN

4. hdfs文件读取过程

1)客户端调用FileSystem对象的open()方法在分布式文件系统中打开要读取的文件。  
2)分布式文件系统通过使用RPC(远程过程调用)来调用namenode,确定文件起始块的位置。  
3)分布式文件系统的DistributedFileSystem类返回一个支持文件定位的输入流FSDataInputStream对象,FSDataInputStream对象接着封装DFSInputStream对象(存储着文件起始几个块的datanode地址),客户端对这个输入流调用read()方法。  
4)DFSInputStream连接距离最近的datanode,通过反复调用read方法,将数据从datanode传输到客户端。  
5) 到达块的末端时,DFSInputStream关闭与该datanode的连接,寻找下一个块的最佳datanode。  
6)客户端完成读取,对FSDataInputStream调用close()方法关闭连接。

5. hdfs文件写入过程

1) 客户端通过对DistributedFileSystem对象调用create()函数来新建文件。  
2) 分布式文件系统对namenod创建一个RPC调用,在文件系统的命名空间中新建一个文件。  
3)Namenode对新建文件进行检查无误后,分布式文件系统返回给客户端一个FSDataOutputStream对象,FSDataOutputStream对象封装一个DFSoutPutstream对象,负责处理namenode和datanode之间的通信,客户端开始写入数据。  
4)FSDataOutputStream将数据分成一个一个的数据包,写入内部队列“数据队列”,DataStreamer负责将数据包依次流式传输到由一组namenode构成的管线中。  
5)DFSOutputStream维护着确认队列来等待datanode收到确认回执,收到管道中所有datanode确认后,数据包从确认队列删除。  
6)客户端完成数据的写入,对数据流调用close()方法。  
7)namenode确认完成

6.Block的副本放置策略
第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的 机架的节点上。
第三个副本:与第二个副本相同机架的节点。
更多副本:随机节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值