386个标准csv文件,9列,912M,6839927行,
如果是默认index的配置进入es,即5个shards,1个replica,那么占用 3.2G的空间。
估算方法:原始文件一份,倒排索引文件一份,1个replica导致数据量再次翻倍,总共大约4倍
900M * 4 = 3.6G 。 与实际的 3.2G相差不大
那么如何压缩占用的磁盘空间呢?
1. 减少replica
通过下面的方式,设置0个replica,1个shard(因为只有一台机器,多shard也没用)
PUT _template/<template_name>
{
"index_patterns": "*",
"settings" : {
"number_of_replicas" : 0,
"number_of_shards" : 1
},
"version" : 1
}
2. 删除原始message
在 grok 解析那里,把原始的message舍去(如果不需要全文索引的话)。
最后占用空间是1.6G。在kibana上 GET _cat/indices?v
展示的是 1gb
PS. 在导入的过程中可以发现,这个占用空间会增长到 2.3G 甚至更多。然后回落、再涨、再回落。
这里是有一个数据压缩的过程,下次再仔细介绍。
后记
大约8分30秒,这684w的数据进入es。平均速度是 13411 TPS。
使用的是一个虚拟机,16G 内存,600G SATA,4核,Intel® Xeon® CPU E5-2650 v4 @ 2.20GHz。给ES开的内存是
-Xms1g -Xmx1g
曾经一个正儿八经的3实体机集群,SATA盘,从kafka接数据,可以达到25w TPS。