`
qindongliang1922
  • 浏览: 2183666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117522
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125920
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59896
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71297
社区版块
存档分类
最新评论

Hadoop+Hbase集群数据迁移问题

阅读更多

数据迁移或备份是任何一个公司都有可能到遇到的一件事,有关hbase数据迁移,官网也给出了几种方案,这里比较推荐使用hadoop distcp这种方式迁移。比较适合大数据量或者跨版本集群之间的数据迁移服务。

版本
Hadoop2.7.1
Hbase0.98.12

今天在迁移同版本的hbase数据时,在使用Hadoop distcp时发现下图的一个问题:





这个错误时,是由于源文件的大小与目标文件大小不一致造成的,出现这个问题的原因不明确,然后在网上google查找类似错误,发现没有一样的例子,有的都是
关于crc文件校验和不匹配的问题,而上述错误,则是文件大小不一致,重试3次之后,都是类似错误,所以试着去hadoop的官网文档找答案,发现官网文档distcp里面
有个update的参数,官网解释如下:





什么意思呢?

意思是如果再拷贝过程中,源文件和目标文件出现大小,块大小或者是校验和不一致的情况,会强制使用源文件替换目标文件,不到万不得己的
时候不要使用,使用这个需要谨慎,因为它可能会改变目标路径。

举个例子:
假设现在有A集群数据要迁移到B集群数据,并且Hbase的结构目录保持一致:

A集群数据迁移的目录如下:

/data/01/a
/data/01/b
/data/01/c
/data/01/d
/data/01/e


理想情况下,B集群迁移过去的目录是跟A集群的目录一致:

/data/01/a
/data/01/b
/data/01/c
/data/01/d
/data/01/e


但由于使用了-update之后,很有可能变成下面的目录结构:

/data/01
/data/a
/data/b
/data/c
/data/d
/data/e


出现这种情况,在update的文档已经描述了,因为使用这个命令时,会强制保留源文件的任何信息包括路径,
这样以来才能100%保证拷贝过来的数据是不能发生任何变化的,虽然目录错位了,但是数据正确,可以通过
一个小窍门解决这个问题,在拷贝的时候,如果已经知道某个job会出现这种情况,就提前将其目录的路径填写
完整,这样就不用再手动移动文件到正确的目录里面了。比如原来我的迁移命令是这样的:

hadoop distcp hdfs://10.0.0.100:8020/hbase/data/default/ETLDB    hdfs://10.0.0.101:8020/hbase/data/default


可以正确迁移数据,但如果使用了update后,应该使用下面的路径,注意目标路径上加了表名,如果不存在,如果提前创建下

hadoop distcp -update  hdfs://10.0.0.100:8020/hbase/data/default/ETLDB    hdfs://10.0.0.101:8020/hbase/data/default/ETLDB


试想一个,如果你的hbase表有10000多个region,那么则意味着,你需要处理这10000个错位的目录到正确的目录里面,
虽然写个脚本也能自动化处理,但是这样的耗时也挺长,而且谁能保证,脚本不会出现问题,所以不推荐事后修补的方式。

迁移完成之后,启动hbase集群服务,并执行如下的两个命令,恢复元数据,否则hbase集群不会识别新迁移过来的表:

./hbase  hbck -fix 
./hbase  hbck -repairHoles 


总结:
(1)出现问题,不用紧张,可以先google找类似异常,如果没有则需要多看官网的distcp文档参数的介绍,注意文档的版本和你的hadoop的版本需要一致,否则有些参数可能已经废弃,过时,或者不支持。
(2)如果distcp一个很大的目录时,出现 xxx file not exist 的IO异常,可以试着减少拷贝的文件目录数量,如果还是不能通过,则需要回到1方式查找问题,大部分情况下,我们拷贝一个很少数量的目录时,是不容易出现问题的。

参考文档:
http://hadoop.apache.org/docs/r2.7.1/hadoop-distcp/DistCp.html




有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园

  • 大小: 60.5 KB
  • 大小: 10.1 KB
1
3
分享到:
评论
3 楼 孤独的战神 2016-03-30  
向散仙大哥学习技术。。。我是小楼
2 楼 qindongliang1922 2016-03-28  
fncj 写道
好文,转下,谢谢
http://www.whohelpme.com/bbs/topic/singleIndex/23753/0.html

转载,请注明原创!
1 楼 fncj 2016-03-27  
好文,转下,谢谢
http://www.whohelpme.com/bbs/topic/singleIndex/23753/0.html

相关推荐

    Hadoop+Hbase搭建云存储总结

    - **数据迁移与同步:** 将现有数据迁移到HDFS中,并在Hbase中建立相应的表结构。 - **系统优化:** 根据业务需求调整HDFS和Hbase的参数配置,确保性能最优。 **3. 应用场景** - **大数据分析:** 结合Hadoop的...

    安装笔记:hadoop+hbase+sqoop2+phoenix+kerberos

    Hadoop是大数据处理的核心组件,它由两个主要集群构成:HDFS(Hadoop Distributed File System)集群和YARN(Yet Another Resource Negotiator)集群。HDFS负责大规模数据的存储,其中包含NameNode、DataNode和...

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

    Hadoop数据迁移是指将存储在Hadoop分布式文件系统(HDFS)中的数据转移到其他存储系统中,例如HBase。HBase是一个基于Hadoop的分布式数据库,它主要用于随机实时读/写访问超大表,适用于存储半结构化或非结构化稀疏...

    大数据云计算技术系列 Hadoop之Hbase从入门到精通(共243页).pdf

    总的来说,HBase是大数据和云计算环境中解决大规模结构化数据存储和处理问题的重要工具。通过深入理解其技术原理和使用方法,开发者和数据工程师能够构建出高效、可扩展的数据处理系统,满足现代数据密集型应用的...

    zookeeper3.4.12+hbase1.4.4+sqoop1.4.7+kafka2.10

    在构建大数据处理环境时,Hadoop集群是核心基础,而`zookeeper3.4.12+hbase1.4.4+sqoop1.4.7+kafka2.10`这一组合则提供了集群中不可或缺的组件。让我们逐一探讨这些组件的功能、作用以及它们之间的协同工作。 **...

    大数据-数据迁移-hive、hbase、kudu迁移

    本文档详细记录了一次从自建Hadoop集群到华为云MRS(Managed Service for Big Data)的大规模数据迁移项目,涉及到了Hive、Kudu和HBase这三种不同类型的数据存储系统。以下是针对这些系统的迁移策略、流程和解决方案...

    分布式数据库课程设计+基于Hbase的滴滴出行数据分析+Hive+Hadoop+Mysql+Sqoop+可视化

    首先,爬取滴滴出行的相关数据,然后通过 HDFS 将数据上传至 Hadoop 集群,接着使用 Hbase 存储这些原始数据,确保数据的分布式存储和高效检索。 3.2 数据分析与转换 在 Hbase 中的数据导入到 Hive 表后,利用 ...

    Hadoop与HBase部署文档

    【Hadoop与HBase部署文档】 ...完成上述步骤后,你就成功地部署了Hadoop和HBase集群,可以开始进行大数据的存储和处理任务。然而,部署只是第一步,后期的运维和优化同样重要,包括性能监控、故障排查和系统升级等。

    hbase基于快照的数据迁移

    随着业务的发展,数据量逐渐增大,可能需要将数据从一个集群迁移到另一个集群,或者进行数据备份等操作。HBase提供了快照功能来支持这些需求。快照是一种轻量级的数据备份机制,可以快速备份表数据而不会影响在线...

    2-3+HBase+应用与高可用实践.pdf

    4. **数据迁移**:HBase提供了跨集群迁移的能力,例如使用`hadoop distcp`命令。在迁移过程中,需要注意YARN资源的可用性、防火墙设置以及文件状态的检查与管理。对于迁移过程中可能出现的文件长度不匹配等问题,...

    flume+hbase+sqoop+zookeeper的整合包

    在Hadoop生态系统中,ZooKeeper被用作集群管理和协调,例如管理HBase的RegionServer分布和Flume的数据流路径。 Sqoop是一款用于在关系数据库和Hadoop之间转移数据的工具。它可以将大规模结构化的数据导入Hadoop的...

    2-7+HBase平台建设实践.pdf

    6. **HBase集群迁移与性能优化** 在58大数据平台的实践中,HBase集群的迁移和性能优化是关键任务。这包括但不限于调整集群配置、优化数据分布、监控系统性能,以及应对各种负载和压力测试,以确保服务的连续性和...

    HBASE跨集群迁移总结---扎啤1

    首先,当需要进行HBase集群迁移时,通常是因为硬件升级、灾难恢复或数据中心迁移等原因。在这种情况下,一种常见的方法是使用Hadoop的DistCp(Distributed Copy)工具。然而,值得注意的是,这种迁移方式需要停止源...

    hbase-0.94.1手动数据迁移.docx

    在HBase这样的分布式数据库系统中,数据迁移是一个常见的任务,特别是在集群扩展、故障恢复或版本升级等场景下。本文档详细介绍了如何在HBase 0.94.1版本上手动进行数据迁移,主要涉及以下几个关键步骤: 1. **数据...

    ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用

    ### ZooKeeper原理及其在...综上所述,ZooKeeper作为一种强大的分布式协调工具,在Hadoop和HBase等大数据处理框架中发挥了不可替代的作用。通过提供一致性和可靠性的支持,它极大地简化了分布式系统的开发和运维工作。

    基于集群的HBase安装和配置

    ### 基于集群的HBase安装和配置 #### Zookeeper简介 Zookeeper作为Hadoop生态中的关键组件,主要用于...通过上述步骤,可以成功地在已有Hadoop集群的基础上搭建起HBase集群,实现大数据环境下的高效数据存储与管理。

    Hadoop2.2.0Hbase0.98.1Hive0.13完全安装手册

    Sqoop用于在Hadoop与传统数据库之间进行数据迁移。 1. **下载并解压Sqoop** 下载Sqoop压缩包,并解压至指定目录。 2. **配置Sqoop** 配置Sqoop的环境变量,确保其能找到Hadoop的安装路径。 3. **测试Sqoop** ...

    大数据集群迁移方案

    1. **同版本集群迁移**:如果新旧集群版本相同,则可以直接使用`hadoop distcp`命令进行数据复制。例如,从旧集群`namenodeip:9000`复制数据到新集群的命令如下: ```bash hadoop distcp hdfs://namenodeip:9000/...

    Hadoop之Hbase从入门到精通.doc

    - **Sqoop**:为HBase提供了便捷的数据导入功能,方便将关系型数据库中的数据迁移到HBase中。 #### HBase 的访问接口 为了便于用户访问和操作HBase中的数据,HBase提供了多种访问接口: 1. **Native Java API**:...

    hadoop环境部署全套组件,下载后直接可用(虚拟机全套)

    它可以导入导出数据,实现批处理操作,将结构化数据高效地迁移到Hadoop集群或者从Hadoop迁出。 5. **Flume**:日志收集、聚合和传输的系统,设计用于高可用性和可靠性,可以将数据从各种源(如Web服务器日志)收集...

Global site tag (gtag.js) - Google Analytics