Elasticsearch 和 Hadoop 的差异
Elasticsearch 于 2010 年 2 月 8 日首次亮相。程序员主要使用 Java 语言。Elasticsearch 拥有 HTTP Web 界面和 JSON 文档。Shay Banon 在 2004 年创建了“Compass”,作为 Elasticsearch 的前身。Shay Banon 将 Compass 重命名为 Elasticsearch,并创建了一个名为 JSON 的通用界面。JSON 是比 Java 更好的编程语言。
Hadoop 由 Doug Cutting 和 Mike Cafarella 于 2006 年 4 月 1 日创建。它是一个由 Apache 软件基金会开发的开源软件。Hadoop 的核心有两个部分。第一个是处理部分,然后是存储部分。Hadoop 的存储和处理部分分别是 HDFS 和 MapReduce。Hadoop 将大文件分割成更小的块,并在系统的各个节点中随机分散这些块。然后,它将代码插入到节点中以便并行过滤数据。
Elasticsearch 是什么?
Elasticsearch 是一个分布式搜索和分析引擎,利用 RESTful 协议。它是开源、免费的 Elastic Stack 的基础,负责集中化数据存储、极速搜索和可扩展分析。它最初只是一个全文搜索引擎,但现在正在成为一款支持复杂的聚合分析型引擎。
尽管最初是一个全文搜索引擎,但它是基于 Apache Software Foundation 支持的 Java 搜索引擎框架 Lucene 构建的。Apache Lucene 是一个搜索库。Elasticsearch 有机分布且易于使用,因此很容易上手和随着数据增加而扩展。由于其广泛的聚合机制和数据存储能力,它还可以充当一个分析框架。
Elasticsearch 的基本概念
为了更好地理解 Elasticsearch 的工作原理,让我们了解一下它是如何组织数据以及它的后端有哪些部分。
文档 − Elasticsearch 索引文件。JSON 是互联网数据格式。记录类似于文档。关系数据库记录表示实体。Elasticsearch 文档是结构化的 JSON 数据。日期、字符串和整数是数据。每个文档都有一个 ID 和数据类型。百科全书条目和服务器日志是文档。
索引 − 索引用于对文档进行比较。Elasticsearch 查询索引。关系数据库模式包括索引。大多数索引都是链接的。客户、产品、订单等可以在电商网站上进行索引。在对文档进行索引、搜索、更新或删除时使用名称。
倒排索引 − 它监视文档或系列中的单词或数字。它将单词与文档关联起来,就像 HashMap。倒排索引中不存储字符串。相反,它将搜索词与文档关联起来。
后端组件
节点 − 节点存储数据并参与集群的索引和搜索能力。有不同的方式来设置 Elasticsearch 节点
主节点 − 该节点运行 Elasticsearch 集群,并负责所有集群范围的任务。
数据节点 − 存储数据并在其上运行操作的节点,例如搜索和分组。
客户端节点 − 向主节点发送有关集群的请求,向数据节点发送有关数据请求。
集群 − 由一个或多个互连的 Elasticsearch 节点实例集合形成的集群称为 Elasticsearch。
分片 − Elasticsearch 允许您将索引分解成更小的部分,称为“分片”。每个分片都是其自己的功能齐全且独立的“索引”,可以托管在集群中的任何节点上。
副本 − 您可以用 Elasticsearch 创建任意数量的索引分片的副本。这些副本称为“副本分片”或简称“副本”。副本分片本质上是主分片的副本。
什么是 Hadoop?
Apache Hadoop 是一个开源的 Java 平台。它管理数据密集型应用程序的处理和存储需求。Hadoop 平台必须首先将大型数据和分析作业分配给计算机集群的各个节点。然后将这些任务分解成可以同时完成的合理工作负载。
Hadoop 可以处理结构化和非结构化数据,并且可以在不牺牲可靠性的情况下从一台服务器扩展到数千台服务器。基于 HADOOP 的程序在具有海量数据集合的商用机器集群上运行。这些机器便宜且数量众多。它们以更低的成本提供更大的处理能力。Hadoop 使用一个称为 Hadoop 分布式文件系统的分布式文件系统来存储其数据。这就像将数据保存在 PC 本地文件系统中。
在底层,Hadoop 由两层主要层组成,即 −
处理和计算层,也称为 Map Reduce 层。
存储层,也称为 Hadoop 分布式文件系统。
Map Reduce 层
谷歌开发了 MapReduce 来创建分布式应用程序。它旨在对大型集群(数千个节点)上的多 TB 数据集进行可靠且容错的处理,这些集群的商品硬件(数千个节点)。Hadoop 是一个 Apache 管理的开源平台,在其中实现了 MapReduce。这类似于在 PC 本地文件系统上保存数据。
Hadoop 分布式文件系统
Hadoop 分布式文件系统 (HDFS) 基于谷歌文件系统 (GFS),该文件系统可在商品硬件上运行。它类似于其他分布式文件系统。但是,此系统与其他系统有显着不同。它具有容错能力,可在低成本硬件上运行。它提供了用于访问应用程序数据的高吞吐量,适合于大型数据集。
除了两个主要组件外,Hadoop 框架还包括以下两个模块。
Yet Another Resource Negotiator (YARN) − 它管理群集的节点和资源。它安排工作。
Hadoop Common − 提供适用于所有模块的标准 Java 库,任何模块均可使用它们。
Elasticsearch 和 Hadoop 之间的比较
与 Elasticsearch 不同,Hadoop 只是搜索引擎的一种。另一方面,Hadoop 具有一个分布式文件系统,主要用于并行验证数据。
比较基础 | Elasticsearch | Hadoop |
---|---|---|
架构 | Elasticsearch 构建于 REST 之上,并针对 HTTP CRUD 和群集监控提供 API 端点。它扩大了我们管理、集成和查询索引数据的选项。 | Hadoop 是一个免费软件平台,它使用主从架构和 MapReduce 编程方法存储和处理数据。HDFS 被设计来处理大数据。高性能。 |
用例 | Elasticsearch 搜索全文。高级聚合支持分析。它可以离线或分批执行实时查询。它处理搜索和组。 | Hadoop 在商品硬件群集上存储数据并运行应用程序。世界上信誉度最高的文件存储,HDFS。 |
功能 | 可以通过使用 JavaScript 对象表示法,通过 Elasticsearch 获得数字用户线路上完整的查询。 | 在对海量数据进行分析时,Hadoop 使用 MapReduce 编程模型。 |
兼容性 | Elasticsearch 与包含 Java 虚拟机的所有操作系统兼容。 | Hadoop 可在 Unix、Linux 甚至 Windows 操作系统上运行。 |
能力 | Elasticsearch 运行全文搜索引擎和分析框架。用户有两种选择。 | Hadoop 是一个系统,可以用来存储数据并在群集内执行程序。 |
模式 | 在上传数据之前,Elasticsearch 建议使用通用键值格式存储数据。 | Hadoop 的 NoSQL 技术简化了键值数据的上传。 |
结论
Elasticsearch 是一个功能强大的全文搜索和文档索引工具,它构建在 Lucene 之上,这是一个完全用 Java 编写的搜索引擎软件库。另一方面,Hadoop 是一个数据处理框架,可以在几分之一秒内处理海量数据,而 Elasticsearch 是一个完全用 Java 编写的搜索引擎软件库。