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 編寫的搜尋引擎軟體庫。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP