一,NameNode:

1,  Namenode是中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名称空间(namespace)以及客户端对文件的访问。

2, 文件操作,Namenode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不会经过Namenode,只会询问它跟那个DataNode联系,否则Namenode会成为系统的瓶颈。

副本存放在哪些DataNode上由Namenode来控制,根据全局情况作出块放置决定,读取文件时Namenode尽量让用户先读取最近的副本,降低带块消耗和读取延时。

 3,Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

 4,Namenode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限)以及每个文件的块列表,以及块所在的DataNode等等。

二,DataNode

1,一个数据块在Datanode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

Datanode启动后想namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。

心跳是每3秒一次,心跳返回结果带有namenode给该Datanode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个Datanode的心跳,则认为该节点不可用。集群运行中可用安全加入和退出一些机器。

2, 文件切分成块,(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)

Datanode再本地文件系统存储文件块数据,以及块数据的校验和。可以创建,删除,移动和重命名文件,当文件创建,写入和关闭之后不能修改文件的内容。

3,当Datanode读取block的时候,它会计算checksum,如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。如果块已损坏,Client会读取其它Datanode上的block.namenode标记该块已经损坏,然后复制block达到预期设置的文件备份数。Datanode在其文件创建后三周验证其checksum.

最新文章

  1. Apache 与 php的环境搭建
  2. ASP.NET Web API 过滤器创建、执行过程(一)
  3. Google protobuf proto文件编写规则
  4. Movies
  5. An unexpected error has occurred" error appears when you try to create a SharePoint Enterprise Search Center on a Site Collection
  6. 258. Add Digits
  7. linux -cp/mv
  8. Nyoj 43 24 Point game 【DFS】
  9. js静态方法和实例方法
  10. BZOJ 1355: [Baltic2009]Radio Transmission( kmp )
  11. 有人提了一个问题:一定要RESTful吗?
  12. Python----多元线性回归
  13. Centos 7 关闭selinux and firewall
  14. python之requests 乱七八糟
  15. lua变量作用域
  16. Hibernate的like用法
  17. iOS性能调优系列(全)
  18. 软工之404 Note Found 队选题报告
  19. Netty4详解三:Netty架构设计(转)
  20. tcl之文件操作

热门文章

  1. 【Linux】中默认文本编辑器 vim 的入门与进阶
  2. JavaCV FFmpeg采集麦克风PCM音频数据
  3. 最开始的总结——JAVA
  4. Thread线程控制之sleep、join、setDaemon方法的用处
  5. NIO基础操作
  6. Linux常用命令(df&dh)
  7. python学习笔记 | macOS Big Sur动态壁纸食用指南
  8. Linux 服务器安装node环境
  9. 【Mysql】[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
  10. docker mysql 设置忽略大小写