`

Hadoop 0.21.0 中的Append/Hflush/Read
说明

    博客分类:
  • HDFS
 
阅读更多
From:https://issues.apache.org/jira/browse/HDFS-265
在Hadoop 0.21.0 中fsync(API中是DFSOutputStream的sync()方法)操作改名为hflush,原因是它的实际语义是刷新(flush)缓存,而不是同步数据到硬盘,fsync功能(Syncable接口中的hsync方法)可能会在以后的版本中添加(参考:https://issues.apache.org/jira/browse/HDFS-744https://issues.apache.org/jira/browse/HADOOP-6313 定义了三种flush)。

read/write 语义不含 append/hflush
1、对于打开的文件的数据,DFS尽力提供持久性(
best
 effort 
durability
,类似ip层的best effort,即不可靠)
  -NameNode持久化文件元数据信息,但是不持久化文件由哪些块组成的信息,重启NameNode可能会导致数据丢失
  -DFS不保证各数据块的副本数和文件的复制因子一致,如果一个数据块没有一个有效副本被写入,则写失败。
2、对于关闭的文件的数据,DFS提供强持久性
  -NameNode持久化文件和数据块元数据信息,重启NameNode不会导致数据丢失。
  -DFS保证各数据块的副本数和文件的复制因子一致。
  -文件关闭不保证数据已经到达磁盘。如果数据未到达磁盘,重启DataNode会导致数据丢失。
3、read
  -对于打开的文件数据,只有已完成块(block写满)的数据对readers是可见的。正在写的块中的数据,对reader来说是不可见的

append(追加写入)
1、只允许一个writer/appender
,这表明一个client只能append一个关闭的文件
2、已关闭的文件打开append时,DFS为旧数据提供强持久性,为新append的数据尽力提供持久性(
best
 effort 
durability
)

hflush(刷新缓存)
1、hflush保证hflush之前写入的数据对于新的reader都是可见的
  -hflush不保证数据同步到磁盘,重启DataNode节点可能造成hflush过的数据丢失
2、对于hflush的数据,DFS只提供弱持久性
  -NameNode持久化hflush的数据所属的block的元数据信息,重启NameNode不会导致hflush了的数据的丢失
  -DFS不保证各数据块的副本数和文件的复制因子一致

read(读入文件)
1、允许存在多个程序并行地读取未关闭的文件
2、hflush的数据,对于新的新的reader都是可见的
3、writer/appender不调用hflush,reader仍可以看到之前写入的数据,但会有延时
4、如果一个字节对一个reader可见,它就是持续可见的,除非读该字节的所有副本数都失败,所有副本读入都失败将会返回一个error
  -这表明一个字节的一个副本对reader可见,那其他副本也可见
  -这对于hflush的和没有hflush的数据都适用

分享到:
评论

相关推荐

    Hadoop-0.21.0分布式集群配置

    Hadoop-0.21.0分布式集群配置.doc

    hadoop 0.21.0 API chm

    - `Job` 类:在Hadoop 0.21.0中,`JobConf`的替代,提供了更友好的作业提交和监控接口。 - `InputFormat` 和 `OutputFormat`:定义数据的输入和输出格式,如`TextInputFormat`和`TextOutputFormat`。 - `Mapper` ...

    Hadoop 0.21.0 Eclipse plugin相关

    标题中的“Hadoop 0.21.0 Eclipse plugin相关”指的是使用Eclipse集成开发环境(IDE)与Hadoop 0.21.0版本进行交互的插件。Hadoop是一个开源的分布式计算框架,主要处理大数据。0.21.0是Hadoop的一个特定版本,发布...

    hadoop 0.21.0 安装包

    hadoop 0.21.0 linux下的安装包

    hadoop安装过程中的问题

    Hadoop/etc/hadoop/slaves 的IP地址要变。 5个重要的配置文件逐个检查,IP地址需要变 2.配置文件确认无错误,看日志: 从logs日志中寻找slave的namenode为什么没有起来。 3.最后发现是hdfs中存在上次的数据,删掉...

    hadoop2.2.0/2.6.0/2.7.0/2.7.1 64位安装包

    hadoop2.2.0/2.6.0/2.7.0/2.7.1 64位安装包。

    apache hadoop HDFS append design

    但是,在支持`append/hflush`之后,HDFS需要为包含预追加数据的构建中块提供强持久性,并为`hflush`后的数据提供最佳努力持久性。因此,一些临时状态的块需要在节点重启后得以保存。 **2.2 块状态(数据节点)** ...

    Hadoop分布式搭建配置/Hive/HBase

    在IT行业中,大数据处理是至关重要的领域,而Hadoop作为其中的核心框架,为海量数据的存储和计算提供了强大支持。本文将围绕“Hadoop分布式搭建配置/Hive/HBase”这一主题,深入探讨Hadoop生态系统中的关键组件,并...

    hadoop-0.21.0-eclipse-plugin

    总结,Hadoop 0.21.0 Eclipse插件为开发者提供了一个强大的平台,使他们能在熟悉的开发环境中无缝地进行Hadoop应用的开发。通过充分利用其功能,开发者可以更高效、更准确地实现大数据处理任务,推动业务创新。

    hadoop/etc/hadoop/6个文件

    hadoop/etc/hadoop/6个文件 core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-env.sh yarn-site.xml

    hadoop-0.21.0-raid.jar

    hadoop-0.21.0-raid.jar

    hadoop-0.21.0.tar.gz

    Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据...

    64位hadoop-2.6.0 lib/native.tar.gz

    自己在网上下载了一个hadoop-2.6.0-cdh5.15.1版本的hadoop,启动hdfs时报错:WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java ...

    hadoop-core-0.20.2-cdh3u3.jar

    export HADOOP_HOME="/usr/local/hadoop/" export JAVA_HOME="/usr/local/hadoop/jdk1.6.0_24" export CLASSPATH="$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:${HADOOP_HOME}/lib/commons-logging-1.0.4.jar...

    hadoop安装与配置 Hadoop的安装与配置可以分成几个主要步骤: 1. 安装Java 2. 下载Hadoop 3. 配

    hadoop安装与配置 hadoop安装与配置 Hadoop的安装与配置可以分成几个主要步骤: 1. 安装Java 2. 下载Hadoop 3. 配置Hadoop ...编辑/usr/local/hadoop/etc/hadoop/hadoop-env.sh,设置JAVA_HOME: export JAVA_H

    Hadoop fs命令详解.docx

    在实际操作中,我们可以使用Hadoop fs命令来管理和维护HDFS文件系统。例如,我们可以使用copyFromLocal命令将本地文件复制到HDFS,然后使用Cat命令查看文件的内容。 本文详细介绍了Hadoop fs命令的使用方法和实践...

    eclipse3.6+hadoop-0.21.0插件配置使用

    本文将详细阐述如何在Eclipse 3.6版本中配置并使用Hadoop 0.21.0的插件,帮助开发者更高效地进行Hadoop项目开发。 首先,我们需要了解Eclipse的插件系统。Eclipse允许通过安装插件来扩展其功能,这些插件可以提供...

Global site tag (gtag.js) - Google Analytics