HBase表的大小比hadoop hdfs中的文件大得多

HBase表的大小比hadoop hdfs中的文件大得多,hadoop,hbase,hdfs,Hadoop,Hbase,Hdfs,最近我使用hadoop批量加载将数据放入hbase 首先,在hadoop HDFS中调用HDFS API将数据写入文件,共7000000行数据,大小为503MB。 其次,我使用org.apache.hadoop.hbase.mapreduce.ImportTsv和org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles将数据放入hbase 我做的最重要的事情是使用bulkload工具将数据放入hbase,在完成bulkload之后,我发现hb

最近我使用hadoop批量加载将数据放入hbase 首先,在hadoop HDFS中调用HDFS API将数据写入文件,共7000000行数据,大小为503MB。 其次,我使用org.apache.hadoop.hbase.mapreduce.ImportTsvorg.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles将数据放入hbase

我做的最重要的事情是使用bulkload工具将数据放入hbase,在完成bulkload之后,我发现hbase表是1.96GB。hdfs复制为1。
我不知道为什么

在存储数据时会有一些开销,因为您必须存储列限定符等的名称,但开销不是4倍。我有一些想法,但绝对不介意听到更多关于数据性质的细节,也许还有统计数据

  • 您的表中是否启用了压缩功能?如果数据是在HDFS中压缩的,但在加载后,它没有被压缩,这可能会导致问题
  • 也许HBase出于任何原因都不尊重您的复制因素。去做一个hadoop fs-dus/path/to/hbase/table/data看看会返回什么
  • 你的专栏限定词很大吗?例如,
    colfam1:abc
    非常小,不会占用太多空间,但是
    colfam1:abcdefghijklmnopqrstuvwxyz
    将在全局中占据相当大的空间
如何比较大小?我生成7000000行数据并将数据写入windows XP文件系统中的file.txt,文件大小为503MB。当我直接将7000000行数据放入hbase时,大小为1.96GB。我将hdfs复制设置为1,hbase表复制与hdfs复制无关吗?您知道如何设置hbase复制吗?当我转到“hadoop fs-dus/path/to/hbase/table/data”时,它返回的大小是2108510118。限定符包括:资产:客户名称、资产:资产id、资产:金额、资产:交易日期、资产:结算日期我的表上没有压缩,压缩是导致问题的唯一因素?最后,我尝试对我的表进行压缩,操作是:首先,我使用“create'pendings',{NAME=>'asset',compression=>'GZ'}”创建表。其次,我使用bulkload将数据放入表中。但是压缩不起作用,数据大小和以前一样。2020308035/(1024*1024)=1926MB,1926/3=642MB,考虑到hbase表中的一些开销,如果hbase表中存储503MB数据,可能642MB是正确的。我将hdfs复制设置为1,hbase表复制与hdfs复制无关吗?当我使用bulkload将数据放入hbase时,复制为1,但当我使用eclipse client将数据放入时,复制为3。但hbase表中的总大小是相同的。