`
wx1569578408
  • 浏览: 71542 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

hbase 学习(十二)非mapreduce生成Hfile,然后导入hbase当中

 
阅读更多

最近一个群友的boss让研究hbase,让hbase的入库速度达到5w+/s,这可愁死了,4台个人电脑组成的集群,多线程入库调了好久,速度也才1w左右,都没有达到理想的那种速度,然后就想到了这种方式,但是网上多是用mapreduce来实现入库,而现在的需求是实时入库,不生成文件了,所以就只能自己用代码实现了,但是网上查了很多资料都没有查到,最后在一个网友的指引下,看了源码,最后找到了生成Hfile的方式,实现了之后,发现单线程入库速度才达到1w4左右,和之前的多线程的全速差不多了,百思不得其解之时,调整了一下代码把列的Byte.toBytes(cols)这个方法调整出来只做一次,速度立马就到3w了,提升非常明显,这是我的电脑上的速度,估计在它的集群上能更快一点吧,下面把代码和大家分享一下。

复制代码

        String tableName = "taglog"             [] family = Bytes.toBytes("logs"                          Configuration conf =             conf.set("hbase.master", "192.168.1.133:60000"             conf.set("hbase.zookeeper.quorum", "192.168.1.135"                          conf.set("hbase.metrics.showTableName", "false"                                       String outputdir = "hdfs://hadoop.Master:8020/user/SEA/hfiles/"             Path dir =              Path familydir =              FileSystem fs =             BloomType bloomType =              HFileDataBlockEncoder encoder =              blockSize = 64000             Configuration tempConf =              tempConf.set("hbase.metrics.showTableName", "false"             tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 1.0f                          StoreFile.Writer writer =  StoreFile.WriterBuilder(conf,                    start =                          DecimalFormat df =  DecimalFormat("0000000"                                                    KeyValue kv1 =              KeyValue kv2 =              KeyValue kv3 =              KeyValue kv4 =              KeyValue kv5 =              KeyValue kv6 =              KeyValue kv7 =              KeyValue kv8 =                                        [] cn = Bytes.toBytes("cn"             [] dt = Bytes.toBytes("dt"             [] ic = Bytes.toBytes("ic"             [] ifs = Bytes.toBytes("if"             [] ip = Bytes.toBytes("ip"             [] le = Bytes.toBytes("le"             [] mn = Bytes.toBytes("mn"             [] pi = Bytes.toBytes("pi"                           maxLength = 3000000             ( i=0;i<maxLength;i++                 String currentTime = ""+System.currentTimeMillis() +                  current =                                    kv1 =                           family, cn,current,KeyValue.Type.Put,Bytes.toBytes("3"                                   kv2 =                           family, dt,current,KeyValue.Type.Put,Bytes.toBytes("6"                                   kv3 =                           family, ic,current,KeyValue.Type.Put,Bytes.toBytes("8"                                   kv4 =                           family, ifs,current,KeyValue.Type.Put,Bytes.toBytes("7"                                   kv5 =                           family, ip,current,KeyValue.Type.Put,Bytes.toBytes("4"                                   kv6 =                           family, le,current,KeyValue.Type.Put,Bytes.toBytes("2"                                   kv7 =                           family, mn,current,KeyValue.Type.Put,Bytes.toBytes("5"                                   kv8 =                           family,pi,current,KeyValue.Type.Put,Bytes.toBytes("1"                                                                                            HTable table =              LoadIncrementalHFiles loader =              loader.doBulkLoad(dir, table);

  

  最后再附上查看hfile的方式,查询正确的hfile和自己生成的hfile,方便查找问题。
 


转载于:https://my.oschina.net/u/923508/blog/413939

分享到:
评论

相关推荐

    MapReduce生成HFile入库到HBase 可能需要的jar包

    MapReduce生成HFile入库到HBase 可能需要的jar包,一共有3个 可以直接放在每台机器的${HADOOP_HOME}/lib下 hadoopHadoop 1.1.2 + hbase 0.94.6.1

    java从本地读文件并上传Hbase

    在Java编程环境中,将本地文件读取并上传到HBase是一项常见的任务,特别是在大数据处理和存储的场景下。HBase是一个分布式、版本化的NoSQL数据库,基于Apache Hadoop,适用于大规模数据存储。以下是一个详细的过程,...

    Hbase几种入库方式

    HFile 是 Hbase 的存储文件格式,预先生成 HFile 后,可以将其直接加载到 Hbase 中。这是一种高效的入库方式,尤其是在大规模数据集的情况下。预先生成 HFile 入库的优点是快捷、可靠,缺点是需要提前生成 HFile,...

    hadoop mr file2hfile2hbase

    【标题】:“Hadoop MR(MapReduce)将文件转换为HFile并导入到HBase” 在大数据处理领域,Hadoop MapReduce是一种广泛使用的分布式计算框架,而HBase是基于Hadoop的数据存储系统,用于处理大规模的非结构化数据。...

    MR程序Bulkload数据到hbase

    通过学习和理解这些代码,你可以更好地掌握如何在实际生产环境中使用MapReduce进行HBase的数据批量导入。在具体操作时,需要注意数据的正确性、性能优化以及错误处理,以确保数据加载的稳定性和高效性。

    Hbase:HBase MapReduce投影

    这个格式会将输出结果先写入HDFS上的HFile,然后通过HBase的bulk load功能加载到表中,以提高写入效率。 5. **Java编程**:由于HBase MapReduce主要基于Java实现,所以开发过程中需要掌握Java编程。此外,理解HBase...

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

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

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

    2. **使用HFileOutputFormat**:HBase提供了HFileOutputFormat类,可以将数据直接写入HFile格式,跳过HBase的内部流程,从而提高数据导入效率。这种方法适用于离线大批量数据导入场景。 3. **并行导入**:利用...

    hbase1.0.3_part2

    《HBase 1.0.3 进阶学习——Part2》 在深入探讨HBase 1.0.3的Part2之前,我们先回顾一下HBase的基本概念。HBase,作为Apache Hadoop生态系统中的一个分布式列式数据库,提供实时读写、强一致性的存储服务。它基于...

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

    5. **执行MapReduce作业**:编写一个MapReduce作业,该作业使用HFileOutputFormat作为输出格式,将上一步骤中写入HDFS的数据转化为HBase可读的HFile格式。 6. **加载HFiles**:最后,通过HBase的Admin API或者HBase...

    How-to: Use HBase Bulk Loading, and Why

    为了解决这个问题,HBase提供了批量加载(Bulk Loading)机制,它允许我们将数据预先转换成HFile格式,然后一次性地快速加载到表中,极大地提高了数据导入速度。 批量加载的基本流程如下: 1. **生成SequenceFile*...

    hbase-2.0.2-bin.tar

    5. **MapReduce支持**: HBase与Hadoop的MapReduce框架紧密集成,方便进行大规模批处理作业,如数据导入、统计分析等。 6. **RESTful接口**: HBase提供REST接口,使其能被任何支持HTTP的编程语言访问,增加了其应用...

    hbase+批量上传jar包

    4. **运行bulk load命令**:通过HBase的shell或者Java API执行`hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`命令,指定待导入的HFile所在的目录和目标HBase表名。 5. **清理工作**:批量导入...

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

    HBase集群通常会与Hadoop集群设置在同一个集群中,这意味着HBase使用的分布式文件系统(HDFS)就是生成HFile文件的MapReduce任务所在的同一集群。这样设置的好处是减少了数据迁移过程中的网络传输,并且可以利用...

    HBase大数据.zip

    - **批量加载**:HBase提供批量导入数据的工具,如HFile或MapReduce,提高数据导入效率。 4. **HBase高可用与容错** - **RegionServer故障恢复**:当RegionServer宕机,Master会自动重新分配其上的Region到其他...

    Hbase中文文档

    7.3. Accessing Other HBase Tables in a MapReduce Job 7.4. Speculative Execution 8. HBase安全 8.1. 安全客户端访问 HBase 8.2. 访问控制 9. 架构 9.1. 概述 9.2. Catalog Tables 9.3. 客户端 9.4. Client ...

    hbase权威指南 配套源码

    5. MapReduce集成:HBase与Hadoop的MapReduce框架无缝集成,可用于批量处理和分析存储在HBase中的大数据。 6. 灵活的数据模型:HBase允许动态添加列,适应不断变化的数据需求。 7. 复制与容错:通过主备复制机制,...

    hbase导入测试数据集

    或者,使用MapReduce任务将ORDER_INFO.txt转换为HFile格式,然后使用`importtsv`命令批量导入。 4. **验证导入**:导入完成后,可以通过`get`或`scan`命令检查数据是否正确导入。 ```bash hbase(main):004:0&gt; ...

    Apache HBase ™ Reference Guide

    直接在批量导入过程中写入 HFile**:介绍了一种在批量导入过程中直接写入HFile的方法。 - **49. 行计数示例**:通过一个简单的例子来演示如何使用MapReduce来计算HBase表中的行数。 - **50. Map 任务分割**:解释了...

    大数据HBASE考题材料

    HBase中的批量加载通常使用MapReduce实现,这种方式可以有效地处理大量的数据导入操作。 #### 多项选择题解析 1. **HBase的特性** - HBase是开源的:虽然题目中提到“不是开源的”这个选项不正确,但HBase确实...

Global site tag (gtag.js) - Google Analytics