如何在Rancher上运行Elasticsearch
Elasticsearch是当前最流行的大数据集分析平台之一,对于日志聚合、商业智能以及机器学习等各类用例而言,Elasticsearch都是一个很有用的工具。Elasticsearch基于 REST的简单的API,使得创建索引、添加数据和进行复杂的查询变得非常简单,这也是它大受欢迎的一大原因。但是,在你开始构建数据集和运行查询之前,您需要设置一个Elasticsearch集群,这可能会有点难。现在我们来看看Rancher Catalog是如何让配置一个可扩展、高可用的Elasticsearch集群变容易的。
假设你已经有一个运行中的Rancher集群,那么让Elasticsearch在你的集群上运行起来非常简单 。只要通过顶部菜单打开 Catalog,然后搜索Elasticsearch。Elasticsearch条目有两个版本,我们假设你使用的是2.x,这是最新的稳定版本。要从集群启动stack,请选择查看详细信息(View Detail),然后在后续屏幕中选择stack名称( Stack Name),集群名称(Cluster Name),然后选择启动。
这个stack会启动以下服务:kopf、client(s)、datanode(s) 和master(s)。kopf容器提供了web界面,用来管理你的elasticsearch 集群。Datanodes储存实际的索引。主节点运行集群管理任务,客户端节点发起和协调你的搜索和其他操作。开始时,你的Elasticsearch集群各种类型的容器都只有一个(master、client、datanodes有两个辅助容器)。但是,您可以根据查询负载和索引的大小扩展每个组件。请注意,你需要不同的物理主机才能使每个datanode容器正常工作。因此,您可能需要注册更多Rancher计算节点。
当所有容器都处于active状态时,您就可以到运行着kopf容器的主机中,启动kopf界面。点击 nodes选项卡,就会看到我之前提过的各种组件。如你所见,为了为我的索引提供冗余存储,我启动了第二个数据节点。我们将很快看到,当创建索引时,我们可以控制数据片的数量和每个片的备份。这样不仅可以提供冗余,还可以提升查询处理的速度。
在kopf的顶部的菜单中,选择更多(more),然后选择创建索引(create index)。在之后的页面中,你会被要求输入索引名称(Index Name),分片数(Number of Shards)和副本数(Number of replicas)。默认值为5个分片和1个副本。为索引设置的分片数和副本数高度依赖于数据集和查询模型。shard数有助于将数据扩展到多个节点,并且并行处理查询。如果你只有一个datanote,多分片可能看不到很多好处。此外,如果你期望数据快速增长,你可能需要更多分片,以便于你稍后添加节点并将数据移动到这些分片上。另外要注意的一点是,Elasticsearch建议最大的堆大小为32GB,所以最大的分片大小应该约为该大小,以便它可以尽可能地保存在内存中。
另一方面,副本与数据大小不太相关,它与冗余和性能的关系更紧密。所有对索引的查询都需要查看每个分片的一个副本,如果一个分片有多个副本,当一个节点不可用时,数据也依然可用。此外,使用多个副本,对指定分片的查询负载会分散在多个节点间。多个副本只有在集群中具有多个数据容器或节点时才有意义,而且在扩展越来越大的集群时会变得更加重要。
举例来说,我们来定义一个叫movies的索引,给它设置2个分片和2个副本。现在从顶部菜单中选择Rest选项卡,以便我们向索引中添加一些文档并测试一些查询。Elasticsearch是无模式的,所以我们可以向索引中添加任意形式的数据,只要它是合法的JSON格式就行。将path字段更新为 /movies/movie/1。path的格式为 /INDEX_NAME/TYPE/ID,movies是我们刚刚创建的索引,movie是我们给即将提交的文档类型的名称,id是这个索引中文档的唯一ID。ID是可选的,如果你在path中省略了,那么你的文档会被创建一个随机的ID。添加了path之后,选择POST方法,在底部的文本字段中输入你的JSON文档,点击发送。这样将把这个文档添加到索引中,并且向你发送一个确认消息。
在添加了几个movie到索引中之后,我们就可以用同样的界面从索引中搜索和聚合数据了。将path字段更新为 /movies/movie/_search。path的格式为 /INDEX_NAME/TYPE/_search,INDEX_NAME,TYPE都是可选的。如果省略type,则会搜索所有类型,如果省略索引名,则会搜索所有索引。
Elasticsearch支持多种不同类型的查询,我们在这里只介绍几种常见的类型。第一种类型是自由文本查询,查询字符串参数允许使用Elasticsearch Query DS进行相当复杂的查询。当然我可只输入简单的字符串进行匹配,这将匹配文档任何字段中指定的词。
{ "query": { "query_string": { "query": "Apocalypse" } } }
例如,上面的查询会返回下面的结果。结果中包含处理查询花费的时间、搜索的分片数、结果总数以及每个结果的详细信息。
{ "took": 139, "timed_out": false, "_shards": { "total": 2, "successful": 2, "failed": 0 }, "hits": { "total": 2, "max_score": 0.5291085, "hits": [{ "_index": "movies", "_type": "movie", "_id": "AVSvEC1fG_1bjVtG66mm", "_score": 0.5291085, "_source": { "title": "Apocalypse Now", "director": "Francis Ford Coppola", "year": 1979, "genres": [ "Drama", "War" ] } } ....
除了查询文本之外,你还可以指定一个字段或一些字段的估计值,从而将查询限制为搜索文档的一个子集。比如,下面的查询会返回与之前一样的结果,但是必须查看文档的一个子集,且更大的数据集会有更好的性能。这里还有很多其他操作。
{ "query": { "query_string": { "query": "Apocalypse" "fields": ["title"] } } }
我们可以把查询字符串包裹在filtered对象中,这样会对查询的结果进行过滤。这允许我们对初始数据集保持任意格式的查询,但随后过滤出我们查找的特定数据。
{ "query": { "filtered": { "query_string": { "query": "Apocalypse" "fields": ["title"] } "filter": { "term": { "year": 1979 } } } } }
最后,聚合可能是你会运行的另外一种形式的查询,它对于计算有关数据的统计信息很有用。下面展示了这些类型的聚合的两个例子。第一个将返回每个导演指挥的电影的数量,第二个将返回我们的数据集中所有电影的平均评分。
{ "aggs": { "group_by_director": { "terms": { "field": "director" } } } } { "aggs" : { "avg_rating" : { "avg" : { "field" : "rating" } } } }
Elasticsearch是在大型非结构化数据集上运行分析的最佳方法之一,在从日志聚合、机器学习到商业智能等许多领域中皆被广泛使用。本文中,我们看到了使用Catalog在Rancher上设置一个功能齐全的Elasticsearch集群是多么简单。此外,我们还快速了解了Elasticsearch使用REST API的强大功能。只要你有Elasticsearch可用并且运行了起来,你就可以使用它作为许多不同的用例与许多可用的可视化和聚合框架的主机,比如实时可视化的Kibana或业务分析的Pentaho框架。
原文来源:Rancher Labs

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mysql表碎片的查询自己回收
在MySQL中,我们经常会使用VARCHAR、TEXT、BLOB等可变长度的文本数据类型。不过,当我们使用这些数据类型之后,我们就不得不做一些额外的工作——MySQL数据表碎片整理。 每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。 当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。如果进行新的插入操作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用。 1.或者查看某个表所占空间,以及碎片大小。 select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from information_schema.tables where TABLE_SCHEMA='test'; 或者 select table_name,engine,table_rows,data_length+index_length length,DATA_FR...
- 下一篇
图文超详解zabbix的安装以及设置邮件报警
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一、 zabbix简介 zabbix是完全开源的工具,整合了cacti和nagios等特性 附:SNMP(udp 161 udp 162) 众多网络工具都支持此协议,比如常见路由交换,常见OS 其既可以做管理端也可以做被管理端 snmp协议大致有3个版本分别是v1 v2 v3 无论是v1 和 v2 的安全性是比较差的,因为传输是明文的, V3的认证密码用MD5/SHA摘要算法加密。 很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是控制端和agent架构,他们有专属的agent Zabbix的主要功能: ①具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)。 ②支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)。 ③支持分布式,能集中展示、管理分布式的监...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器