hdfs深入:03、hdfs的架构以及副本机制和block块存储
HDFS分布式文件系统设计目标
1、 硬件错误 由于集群很多时候由数量众多的廉价机组成,使得硬件错误成为常态
2、 数据流访问 所有应用以流的方式访问数据,设置之初便是为了用于批量的处理数据,而不是低延时的实时交互处理
3、 大数据集 典型的HDFS集群上面的一个文件是以G或者T数量级的,支持一个集群当中的文件数量达到千万数量级
4、 简单的相关模型 假定文件是一次写入,多次读取的操作
5、 移动计算比移动数据便宜 一个应用请求的计算,离它操作的数据越近,就越高效
6、 多种软硬件的可移植性
3、HDFS的来源
HDFS起源于Google的GFS论文(GFS,Mapreduce,BigTable为google的旧的三驾马车)
发表于2003年10月
HDFS是GFS的克隆版
Hadoop Distributed File system
易于扩展的分布式文件系统
运行在大量普通廉价机器上,提供容错机制
为大量用户提供性能不错的文件存取服务
4、HDFS的架构图之基础架构
1、NameNode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问
2、文件操作,namenode是负责文件元数据的操作,datanode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过Namenode,只询问它跟哪个dataNode联系,否则NameNode会成为系统的瓶颈
3、副本存放在哪些Datanode上由NameNode来控制,根据全局情况作出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低读取网络开销和读取延时
4、NameNode全权管理数据库的复制,它周期性的从集群中的每个DataNode接收心跳信号和状态报告,接收到心跳信号意味着DataNode节点工作正常,块状态报告包含了一个该DataNode上所有的数据列表
注:元数据不仅保存在内存中,还保存一份在磁盘中,防止意外断电等导致数据丢失。
5、hdfs的架构之文件的文件副本机制以及block块存储
block块的大小可以通过hdfs-site.xml当中的配置文件进行指定:
<property>
<name>dfs.blocksize</name>
<value>块大小 以Byte字节为单位</value>//只写数值就可以 默认:134217728B,即128MB
</property>
<property>
<name>dfs.replication</name>
<value>3</value> //block的副本数量设置
</property>
5.1、抽象成数据块的好处
- 一个文件有可能大于集群中任意一个磁盘
10T*3/128 = xxx块 2T,2T,2T 文件方式存—–>多个block块,这些block块属于一个文件 - 使用块抽象而不是文件可以简化存储子系统
- 块非常适合用于数据备份进而提供数据容错能力和可用性
5.2、块缓存
block块缓存:可以将我们的block块缓存到内存当中,我们在执行一些MR计算的时候,可以直接从内存当中获取数据,比较快,特别适用于一些小表join大表的情况。
5.3、hdfs的文件权限验证
hdfs的权限验证:采用的是linux类似的权限校验机制,防止好人做错事,不能阻止坏人干干事,hdfs相信你告诉我你是谁,你就是谁。
最新文章
- Solr环境搭建过程中遇到的问题
- redis 存储session实现session共享
- Cluster analysis
- 新增PHP经典笔记
- Hdu 2971 Tower
- git推送本地分支到远端 以及删除远端分支的 命令
- 提升升级 强制更新 Download
- c++ anonymous namespace -- 匿名空间
- javascript (四) 改变html样式
- SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)
- 基础-Ajax,json
- 路由知识 静态路由 rip eigrp ospf
- 网页基础:网页设计(我所知道的所有的html和css代码(含H5和CSS3)),如有错误请批评指正
- Dostoevsky: Better Space-Time Trade-Offs for LSM-Tree Based Key-Value Stores via Adaptive Removal of Superfluous Merging 阅读笔记
- 解决jQuery ajax动态新增节点无法触发点击事件的问题
- PyOpenCV图像逆时针旋转90度
- Code::Blocks 导入Makefile工程
- 对WinMain程序入口函数返回值为msg.wParam的几点理解
- [No0000DD]C# StringEx 扩展字符串类 类封装
- python中的struct模块
热门文章
- [Codeforces 839C] Journey
- AutoIT: WinGetText的作用
- CF 949 D Curfew —— 二分答案
- python创建文件
- JAVA 毕业设计 辅导
- treap板子(洛谷 P3369 【模板】普通平衡树(Treap/SBT))
- LinkedList,SortedList 基本用法
- C# winform与Javascript的相互调用[转]
- HUST 1698 - 电影院 组合数学 + 分类思想
- [转]Business Model Canvas(商业模式画布):创业公司做头脑风暴和可行性测试的一大利器