转载请标明出处:http://blackwing.iteye.com/blog/1991901
之前在另一篇文章里实现的自定义job生成HFile并使用LoadIncrementalHFiles 入库HBase :http://blackwing.iteye.com/blog/1991380
但发现入库时,非常的慢,而且几次都失败了,明明官方教材说这个操作是move的:
再次验证google的强大,发现官方有这个问题的解释:
主要问题是,批量导入HBase时,如果hdfs地址没有写端口,会认为是两个不同文件系统,所以要copy,而如果当是同一文件系统时,则是move,秒级入库了2GB的文件。
指令差别如下:
copy的场景:
move的场景:
剩下的需要好好看看源码增加理解了。
没有secure authentication时,调用流程如下:
之前在另一篇文章里实现的自定义job生成HFile并使用LoadIncrementalHFiles 入库HBase :http://blackwing.iteye.com/blog/1991380
但发现入库时,非常的慢,而且几次都失败了,明明官方教材说这个操作是move的:
The completebulkload utility will move generated StoreFiles into an HBase table. This utility is often used in conjunction with output from Section 15.1.10, “ImportTsv”.
再次验证google的强大,发现官方有这个问题的解释:
https://issues.apache.org/jira/browse/HBASE-9537
https://issues.apache.org/jira/browse/HBASE-8304
主要问题是,批量导入HBase时,如果hdfs地址没有写端口,会认为是两个不同文件系统,所以要copy,而如果当是同一文件系统时,则是move,秒级入库了2GB的文件。
指令差别如下:
copy的场景:
./hbase-0.96.0-hadoop1/bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles hdfs://namenode/outputtsv gonghui_test
move的场景:
./hbase-0.96.0-hadoop1/bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles hdfs://namenode:8020/outputtsv gonghui_test
剩下的需要好好看看源码增加理解了。
没有secure authentication时,调用流程如下:
LoadIncrementalHFiles.doBulkLoad(Path hfofDir, final HTable table) -->
LoadIncrementalHFiles.bulkLoadPhase(final HTable table, final HConnection conn,ExecutorService pool, Deque<LoadQueueItem> queue,final Multimap<ByteBuffer, LoadQueueItem> regionG

在使用LoadIncrementalHFiles进行HBase批量导入时遇到速度慢甚至失败的问题。官方解释指出,若HDFS地址未指定端口,系统会认为是两个不同的文件系统从而进行copy,而非move操作。当确认在同一文件系统内时,才能实现快速的move操作。解决方法是确保HDFS地址包含端口,以触发move,提高导入效率。
最低0.47元/天 解锁文章
7524

被折叠的 条评论
为什么被折叠?



