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”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...
你需要将数据上传到 HDFS,并创建一个 JSON 配置文件(如 `index_test.json`),其中包含数据源、解析器和时间戳等信息。例如,配置文件可能指定了 HDFS 上数据文件的位置(如 `hdfs://HadoopHAcluster/druid/test....
安装Ranger-HDFS插件涉及以下几个步骤:首先,需要将"ranger-2.0.0-SNAPSHOT-hdfs-plugin"解压并按照官方文档的指导部署到HDFS集群中的各个NameNode节点;接着,配置Ranger Admin服务,导入HDFS插件,并为HDFS创建...
09.hbase的核心特性--基于hdfs-分布式数据管理--表结构.mp4
在项目`hive-bulkload-hbase-master`中,你将找到一个示例项目,它演示了上述步骤的实现。这个项目可能包括了Hive和HBase的连接代码、数据预处理逻辑、MapReduce作业的配置以及加载HFiles的Java代码。通过阅读和理解...
HBase 元数据修复工具包。 ①修改 jar 包中的application....②将core-site.xml、hdfs-site.xml添加到BOOT-INF/classes 下; ③开始修复 `java -jar -Drepair.tableName=表名 hbase-meta-repair-hbase-2.0.2.jar`
可能的策略是先导出数据到HDFS,然后使用脚本或工具如Kudu Bulk Import进行数据加载。在新环境中,需要重新创建表结构,并确保主键和副本分布策略的匹配。 再者,**HBase迁移方案**:HBase是NoSQL数据库,适用于高...
它提供了具体资源(如HBase中的具体表)权限管控、访问监控、数据加密的功能。ranger-1.2.0官方没有编译后的二进制tar包,而且编译的时间有点长,依赖的第三方库多,特意提供linux版本ranger-1.2.0的hdfs插件。
具体到从Hadoop向HBase的数据迁移中,Map任务会读取HDFS中的文件,使用自定义的Mapper类对每一行数据进行解析,提取出关键信息,如行键(row key)、列族(column family)、列限定符(column qualifier)和值...
HBase 是一个基于HDFS的NoSQL数据库,用于存储和管理大规模结构化和半结构化数据。HBase Shell是HBase的命令行接口,提供了对HBase数据库的访问和管理功能。Pig Latin是Hadoop生态系统中的一个数据处理语言,提供了...
在Java编程环境中,操作HBase并将其数据写入HDFS(Hadoop Distributed File System)是一项常见的任务,特别是在大数据处理和分析的场景下。本篇将详细介绍如何使用Java API实现这一功能,以及涉及到的关键技术和...
- **副本管理**:可以通过配置文件 `hdfs-site.xml` 中的 `dfs.replication` 参数来设定每个文件的副本数量。此外,还可以通过 `hadoop fs -setrep` 命令手动调整特定文件或目录的副本数。 - **数据均衡**:使用 `...
在大数据处理领域,Apache Hadoop是一个不可或缺的工具,其分布式文件系统(HDFS)为海量数据存储提供了可靠的解决方案。而对于开发人员来说,拥有一个良好的集成开发环境(IDE)是提高工作效率的关键。IntelliJ ...
2. **配置Hadoop环境**:安装Hadoop 2.7.3,确保所有节点上的配置文件(如hdfs-site.xml、core-site.xml)一致,并且包含了HA相关设置。这包括启用HA模式,指定共享的NameNode地址,以及定义QJM的JournalNodes列表。...
毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip 基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人等。 包括服务器端(Server)和客户端(Client) Server...
13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观
在Oracle到HDFS的同步场景中,DataX扮演着ETL(Extract-Transform-Load)的角色,将Oracle中的数据抽取出来,经过必要的转换,然后加载到HDFS中。 配置文件模板是DataX执行任务的基础,以下是一个基本的配置示例: ...
如果数据量非常大,可以使用HBase的批处理接口`TableOutputFormat`和`BulkLoad`功能,将数据先写入HDFS的临时目录,然后使用`HFile`格式进行批量导入,提高效率。 5. **错误处理和重试机制**:在导入过程中,可能会...