1.大规模数据分析的需求
数据归档,多维度的检索,高效率的搜索
完整的日志系统:
1.1 收集数据:从多个终端收集数据
1.2 传输数据:稳定可靠的传输数据
1.3 存储数据:大规模数据的存储
1.4 数据分析:对于数据进行梳理
1.5 错误告警:对于报错内容通告
2.elk
2.1 elasticsearch:搜索分析引擎,具备实时文件存储,分布式收索
2.1.1 存储
存储是一条数据是一个文档,通过json进行序列化。
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)
2.1.2 索引: inverted index(倒排索引)
2.1.2.1 term 和 Posting list :
term可以理解为字段 Posting理解为对字段的集合id,不如年龄为18的同学有id=1,3,5 19有id=2,6
term|Posting list的值有 Age:18|[1,3,5] 19|[2,6]
term dictionary:将所有的term排个序,二分法查找term,logN的查找效率
term index:前缀与Term Dictionary的block之间的映射关系
2.1.2.2 Roaring bitmaps(高效压缩位图)
分为2^16个桶,32bit前16个为高位,后16个为低位。低位小于4096采用array 大于4096采用bitmap。
array container:
比如存储12: 定义一个short [0] =12; 再添加15 ,找的末尾位置, short[1] =
15; 再添加14 ,找的中间位置。 将先移动数字 short【2】=15,然后放入 short【1】=14
2.2 logstash:采集和多管道传输,可以从多个设备收集日志发送给存储库
2.3 kibana:数据可视化