`
uestzengting
  • 浏览: 96204 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

bulk-load装载hdfs数据到hbase小结

阅读更多
HBaseHadoopMapreduceXMLApache.bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:

hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):
1 将文件包装成hfile,hadoop jar /path/to/hbase.jar importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
比如:

Java代码 
1.hadoop dfs -cat test/1 
2.1       2 
3.3       4 
4.5       6 
5.7       8 
hadoop dfs -cat test/1
1       2
3       4
5       6
7       8
执行

Java代码 
1.hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test 
hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
将会启动mapreduce程序在hdfs上生成t8这张表,它的rowkey分别为1 3 5 7,对应的value为2 4 6 8
注意,源文件默认以"\t"为分割符,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=",",则变成了以","分割

2 在上一步中,如果设置了输出目录,如

Java代码 
1.hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.bulk.output=tmp -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test 
   hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.bulk.output=tmp -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
那么t8表还暂时不会生成,只是将hfile输出到tmp文件夹下,我们可以查看tmp:

Java代码 
1.hadoop dfs -du tmp  
2.Found 3 items  
3.0           hdfs://namenode:9000/user/test/tmp/_SUCCESS  
4.65254       hdfs://namenode:9000/user/test/tmp/_logs  
5.462         hdfs://namenode:9000/user/test/tmp/f1 
hadoop dfs -du tmp
Found 3 items
0           hdfs://namenode:9000/user/test/tmp/_SUCCESS
65254       hdfs://namenode:9000/user/test/tmp/_logs
462         hdfs://namenode:9000/user/test/tmp/f1
然后执行hadoop jar hbase-VERSION.jar completebulkload /user/todd/myoutput mytable将这个输出目录中的hfile转移到对应的region中,这一步因为只是mv,所以相当快。如:
hadoop jar ~/hbase/hbase-0.90.2.jar completebulkload tmp t8
然后

Java代码 
1.hadoop dfs -du /hbase/t8/c408963c084d328490cc2f809ade9428  
2.    Found 4 items  
3.    124         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.oldlogs  
4.    692         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.regioninfo  
5.    0           hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.tmp  
6.    462         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/f1 
hadoop dfs -du /hbase/t8/c408963c084d328490cc2f809ade9428
Found 4 items
124         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.oldlogs
692         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.regioninfo
0           hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/.tmp
462         hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f809ade9428/f1
此时己经生成了表t8
注意,如果数据特别大,而表中原来就有region,那么会执行切分工作,查找数据对应的region并装载

        程序使用中注意:
1 因为是执行hadoop程序,不会自动查找hbase的config路径,也就找不到hbase的环境变量。因此需要将hbase-site.xml加入到hadoop-conf变量中
2 还需要将hbase/lib中的jar包放入classpath中
3 执行以上的步骤2时需要将zookeeper的配置写入core-site.xml中,因为在那一步时甚至不会读取hbase-site.xml,否则会连不上zookeeper
分享到:
评论

相关推荐

    MR程序Bulkload数据到hbase

    标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...

    3、Druid的load data 示例(实时kafka数据和离线-本地或hdfs数据)

    你需要将数据上传到 HDFS,并创建一个 JSON 配置文件(如 `index_test.json`),其中包含数据源、解析器和时间戳等信息。例如,配置文件可能指定了 HDFS 上数据文件的位置(如 `hdfs://HadoopHAcluster/druid/test....

    ranger-2.0.0-SNAPSHOT-hdfs-plugin.tar.gz

    安装Ranger-HDFS插件涉及以下几个步骤:首先,需要将"ranger-2.0.0-SNAPSHOT-hdfs-plugin"解压并按照官方文档的指导部署到HDFS集群中的各个NameNode节点;接着,配置Ranger Admin服务,导入HDFS插件,并为HDFS创建...

    09.hbase的核心特性--基于hdfs-分布式数据管理--表结构.mp4

    09.hbase的核心特性--基于hdfs-分布式数据管理--表结构.mp4

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

    在项目`hive-bulkload-hbase-master`中,你将找到一个示例项目,它演示了上述步骤的实现。这个项目可能包括了Hive和HBase的连接代码、数据预处理逻辑、MapReduce作业的配置以及加载HFiles的Java代码。通过阅读和理解...

    hbase-meta-repair-hbase-2.0.2.jar

    HBase 元数据修复工具包。 ①修改 jar 包中的application....②将core-site.xml、hdfs-site.xml添加到BOOT-INF/classes 下; ③开始修复 `java -jar -Drepair.tableName=表名 hbase-meta-repair-hbase-2.0.2.jar`

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

    可能的策略是先导出数据到HDFS,然后使用脚本或工具如Kudu Bulk Import进行数据加载。在新环境中,需要重新创建表结构,并确保主键和副本分布策略的匹配。 再者,**HBase迁移方案**:HBase是NoSQL数据库,适用于高...

    ranger-1.2.0-hdfs-plugin.tar.gz

    它提供了具体资源(如HBase中的具体表)权限管控、访问监控、数据加密的功能。ranger-1.2.0官方没有编译后的二进制tar包,而且编译的时间有点长,依赖的第三方库多,特意提供linux版本ranger-1.2.0的hdfs插件。

    Hadoop数据迁移--从Hadoop向HBase

    具体到从Hadoop向HBase的数据迁移中,Map任务会读取HDFS中的文件,使用自定义的Mapper类对每一行数据进行解析,提取出关键信息,如行键(row key)、列族(column family)、列限定符(column qualifier)和值...

    HDFS_HBaseShell的常用命令

    HBase 是一个基于HDFS的NoSQL数据库,用于存储和管理大规模结构化和半结构化数据。HBase Shell是HBase的命令行接口,提供了对HBase数据库的访问和管理功能。Pig Latin是Hadoop生态系统中的一个数据处理语言,提供了...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    在Java编程环境中,操作HBase并将其数据写入HDFS(Hadoop Distributed File System)是一项常见的任务,特别是在大数据处理和分析的场景下。本篇将详细介绍如何使用Java API实现这一功能,以及涉及到的关键技术和...

    hdfs,hbase命令原理介绍

    - **副本管理**:可以通过配置文件 `hdfs-site.xml` 中的 `dfs.replication` 参数来设定每个文件的副本数量。此外,还可以通过 `hadoop fs -setrep` 命令手动调整特定文件或目录的副本数。 - **数据均衡**:使用 `...

    hadoop-idea-hdfs插件.zip

    在大数据处理领域,Apache Hadoop是一个不可或缺的工具,其分布式文件系统(HDFS)为海量数据存储提供了可靠的解决方案。而对于开发人员来说,拥有一个良好的集成开发环境(IDE)是提高工作效率的关键。IntelliJ ...

    hdfs2-7_3+hbase1_2_5 HA withQJM环境搭建

    2. **配置Hadoop环境**:安装Hadoop 2.7.3,确保所有节点上的配置文件(如hdfs-site.xml、core-site.xml)一致,并且包含了HA相关设置。这包括启用HA模式,指定共享的NameNode地址,以及定义QJM的JournalNodes列表。...

    毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip

    毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip 基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人等。 包括服务器端(Server)和客户端(Client) Server...

    13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观察.mp4

    13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观

    3、通过datax同步oracle相关-oracle到hdfs

    在Oracle到HDFS的同步场景中,DataX扮演着ETL(Extract-Transform-Load)的角色,将Oracle中的数据抽取出来,经过必要的转换,然后加载到HDFS中。 配置文件模板是DataX执行任务的基础,以下是一个基本的配置示例: ...

    将hdfs上的文件导入hbase的源代码

    如果数据量非常大,可以使用HBase的批处理接口`TableOutputFormat`和`BulkLoad`功能,将数据先写入HDFS的临时目录,然后使用`HFile`格式进行批量导入,提高效率。 5. **错误处理和重试机制**:在导入过程中,可能会...

Global site tag (gtag.js) - Google Analytics