HDFS架构详解-非官档
Namenode
1、namenode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的命名空间(namespace)以及客户端对文件的访问。
2、文件操作:namenode负责对元数据的操作,datanode负责处理文件内容的读取请求,跟文件内容相关的数据流读取操作不会经过namenode,只会询问它跟哪个datanode联系,否则namenode会成为系统的瓶颈。
3、副本存放在哪些datanode上由namenode来控制,根据全局情况做成块放置决定,client读取文件时namenode尽量让用户先读取最近的副本,降低带宽消耗和读取延迟。
4、Namenode全权管理数据块的复制,它周期性的从集群中的每个datanode接受心跳信号和块的报告(balockreport)。接收心跳信号意味着该datanode节点工作正常,块的报告包含了一个datanode上包含所有块的列表。
Datanode
1、一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度、块数据的校验和以及时间戳。
2、Datanode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。
3、心跳是每3秒一次,心跳返回结果带有namenode给该datanode命令如复制数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。
4、集群中可以安全的加入和退出一些机器,而不影响集群整体运作。
文件
1、文件切分成块(hadoop 2.x默认大小128m),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)。
2、Namenode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表以及块所在的datanode等等。
3、Datanode在本地文件系统存储文件块数据,以及块数据的校验和。
4、可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。
数据损坏(corruption)处理
1、当datanode读取block的时候,它会计算checksum
2、如果计算后的chencksum与block创建时的值不一样,说明该block已经损坏。
3、Client读取其他datanode上的block。
4、Namenode标记该块已经损坏,然后复制block达到预期设置的文件备份数。
5、Datanode在其文件创建后三周验证其checksum
HDFS Shell命令
1、调用文件系统(FS)Shell命令使用bin/hdfs dfs的形式
2、所有的FS Shell命令使用URI路径作为参数
3、URI格式是shemale://authority/path.HDFS的schema是hdfs,对于本地文件系统schema是file,其中schema和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认schema
4、例如:/parent/child可以表示成hdfs://namenode:namenodePort/parent/child
5、大多数FS Shell命令行为和对应的Linux Shell命令相似
HDFS架构详解-非官档的更多相关文章
- hadoop之hdfs架构详解
本文主要从两个方面对hdfs进行阐述,第一就是hdfs的整个架构以及组成,第二就是hdfs文件的读写流程. 一.HDFS概述 标题中提到hdfs(Hadoop Distribute File Syst ...
- hdfs架构详解(防脑裂fencing机制值得学习)
HDFS(Hadoop Distributed File System)是一个分布式文件存储系统,几乎是离线存储领域的标准解决方案(有能力自研的大厂列外),业内应用非常广泛.近段抽时间,看一下 HDF ...
- hdfs文件系统架构详解
hdfs文件系统架构详解 官方hdfs分布式介绍 NameNode *Namenode负责文件系统的namespace以及客户端文件访问 *NameNode负责文件元数据操作,DataNode负责文件 ...
- Hyperledger Fabric架构详解
区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...
- 领域驱动设计(Domain Driven Design)参考架构详解
摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...
- WeChatAPI 开源系统架构详解
WeChatAPI 开源系统架构详解 如果使用WeChatAPI,它扮演着什么样的角色? 从图中我们可以看到主要分为3个部分: 1.业务系统 2.WeChatAPI: WeChatWebAPI,主要是 ...
- hadoop hdfs uri详解
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- [转载]领域驱动设计(Domain Driven Design)参考架构详解
摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...
- NopCommerce源码架构详解--初识高性能的开源商城系统cms
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
随机推荐
- Scala单例对象和伴生对象
1.Scala单例对象 Scala单例对象是十分重要的,没有像在Java一样,有静态类.静态成员.静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员. ...
- scala中Map和Tuple
/** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...
- linux环境下执行RF测试脚本
1. 测试执行 测试管理平台需根据用户选中的测试案例,按照相应格式对执行启动命令进行组装和发送,触动案例的自动化测试执行. 命令格式根据测试模式(以项目为单位.以测试集为单位.以案例为单位)具有不同的 ...
- [SublimeText] 如何创建工程
Sublime Text 可以很方便地管理多个工程.使用Sublime Text的Projects,可以将不同根目录的文件组织起来成为一个工程,而不用将所有的文件都放到一个根目录下面. 1. 创建工程 ...
- leetCode练习题
1.求二叉树的最小深度: public class Solution { public int run(TreeNode root) { if(root==null) return 0; int l ...
- 《转载》Python并发编程之线程池/进程池--concurrent.futures模块
本文转载自Python并发编程之线程池/进程池--concurrent.futures模块 一.关于concurrent.futures模块 Python标准库为我们提供了threading和mult ...
- 《转载》Linux服务之搭建FTP服务器&&分布式文件服务器的比较
参考帖子: Linux服务之FTP vsftpd的使用 大型网站图片服务器架构的演进 rsync同步文件的艺术 rsync命令详解 深入理解Tomcat虚拟目录 (测试已经OK)
- xp下对dinput8.dll 游戏键盘输入的模拟 非函数hook
https://www.xuebuyuan.com/833929.html 很多游戏或者3d模拟软件为了更好的支持外设使用directinput作为输入接口调用.那么如果要模拟鼠标或键盘来控制游戏或者 ...
- 【转载】.NET中锁6大处理方法 悲观乐观自己掌握
我们为什么需要锁? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这就会产生冲突,这个就是著名的并发性问题. 图 1 并行性问题漫画 如何解决并发性问题? 借助正确的锁定策略可以解决并发性 ...
- WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX
具有主页菜单(中心或透视控件)的中心应用中心 你可能要设计包含许多功能的应用.当你看着这些功能时,可能会决定将它们整理到独立的区域中.这些区域最终会成为用户要访问的应用的独立部分.你需要设计一个简便的 ...