`
BlackWing
  • 浏览: 199667 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解决直接读HFile时因表数据写入而导致文件目录变化问题

阅读更多
转载请标明出处:http://blackwing.iteye.com/admin/blogs/2188077

数据量大的情况下,通过直接读取HFile来获得hbase表数据性能比通过HTable读取有优势,但当读取HFile时,table同时有数据写入,那么可能因为split、compact等原因导致某些HFile不存在,导致任务失败。

如果通过hdfs的snapshot快照功能,对某个table进行快照后,在读取快照,则不会出现问题。步骤如下:

1. 把需要快照的表设置为snapshottable
hdfs dfsadmin -allowSnapshot <path>

对应的java入口
HdfsAdmin : void allowSnapshot(Path path)



2. 生成快照
hdfs dfs -createSnapshot <path> [<snapshotName>]

对应的java入口
FileSystem : createSnapshot(Path path) 或者 createSnapshot(Path path, String snapshotName)


快照会存放在被快照目录的隐藏文件.snapshot目录下;创建snapshot时,需要是文件夹的owner


接下来,之间读取.snapshot目录下对应快照就行。


官方参考文章:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html
分享到:
评论

相关推荐

    hadoop mr file2hfile2hbase

    本文将深入探讨如何使用Hadoop MapReduce任务将文件数据转换为HBase所需的HFile格式,并进一步将其批量导入到HBase表中。 首先,我们需要了解HFile。HFile是HBase内部存储数据的二进制格式,它提供高效的随机读取...

    hbase海量数据的全量导入方法

    数据以HFile格式存储于HDFS上,HFile是一种优化过的数据文件格式,支持高效的数据检索和压缩。 #### 全量导入挑战与解决方案 在全量导入过程中,HBase的compaction机制可能会显著减慢写入速度。这是因为compaction...

    采用无缓冲方式实现文件读写.docx

    本实验的完成环境为 Visual Studio 2013,实验内容为建立一个函数,读出数据文件的内容,然后写入目标文件中,本次实验介绍第一种文件读的方式:建立一个函数,读出数据文件 source.txt 中的内容,然后写入目标文件 ...

    内存映射读写文件的方法

    内存映射文件(Memory-Mapped File)是一种在操作系统层面上高效读写大文件的技术,它允许应用程序将文件的内容直接映射到进程的虚拟地址空间中,使得数据的读写如同操作内存一样快速。这种方式在处理大数据量时尤其...

    Hadoop数据迁移--使用importtsv两步载入数据

    因为在生成HFile文件后再进行数据加载,相比直接写入HBase,可以避免在写入过程中对表的读取操作产生干扰,使得数据加载过程对现有系统的影响降到最低。 在实际操作中,用户可以自定义Mapper类(即importtsv.mapper...

    CreateFile 文件读取和写入

    - 当多个进程尝试同时访问同一文件时,必须正确设置`dwShareMode`,以避免冲突。 - 文件操作可能导致错误,每次调用`CreateFile`、`ReadFile`和`WriteFile`后,都要检查返回值,并处理可能的错误。 通过`CreateFile...

    易语言API写到文件

    - 操作文件时需确保有权限,否则可能无法创建或写入。 - 写入大量数据时,考虑分批写入,避免一次性占用过多内存。 - 总是检查API调用的返回值,以便及时发现并处理错误。 - 文件操作完成后,记得关闭文件以释放...

    使用WriteFile 块读/写数据(2KB)...

    在Windows API中,`WriteFile`函数是用于向文件中写入数据的重要接口,它可以实现块读/写操作。在本示例中,我们将详细探讨如何利用`WriteFile`进行2KB大小的数据读写,这对于文件处理至关重要。下面将依次介绍相关...

    读Windows文件 扇区数据的源码简洁注译版

    在Windows操作系统中,读取文件的扇区数据是一项底层操作...请确保在实际操作时,对底层硬件操作有充分的理解,因为错误的扇区读取可能会导致数据损坏。同时,注意安全性和权限问题,避免对系统文件进行不适当的访问。

    Hbase几种入库方式

    通过使用 Hbase 的 API,可以将数据直接写入到 Hbase 中,而不需要预先生成 HFile。同时,MapReduce 的分布式计算能力可以将数据处理的效率提高数倍。 使用 HTable.put() 方法入库 HTable.put() 方法是一种常用的...

    文件操作基础API函数

    其中,hFile 是打开的文件句柄,lpBuffer 是指向写入数据的缓冲区地址的指针,nNumberOfBytesToWrite 是将向文件中写入的数据字数,lpNumberOfBytesWritten 是指向实际写入字节数的指针,lpOverlapped 是指向一个 ...

    java从本地读文件并上传Hbase

    在处理每一行数据时,你可以将其拆分为键(row key)和值(value),然后使用`Table`对象写入HBase: ```java Table table = connection.getTable(TableName.valueOf(tableName)); // 假设每一行格式为"key\tvalue...

    MR程序Bulkload数据到hbase

    Reducer则负责将处理后的数据写入HDFS上的一个临时目录,形成HFile。 2. **创建HBase表**:在运行MapReduce作业之前,需要在HBase中创建目标表,定义好列族和列。 3. **生成HFile**:MapReduce作业完成后,HFile...

    Hadoop数据迁移--从Hadoop向HBase载入数据

    HFile是HBase中的存储格式文件,它可以被HBase识别和读取,类似于传统数据库中的数据文件。在转换过程中,Hadoop MapReduce程序用于处理文本文件中的数据,并生成HBase能识别的HFile格式。这一步骤需要将原始文本...

    java解决hive快速导数据到Hbase代码

    首先,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,适合大规模数据的离线分析。而HBase是构建在Hadoop文件系统(HDFS)之上,提供高可靠、高性能、列式...

    VB6超大文件(大于2G)读写 示例代码

    在VB6(VB Visual Basic 6.0)中,处理超过2GB的大文件可能会遇到一些挑战,因为VB6的标准文件操作API(如Open、Input、Write等)在处理大文件时可能会受到限制。为了解决这个问题,我们可以利用Windows API中的`...

    数据文件初始化

    ### 数据文件初始化知识点详解 #### 一、概述 在计算机编程中,文件操作是一项非常基础且重要的任务。本文档将详细介绍如何使用两种不同的方法来创建并初始化数据文件,以及在创建过程中遇到错误时如何处理。这...

    WinCE系统开发__文件

    查找文件时,可以使用FindFirstFile函数,它返回一个搜索句柄,用于遍历目录中的文件。删除文件时,则使用DeleteFile函数。 这些函数和类都是WinCE系统开发中不可或缺的一部分,了解它们的工作原理和如何使用它们...

    Codesys:文件读写(CAA File库)

    11. **xOverWrite**: 输入,当设置为TRUE时,允许覆盖已存在的文件或目录;FALSE则会报错。 12. **xDone**: 输出,操作成功时返回TRUE。 13. **xAborted**: 输出,操作被用户中止时返回TRUE。 14. **xEOF**: 输出,...

    Hadoop+Hbase.ppt

    - **StoreFile**:以HFile格式存储在HDFS上,是持久化的数据文件。 Hbase的查询流程涉及查找HRegion的过程,这通常通过三层B+树结构完成,包括ROOT表和.META.表。ROOT表在ZooKeeper中存储,指向.META.表的位置,而...

Global site tag (gtag.js) - Google Analytics