• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > hdfs一致性模型,hdfs一致性

hdfs一致性模型,hdfs一致性

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含高可用性的hdfs,hdfs和hbase存储,hdfs常用命令,hdfs,hdfs是什么等服务器相关知识,网友希望可以进行参考

hdfs一致性模型,hdfs一致性


文件系统的一致模型描述了对文件读写的数据可见性。HDFS为性能牺牲了一些POSIX请求,因此一些操作可能比想像的困难。

在创建一个文件之后,在文件系统的命名空间中是可见的,如下所示:

1.  Path p = new Path("p");  

2.  Fs.create(p);  

3.  assertThat(fs.exists(p),is(true)); 

但是,写入文件的内容并不保证能被看见,即使数据流已经被刷新。所以文件长度显示为0:

1.  Path p = new Path("p");  

2.  OutputStream out = fs.create(p); 

3.  out.write("content".getBytes("UTF-8")); 

4.  out.flush();  

5.  assertThat(fs.getFileStatus(p).getLen(),is(0L)); 

一旦写入的数据超过一个块的数据,新的读取者就能看见第一个块。对于之后的块也是这样。总之,它始终是当前正在被写入的块,其他读取者是看不见它的。

HDFS提供一个方法来强制所有的缓存与数据节点同步,即在文件系统数据输出流使用sync()方法。在sync()返回成功后,HDFS能保证文件中直至写入的最后的数据对所有新的读取者而言,都是可见且一致的。万一发生冲突(与客户端或HDFS),也不会造成数据丢失:

1.  Path p = new Path("p");  

2.  FSDataOutputStream out = fs.create(p); 

3.  out.write("content".getBytes("UTF-8")); 

4.  out.flush();  

5.  out.sync();  

6.  assertThat(fs.getFileStatus(p).getLen(), 
is(((long) "content".length()))); 

此行为类似于Unix中的fsync系统调用-- 为一个文件描述符提交缓冲数据。例如,利用Java API写入一个本地文件,我们肯定能够看到刷新流和同步之后的内容:

1.  FileOutputStream out = new FileOutputStream(localFile); 

2.  out.write("content".getBytes("UTF-8")); 

3.  out.flush(); // flush to operating system 

4.  out.getFD().sync(); // sync to disk 

5.  assertThat(localFile.length(), is(((long) "content".length()))); 

在HDFS中关闭一个文件其实还执行了一个隐含的sync():

1.  Path p = new Path("p");  

2.  OutputStream out = fs.create(p); 

3.  out.write("content".getBytes("UTF-8")); 

4.  out.close();  

5.  assertThat(fs.getFileStatus(p).getLen(),
is(((long) "content".length()))); 

应用设计的重要性

这个一致模型与具体设计应用程序的方法有关。如果不调用sync(),那么一旦客户端或系统发生故障,就可能失去一个块的数据。对很多应用来说,这是不可接受的,所以我们应该在适当的地方调用sync(),例如在写入一定的记录或字节之后。尽管sync()操作被设计为尽量减少HDFS负载,但它仍然有开销,所以在数据健壮性和吞吐量之间就会有所取舍。应用依赖就比较能接受,通过不同的sync()频率来衡量应用程序,最终找到一个合适的平衡。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • hdfs一致性模型,hdfs一致性

相关文章

  • CSR1000V在XenServer的安装和简单使用,csr1000vxenserver
  • 孙其功陪你学之——Spark 正则化和SparkSQL,孙其功sparksql
  • Hadoop之—— Linux搭建hadoop环境(简化篇),linuxhadoop
  • 配置KVM虚拟机的网络,Bridge和Nat方式,kvmnat
  • 《2》CentOS7.0+OpenStack+kvm云平台部署—配置Keystone,centos7.0kvm
  • Azkaban的AJAX的RestFul接口调用事例
  • Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce
  • 超级权限容器,权限容器
  • 解决sqoop导入关系库更新联合主键的问题,sqoop主键
  • Greenplum数据库扩容实务(上)-准备工作,greenplum实务

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Flume 配置文件概述
    • 二分Kmeans的java实现,二分kmeansjava
    • ZooKeeper+Hadoop2.6.0的ResourceManager HA搭建,hadoop2.6集群搭建
    • [Sqoop]将Hive数据表导出到Mysql,sqoophive
    • 配置KVM虚拟机的网络,Bridge和Nat方式,kvmnat
    • Namespace:Openstack的网络实现,namespaceopenstack
    • 通过 Web Service 调用Pentaho BI 的API,pentahobi
    • kerberos下HBase访问Zookeeper的ACL问题,hbasezookeeper
    • 各种分布式文件系统的比较,文件
    • SSH无密码登陆配置,ssh无密码登陆

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有