这个工具是使用map/reduce方式来进行数据导入的。map的数量取决于你<hdfs-inputdir>目录下面文件的数量。
bulkload和上面的map/reduce的在线Put方式一样
大数据量
bulkload.方式导入
执行命令: bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output=hdfs://storefile-outputdir -Dimporttsv.columns=HBASE_ROW_KEY,cf:a,cf:b,cf:c <tablename> <hdfs-inputdir>
需要你指定一个hdfs路径。来保存你生成的HFile文件。 这时候如果这些HFile所在HDFS和你的hbase集群用到的HDFS集群是同一个的话。那么你就可以执行bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles
<hdfs://storefileoutput> <tablename> 完成整个过程
$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> <hdfs-inputdir> $ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c -Dimporttsv.bulk.output=hdfs://storefile-outputdir <tablename> <hdfs-data-inputdir>
hbase提供了这两种方式进行导入.可以看到只是一个importtsv.bulk.output参数上的差别。内部的实现确实千差万别。
上面的那个命令是在map的时候输出Put. reduce的时候直接把put提交
下面那个在map时候做的事情一样。在reduce的时候就是通过HFileOutputFormat把KeyValues输出到HFile
但是下面的方式还有一个不走就是complete.就是将之前生成的HFile文件导入到region中。分布还是比较均匀的
1779

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



