设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] 【Hadoop】HDFS

[复制链接]
发表于 2015-7-12 13:00:20 | 显示全部楼层 |阅读模式
1.本文目的
  通过解析客户端创建文件流程,认知hadoop的HDFS系统的一些功能和概念。

2.主要概念

2.1 NameNode(NN)
  HDFS系统核心组件,负责分布式文件系统的名字空间管理、INode表的文件映射管理。如果不开启备份/故障恢复/Federation模式,一般的HDFS系统就只有1个NameNode,当然这样是存在单点故障隐患的。
  NN管理两个核心的表:文件到块序列的映射、块到机器序列的映射。
  第一个表存储在磁盘中,第二表在NN每次启动后重建。

2.2 NameNodeServer(NNS)
  负责NN和其它组件的通信接口的开放(IPC、http)等。
  NN通过客户端协议(ClientProtocol)和客户端通信,通过数据节点协议(DataNodeProtocol)和DN通信。

2.3 FSNameSystem
  管理文件系统相关,承担了NN的主要职责。

2.4 DataNode(DN)
  分布式文件系统中存放实际数据的节点,存储了一系列的文件块,一个DFS部署中通常有许多DN。
  DN和NN,DN和DN,DN和客户端都通过不同的IPC协议进行交互。
  通常,DN接受来自NN的指令,比如拷贝、删除文件块。
  客户端在通过NN获取了文件块的位置信息后,就可以和DN直接交互,比如读取块、写入块数据等。
  DN节点只管理一个核心表:文件块到字节流的映射。
  在DN的生命周期中,不断地和NN通信,报告自己所存储的文件块的状态,NN不直接向DN通信,而是应答DN的请求,比如在DN的心跳请求后,回复一些关于复制、删除、恢复文件块的命令(comands)。
  DN和外界通信的接口会报告给NN,想和此DN交互的客户端或其它DN可以通过和NN通信来获取这一信息。

2.5 Block
  文件块,hadoop文件系统的原语,hadoop分布式文件系统中存储的最小单位。一个hadoop文件就是由一系列分散在不同的DataNode上的block组成。

2.6 BlockLocation
  文件块在分布式网络中的位置,也包括一些块的元数据,比如块是否损坏、块的大小、块在文件中的偏移等。

2.7 DFSClient
  分布式文件系统的客户端,用户可以获取一个客户端实例和NameNode及DataNode交互,DFSClient通过客户端协议和hadoop文件系统交互。

2.8 Lease
  租约,当客户端创建或打开一个文件并准备进行写操作,NameNode会维护一个文件租约,以标记谁正在对此文件进行写操作。客户端需要定时更新租约,否则当租约过期,NN会关闭文件或者将文件的租约交给其它客户端。

2.9 LeaseRenewer
  续约管控线程,当一个DFSClient调用申请租约后,如果此线程尚未启动,则启动,并定期向NameNode续约。

三.创建一个文件
  当hadoop的分布式集群启动之后,可以通过FS或Shell来创建文件,FS创建文件的命令如下:
  

//cluser是hadoop集群,通过fs和集群文件系统交互  
final DistributedFileSystem fs = cluster.getFileSystem();
  
// 要创建的文件名
  
final Path tmpFile1 = new Path("/tmpfile1.dat");
  

  
//创建文件
  
public static void createFile(FileSystem fs, Path fileName, long fileLen,
  short replFactor, long seed) throws IOException {
  if (!fs.mkdirs(fileName.getParent())) {
  throw new IOException("Mkdirs failed to create " +
  fileName.getParent().toString());
  }
  FSDataOutputStream out = null;
  try {
  out = fs.create(fileName, replFactor);
  byte[] toWrite = new byte[1024];
  Random rb = new Random(seed);
  long bytesToWrite = fileLen;
  while (bytesToWrite>0) {
  rb.nextBytes(toWrite);

  int bytesToWriteNext = (1024

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85854-1-1.html 上篇帖子: Hadoop学习笔记(四):HBase 下篇帖子: Hadoop科普文—常见的45个问题解答
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表