Свойство "hbase.cluster.distribute" в "hbase-site.xml" имеет значение "true". Чтобы объединить размеры всех таблиц, нужно ли просто добавлять длины всех строк?С другой стороны, в некоторых статьях говорится, что данные в HBase сохраняются в HFile в формах формата KeyValue, который имеет больше переменных и имеет гораздо большую длину, чем сама строка.А в hdfs некоторые узлы данных дублируют данные.размер данных в формате hdf будет умножен.Если бы мы могли сказать о размере данных в HBase, который является более надежным и точным среди добавления длины строк, добавления размера HFile и умноженного размера?
Я сравнил длину всех строк с размером файла, которыйявляется результатом "hdfs dfs -du".Есть некоторые отличия.Кажется, потому что в Ambari есть пара папок и файлов.
for (TableDescriptor tblDescriptor : tblDescriptors) {
TableName tableName = tblDescriptor.getTableName();
Table table = connection.getTable(tableName);
Scan scan = new Scan();
if (scan.getAllowPartialResults())
{ scan.setAllowPartialResults(false); }
for (Result rs : table.getScanner(scan)) {
List<Cell> cells = rs.listCells();
for (Cell cell : cells) {
totalSize += KeyValue.KEY_LENGTH_SIZE
+ KeyValue.ROW_LENGTH_SIZE
+ KeyValue.FAMILY_LENGTH_SIZE
+ KeyValue.TIMESTAMP_SIZE
+ KeyValue.TYPE_SIZE
+ KeyValue.ROW_LENGTH_SIZE
+ cell.getRowLength()
+ cell.getFamilyLength()
+ cell.getQualifierLength()
+ cell.getValueLength();
}
}
}
длина всех строк: 114709 размер файла в hdfs: 135675
Должен ли я повторить эту вещь не сдлина строк, но с форматом KeyValue?