【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch

这篇具有很好参考价值的文章主要介绍了【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!

【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch

目录

1. 关于 Elasticsearch

1.1 Elasticsearch是什么 

1.2 Elasticsearch的核心概念 

2. Elasticsearch的优势有哪些? 

3. Elasticsearch逻辑结构

4. 在Docker中部署运行Elasticsearch

 👑👑👑结束语👑👑👑


 

Elasticsearch是一个基于Lucene的开源搜索服务器,主要基于Java实现。它提供了一个分布式的,多租户的全文搜索引擎,内含RESTful web接口。
Elasticsearch提供了实时的分布式数据存储和分析查询功能,很容易扩展到上百台服务器,支持处理PB级结构化或非结构化数据。配合 Logstash、Kibana等组件,可以快速构建一套对日志消息的分析平台。

1. 关于 Elasticsearch

1.1 Elasticsearch是什么 

Elasticsearch 是一个分布式的开源搜索和分析引擎,在 Apache Lucene 的基础上开发而成。

Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示, 一切都是灵活、有弹性的。而且,应用代码也不是必须用Java 书写才可以和Elasticsearc兼容,完全可以通过JSON 格式的HTTP 请求来进行索引、搜索和管理Elasticsearch 集群。

如果你已经听说过Lucene ,那么可能你也听说了Solr ,它也是开源的基于Lucene 的分布式搜索引擎,跟Elasticsearch有很多相似之处。

但是Solr 诞生于2004 年,而Elasticsearch诞生于2010,Elasticsearch凭借后发优势和更活跃的社区、更完备的生态系统,迅速反超Solr,成为搜索市场的第二代霸主。

1.2 Elasticsearch的核心概念 

  • Cluster:集群,由一个或多个Elasticsearch节点组成。
  • Node:节点,组成Elasticsearch集群的服务单元,同一个集群内节点的名字不能重复。通常在一个节点上分配一个或者多个分片。
  • Shards:分片,当索引上的数据量太大的时候,我们通常会将一个索引上的数据进行水平拆分,拆分出来的每个数据库叫作一个分片。在一个多分片的索引中写入数据时,通过路由来确定具体写入那一个分片中,所以在创建索引时需要指定分片的数量,并且分片的数量一旦确定就不能更改。分片后的索引带来了规模上(数据水平切分)和性能上(并行执行)的提升。每个分片都是Luence中的一个索引文件,每个分片必须有一个主分片和零到多个副本分片。
  • Replicas:备份也叫作副本,是指对主分片的备份。主分片和备份分片都可以对外提供查询服务,写操作时先在主分片上完成,然后分发到备份上。当主分片不可用时,会在备份的分片中选举出一个作为主分片,所以备份不仅可以提升系统的高可用性能,还可以提升搜索时的并发性能。但是若副本太多的话,在写操作时会增加数据同步的负担。
  • Index:索引,由一个和多个分片组成,通过索引的名字在集群内进行唯一标识。
  • Type:类别,指索引内部的逻辑分区,通过Type的名字在索引内进行唯一标识。在查询时如果没有该值,则表示在整个索引中查询。
  • Document:文档,索引中的每一条数据叫作一个文档,类似于关系型数据库中的一条数据通过_id在Type内进行唯一标识。
  • Settings:对集群中索引的定义,比如一个索引默认的分片数、副本数等信息。
  • Mapping:类似于关系型数据库中的表结构信息,用于定义索引中字段(Field)的存储类型、分词方式、是否存储等信息。Elasticsearch中的mapping是可以动态识别的。如果没有特殊需求,则不需要手动创建mapping,因为Elasticsearch会自动根据数据格式识别它的类型,但是当需要对某些字段添加特殊属性(比如:定义使用其他分词器、是否分词、是否存储等)时,就需要手动设置mapping了。一个索引的mapping一旦创建,若已经存储了数据,就不可修改了。
  • Analyzer:字段的分词方式的定义。一个analyzer通常由一个tokenizer、零到多个filter组成。比如默认的标准Analyzer包含一个标准的tokenizer和三个filter:Standard Token Filter、Lower Case Token Filter、Stop Token Filter。
     Elasticsearch的节点的分类如下:
  • 主节点(Master Node):也叫作主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。Elasticsearch中的主节点的工作量相对较轻。用户的请求可以发往任何一个节点,并由该节点负责分发请求、收集结果等操作,而并不需要经过主节点转发。通过在配置文件中设置node.master=true来设置该节点成为候选主节点(但该节点不一定是主节点,主节点是集群在候选节点中选举出来的),在Elasticsearch集群中只有候选节点才有选举权和被选举权。其他节点是不参与选举工作的。
  • 数据节点(Data Node):数据节点,负责数据的存储和相关具体操作,比如索引数据的创建、修改、删除、搜索、聚合。所以,数据节点对机器配置要求比较高,首先需要有足够的磁盘空间来存储数据,其次数据操作对系统CPU、Memory和I/O的性能消耗都很大。通常随着集群的扩大,需要增加更多的数据节点来提高可用性。通过在配置文件中设置node.data=true来设置该节点成为数据节点。
  • 客户端节点(Client Node):就是既不做候选主节点也不做数据节点的节点,只负责请求的分发、汇总等,也就是下面要说到的协调节点的角色。其实任何一个节点都可以完成这样的工作,单独增加这样的节点更多地是为了提高并发性。可在配置文件中设置该节点成为数据节点:
    node.master=false
    node.data=false
  • 部落节点(Tribe Node):部落节点可以跨越多个集群,它可以接收每个集群的状态,然后合并成一个全局集群的状态,它可以读写所有集群节点上的数据,在配置文件中通过如下设置使节点成为部落节点:
  tribe:
    one:
      cluster.name: cluster_one
    two:
      cluster.name: cluster_two

 因为Tribe Node要在Elasticsearch 7.0以后移除,所以不建议使用。

  • 协调节点(Coordinating Node):协调节点,是一种角色,而不是真实的Elasticsearch的节点,我们没有办法通过配置项来配置哪个节点为协调节点。集群中的任何节点都可以充当协调节点的角色。当一个节点A收到用户的查询请求后,会把查询语句分发到其他的节点,然后合并各个节点返回的查询结果,最好返回一个完整的数据集给用户。在这个过程中,节点A扮演的就是协调节点的角色。由此可见,协调节点会对CPU、Memory和I/O要求比较高。

集群的状态有Green、Yellow和Red三种,如下所述: 

  • Green:绿色,健康。所有的主分片和副本分片都可正常工作,集群100%健康。
  • Yellow:黄色,预警。所有的主分片都可以正常工作,但至少有一个副本分片是不能正常工作的。此时集群可以正常工作,但是集群的高可用性在某种程度上被弱化。
  • Red:红色,集群不可正常使用。集群中至少有一个分片的主分片及它的全部副本分片都不可正常工作。这时虽然集群的查询操作还可以进行,但是也只能返回部分数据(其他正常分片的数据可以返回),而分配到这个分片上的写入请求将会报错,最终会导致数据的丢失。

2. Elasticsearch的优势有哪些? 

  • Elasticsearch 很快。 由于 Elasticsearch 是在 Lucene 基础上构建而成的,所以在全文本搜索方面表现十分出色。Elasticsearch 同时还是一个近实时的搜索平台,这意味着从文档索引操作到文档变为可搜索状态之间的延时很短,一般只有一秒。因此,Elasticsearch 非常适用于对时间有严苛要求的用例,例如安全分析和基础设施监测。

  • Elasticsearch 具有分布式的本质特征。 Elasticsearch 中存储的文档分布在不同的容器中,这些容器称为分片,可以进行复制以提供数据冗余副本,以防发生硬件故障。Elasticsearch 的分布式特性使得它可以扩展至数百台(甚至数千台)服务器,并处理 PB 量级的数据。

  • Elasticsearch 包含一系列广泛的功能。 除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。

  • Elastic Stack 简化了数据采集、可视化和报告过程。 人们通常将 Elastic Stack 称为 ELK Stack(代指ElasticsearchLogstashKibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。通过与 Beats 和 Logstash 进行集成,用户能够在向 Elasticsearch 中索引数据之前轻松地处理数据。同时,Kibana 不仅可针对 Elasticsearch 数据提供实时可视化,同时还提供 UI 以便用户快速访问应用程序性能监测 (APM)、日志和基础设施指标等数据。

3. Elasticsearch逻辑结构

Document 

Elasticsearch 是面向文档的,这意味着索引和搜索数据的最小单位是文档

一个文档通常是以JSON 的数据格式来表示的。例如,一项技术大会的活动可以通过如下文档表达:

{
"name":"Elasticsearch创新大会",
"organizer":"冰河",
"location ":"中国, 北京,海定"
}

一个Document中有很多Field,一个Field就是一个数据字段。

文档可以是包含若干取值的一行。但是这样的比较不够精准,它们还是有所差别。一个区别是,和行有所不同,文档可以是层次型的。例如,位置可以包含地址和邮编:

{
:,
:,
:{
"address":,
"postcode":"310000"
}
}

一篇单独的文档也可以包含一组数值,例如:

{
:,
:,
"member":[
"东方青苍",
"神女蒠芸",
"长珩仙君",
"丹音仙子"
]
}

Type 

类型,是文档的逻辑容器,类似于表格是行的容器。在不同的类型中,最好放入不同结构的文档。

每个类型中字段(Field)的定义称为映射(Mapping)。例如, 一个人的姓名可以映射为string,年龄可以映射为int。

映射包含某个类型中当前索引的所有文档的所有字段,但是不是所有的文档必须要有所有的宇段。同样,如果一篇新近索引的文档拥有一个映射中尚不存在的字段, Elasticsearch 会自动地将新字段加入映射。为了添加这个字段Elasticsearch 不得不确定它是什么类型,于是Elasticsearch 会进行猜测。例如, 如果值是7,Elasticsearch 会假设字段是长整型。

这种新字段的自动检测也有缺点,因为Elasticsearch 可能猜得不对。例如,在索引了值7之后,你可能想再索引hello world ,这时由于它是string 而不是long ,索引就会失败。对于线上环境,一般在索引数据之前,都会定义好所需的映射,不允许动态添加字段。

Index 

索引,是类型的容器。一个Elasticsearch 索引非常像关系型世界的数据库,是独立的大量文档集合。每个索引存储在磁盘上的同组文件中,索引存储了所有映射类型的字段,还有一些设置。

 4. 在Docker中部署运行Elasticsearch

可以使用官方镜像,快速运行Elasticsearch容器:

$ docker run -d elasticsearch 
937c1cb21b39a322ab6c5697e31af22a5329f08408d40f64e27465fed6597e34

也可以在启动时传入一些额外的配置参数:

$ docker run -d elasticsearch elasticsearch -Des.node.name="TestNode" 
2c0ae96f73ca01779c60f7c6103481696c34c510266f5c503610a2640dc6f50a
目前使用的镜像内含默认配置文件,包含了预先定义好的默认配置。如果用户要使用自定义配置,可以使用数据卷,挂载自定义配置文件 至/usr/share/elasticsearch/config:
$ docker run -d -v "$PWD/config":/usr/share/elasticsearch/config elasticsearch 
43333bfdbbfe156512ba9786577ca807c676f9a767353222c106453020ac7020
如果需要数据持久化,可以使用数据卷指令,挂载至/usr/share/elasticsearch/data:
$ docker run -d -v "$PWD/esdata":/usr/share/elasticsearch/data elasticsearch 
3feddf6a8454534b209b32df06c2d65022d772a8f511593371218f6bd064e80e
此镜像会暴露9200 9300两个默认的HTTP端口,可以通过此端口进行服务访问。9200端口是对外提供服务的API使用的端口。9300端口是内部通信端口,这些通信包括心跳,集群内部信息同步。

 👑👑👑结束语👑👑👑

【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch文章来源地址https://www.toymoban.com/news/detail-405657.html

到了这里,关于【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据采集的大数据:如何处理和分析巨量数据

    大数据技术已经成为当今世界各行各业的核心技术之一,它为企业和组织提供了更高效、更智能的决策支持和业务优化。数据采集是大数据处理过程的第一步,它涉及到的技术和方法非常多样,包括Web抓取、数据库导出、API接口调用等。在这篇文章中,我们将从以下几个方面

    2024年02月20日
    浏览(63)
  • python爬各平台评论并数据分析——数据采集、评论情绪分析、新闻热度

    1.python之matplotlib使用系统字体 用于解决python绘图中,中文字体显示问题 2.cookie与视频页面id(b站、微博等)查看 F12打开网页开发者模式,然后F5刷新,进入控制台中的网络,查看Fetch/XHR 3.爬取wb评论时,最好使用网页手机端 网页手机端:https://m.weibo.cn/?sudaref=cn.bing.com 4.从存储

    2024年02月09日
    浏览(56)
  • 【GD32篇】驱动AD7616完成数据采集

    1.1 概述:          AD7616 是一款 16 位 DAS(数据采集系统) ,支持对 16 个通道进行双路同步采样。 AD7616 采用 5 V 单电源供电,可以处理 ±10 V 、 ±5 V 和±2.5 V 真双极性输入信号 ,同时每对通道均能以高达 1 MSPS的吞吐速率和 90.5 dB SNR 采样。利用片内过采样模式可实现更高

    2024年02月13日
    浏览(41)
  • 大数据毕业设计:基于python商品数据采集分析可视化系统 淘宝数据采集 大数据 大屏可视化(附源码+论文)✅

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌ 毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议

    2024年02月03日
    浏览(54)
  • 基于python商品数据采集分析可视化系统 淘宝数据采集 大数据 大屏可视化(附源码+论文)大数据毕业设计✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年02月02日
    浏览(58)
  • STM32-ADC多通道数据采集:理论与实践

    本文详细介绍了STM32-ADC多通道数据采集的理论基础和实践应用。文章首先解释了ADC的基本概念和特性,然后详细阐述了ADC采样的过程和注意事项。接着,文章深入讲解了多通道采集模式的轮询和DMA两种方法,并给出了具体的代码实现。

    2024年02月10日
    浏览(47)
  • Sqoop与其他数据采集工具的比较分析

    比较Sqoop与其他数据采集工具是一个重要的话题,因为不同的工具在不同的情况下可能更适合。在本博客文章中,将深入比较Sqoop与其他数据采集工具,提供详细的示例代码和全面的内容,以帮助大家更好地了解它们之间的差异和优劣势。 Sqoop是一个Apache项目,专门设计用于在

    2024年01月20日
    浏览(47)
  • STM32_HAL库—ADC采集数据

    目录 一、简介 二、实例 1. (单通道、阻塞式)配置及实现方式 2. (单通道、中断式)配置及实现方式 3. (多通道、阻塞式)配置及实现方式 4. (多通道、DMA)配置及实现方式        STM32 的ADC精度为 12 位,且每个 ADC 最多有 16 个外部通道。各通道的A/D转换可以单次、连续、扫描或

    2024年02月10日
    浏览(43)
  • 工程监测振弦采集仪采集到的数据如何进行分析和处理

    工程监测振弦采集仪采集到的数据如何进行分析和处理 振弦采集仪是一个用于测量和记录物体振动的设备。它通过测量物体表面的振动来提取振动信号数据,然后将其转换为数字信号,以便进行分析和处理。在实际应用中,振弦采集仪是广泛应用于机械、建筑、航空航天和汽

    2024年02月12日
    浏览(50)
  • Python爬虫实战:自动化数据采集与分析

    在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。 一、环境准备 首先,确保您已经

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包