写在前面
Elastic Static 是指由Elasticsearch,Logstash,Kibana,Beats等组件结合起来而构成的一个数据收集,分析,可视化的一个架构.我们经常听说过的ELK就是指前面三个,它能够安全可靠地获取任何来源、任何格式的数据,并且能够实时地对数据进行搜索、分析和可视化。
简单介绍
这里我们从数据的流向来简单介绍下这几个组件.
1. 数据采集过程
可以采集人和来源,任何格式的数据
Beats
Beats 是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
Logstash
Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。类似于 Hadoop 生态圈里的 Flume,整个采集的过程也是基于事务(event)的[这一点是通过codec的插件来做到]。通常在其.conf配置文件规定 logstash 如何处理各种类型的事务流,一般包含 input、filter、output 三个部分(域),在每一个域中,可供选择多个插件来处理我们的数据。
2. 数据搜索、分析和存储
Elasticsearch
Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可用和管理便捷性而设计。ElasticSearch 也是基于 Lucene进行了封装,它能在一秒内返回你要查找的且已经在 Elasticsearch 做了索引的文档,提供了更为便利的访问和调用.它存储json格式的文档数据,有基于RESTful的操作接口。利用Elasticsearch可以方便的在任何Web应用中集成搜索应用。另外它更有出色的聚合功能(aggregation),能轻松的对数据进行统计分析 .这个组件也是整个stack的主角.
Elasticsearch 中的 Index 是一组具有相似特征的文档集合,类似于关系数据库模型中的数据库实例,Index 中可以指定 Type 区分不同的文档,类似于数据库实例中的关系表,Document 是存储的基本单位,都是 JSON 格式,类似于关系表中行级对象。我们处理后的 JSON 文档格式的日志都要在 Elasticsearch 中做索引,相应的 Logstash 有 Elasticsearch output 插件,对于用户是透明的。需要说明的是,ES6.0之后,好像规定一个Index下只能够定义一种Type,后面也会慢慢去掉Type这个概念,,最终,我们就姑且把Index当做数据表来理解,Document当做数据表的行理解吧.
3. 数据可视化
Kibana实现数据可视化。导览 Elastic Stack。
Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。简单来说,Kibana 是在ElasticSearch 有了相当多的数据之后,进行分析,可视化数据用的工具。
ELK VS 大数据Hadoop/Spark
因为在日志处理等场景,难免会在技术选型上有所抉择?
简单来说,对于普通的小型的数据量,PB级别吧对于ES来说,没什么大的问题,而且,个人觉得,ES的简便搭建维护,也是不错的选择.
但是当数据量暴增,我们的集群数量也增加的情况下,就面临着,数据的分布式存储,就要考验H/S集群或者ES集群对于数据一致性的保证.
由于Elasticsearch集群中每个节点都是状态维护者,在集群中网络不稳定的情况下(主节点丢失)就有可能出现集群脑裂(不同的节点对master节点的选择出现了异常)
然而对于Haddop集群来说,就存在主从namenode节点的概念,只会有一个节点来管理datanode的信息(而且还是备份型的)
Elasticsearch拥有功能强大的聚合统计和全文搜索功能,可以轻松的用于网络问题分析,如404错误计数,页面浏览量,用户访问统计信息等。但它缺少类似标准SQL中的join(连接)或子查询的功能。Elasticsearch不支持查询结果的额外处理或分析的中间数据的输出,也不支持数据集的转换(即一个100万行的表,使用分析处理后,成为另一个100万行的表),故不太适合处理复杂的计算逻辑。
虽然Elasticsearch存在这些问题,但是它仍然是一个非常优秀的分布式计算框架,而且Elasticsearch可以非常方便的集成在hadoop中,我们也可以用它优秀的数据检索能力来构造自己的查询系统.
---------------------好的,先就简单介绍到这里.接下来,会减少如何搭建一个自己的ES----------------