GFS Key Components

  • components failures are a norm
  • even space utilisation
  • write-once-read-many

GFS and Hadoop Distributed File System


GFS主要分为:Application 、Master、ChannelServer
hdfs主要分为:Appllcation 、 NameNode 、DataNode三部分

how to read file from hdfs


HDFS client 运行在client node 上的client jvm上。

读取文件的流程

  1. 打开分布式文件系统上的文件
  2. 从NameNode处取的文件块的位置
  3. HDFS client将块位置信息传给FSDataInputStream
  4. FSDataInputStream再从相应的DataNode里面读取其中一个块数据
  5. FSDataInputStream再从相应的DataNode里面读取另一个块数据
  6. 关闭FSDataInputStream

写入文件的流程


hdfs client 运行在client jvm上,client jvm运行在client jvm上。
写入文件的流程:
1. HDFS client 在Distributed FileSystem上创建文件
2. DistributedFileSystem 在NameNode上create一个文件
3. HDFS client 通过FSDataInputStream向datanode发送write packet
4. 至少三个datanode组成Pipeline of datanodes写入多个副本
5. datanode向FSDataInpuStream发送ack packet
6. 关闭

In DFS,you can “append” into file,but cannot “modify” a file in the middle. Why?
DFS的核心特性write once read many time 描述了一种数据存储策略。信息一旦写入就不能修改,因为修改操作需要对对底层的存储结构进行修改。如果需要修改分布式文件系统(例如hdfs)中的文件,可以写一份新的同样文件名的数据。旧的文件在hdfs在整理数据的时候会丢弃。

HDFS应用需要一个“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作。

最新文章

  1. Java 9将采用新的版本字符串格式
  2. ADO.Net(五)——实战:对战游戏
  3. 破解ZIP加密文件密码fcrackzip
  4. Poj1131-Octal Fractions
  5. php开发api接口
  6. 你可以用OpenCV来干什么
  7. 1.一个.java源文件中是否可以包括多个类?2...
  8. RTMP直播应用与延时分析
  9. Swagger入门教程
  10. numpy的基础运算-【老鱼学numpy】
  11. 洛谷P1021邮票面值设计 [noip1999] dp+搜索
  12. Spring AOP术语:连接点和切点的区别。
  13. [03] mapper.xml的基本元素概述
  14. vue-cli 3.0 路由懒加载
  15. arguments.callee 和 caller
  16. 如何使用cubemx 配置freertos,实时查看FreeRTOS任务列表和运行状态
  17. var、let、const的区别,以及作用范围。
  18. Java模块化开发
  19. JZYZOJ1454 NOIP2015 D2T3_运输计划 二分 差分数组 lca tarjan 树链剖分
  20. hdu2586倍增lca

热门文章

  1. 【转】常见Java面试题 – 第二部分:equals与==
  2. UGUI源码之Graphic
  3. GoCenter助力Golang全速前进
  4. cogs 1316. 数列操作B 区间修改 单点查询
  5. 如何设计一个优雅的RESTFUL的接口
  6. 位运算上的小技巧 - AtCoder
  7. 设置java启动项目
  8. JMeter——分布式压测
  9. Java入门 - 语言基础 - 18.正则表达式
  10. MySQL多表联查以及以及架构