国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ES】分布式集群

這篇具有很好參考價(jià)值的文章主要介紹了【ES】分布式集群。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文主要參考尚硅谷的資料,少部分自己原創(chuàng),有錯(cuò)誤之處請指出。

單節(jié)點(diǎn)集群

node-1001配置如下:

# 集群名稱,節(jié)點(diǎn)之間要保持一致
cluster.name: my-elasticsearch
# 節(jié)點(diǎn)名稱,集群內(nèi)要唯一
node.name: node-1001
# 表示節(jié)點(diǎn)是否具有成為主節(jié)點(diǎn)的資格(此屬性的值為true,并不意味著這個(gè)節(jié)點(diǎn)就是主節(jié)點(diǎn))
node.master: true
# 表示節(jié)點(diǎn)是否存儲數(shù)據(jù)
node.data: true
# IP地址
network.host: localhost
# http端口
http.port: 1001
# tcp監(jiān)聽端口(節(jié)點(diǎn)間通信端口)
transport.tcp.port: 9301
# 該節(jié)點(diǎn)會與哪些候選地址進(jìn)行通信
#discovery.seed_hosts: ["localhost:9301", "localhost:9302", "localhost:9303"]
# 集群內(nèi)可以被選為主節(jié)點(diǎn)的節(jié)點(diǎn)列表
#cluster.initial_master_nodes: ["node-1001", "node-1002", "node-1003"]
# 是否支持跨域,默認(rèn)為false(因?yàn)槲覀兘酉聛硪褂胑lasticsearch-head插件連接es服務(wù))
http.cors.enabled: true
# 當(dāng)設(shè)置允許跨域,默認(rèn)為*,表示支持所有域名,如果我們只是允許某些網(wǎng)站能訪問,那么可以使用正則表達(dá)式。比如只允許本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"

坑1:如果之前啟動過此 ES 服務(wù),需要刪除 data文件夾以及l(fā)ogs里面的所有日志,否則可能配置失效
坑2:discovery.seed_hosts以及cluster.initial_master_nodes不需要配置,否則訪問此 ES 服務(wù)會報(bào)錯(cuò)找不到主節(jié)點(diǎn),其實(shí)和坑3的出現(xiàn)是一個(gè)原因。

我們創(chuàng)建名為 user 的索引,為了演示目的,我們將分配3個(gè)主分片和一份副本(每個(gè)主分片擁有一個(gè)副本份片)

{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 1
   } 
}

【ES】分布式集群
我們的集群現(xiàn)在是擁有一個(gè)索引的單節(jié)點(diǎn)集群。所有 3 個(gè)主分片都被分配在 node-1。
通過 elasticsearch-head 插件查看集群情況
【ES】分布式集群
可以看到,三個(gè)副本分片都沒有被分配到任何節(jié)點(diǎn)。在同一個(gè)節(jié)點(diǎn)上即保存原始數(shù)據(jù)又保存副本是沒有意義的,因?yàn)橐坏┦チ四莻€(gè)節(jié)點(diǎn),我們也將丟失該節(jié)點(diǎn)上的所有副本數(shù)據(jù)。

故障轉(zhuǎn)移

當(dāng)集群中只有一個(gè)節(jié)點(diǎn)在運(yùn)行時(shí),意味著會有一個(gè)單點(diǎn)故障問題——沒有冗余。幸運(yùn)的是,我們只需要再啟動一個(gè)節(jié)點(diǎn)即可防止數(shù)據(jù)丟失。當(dāng)你在同一臺機(jī)器上啟動了第二個(gè)節(jié)點(diǎn)時(shí),只要它和第一個(gè)節(jié)點(diǎn)有同樣的 cluster.name 配置,它就會自動發(fā)現(xiàn)集群并加入其中。但是在不同機(jī)器上啟動節(jié)點(diǎn)的時(shí)候,為了加入到統(tǒng)一集群,你需要配置一個(gè)可連接到的單播主機(jī)列表。之所以配置為使用單播發(fā)現(xiàn),以防止節(jié)點(diǎn)無意中加入集群。

如果啟動了兩個(gè)節(jié)點(diǎn),我們的集群將會擁有兩個(gè)節(jié)點(diǎn)的集群:所有主分片和副本分片都被分配。
node-1002配置如下:

# 集群名稱,節(jié)點(diǎn)之間要保持一致
cluster.name: my-elasticsearch
# 節(jié)點(diǎn)名稱,集群內(nèi)要唯一
node.name: node-1002
# 表示節(jié)點(diǎn)是否具有成為主節(jié)點(diǎn)的資格(此屬性的值為true,并不意味著這個(gè)節(jié)點(diǎn)就是主節(jié)點(diǎn))
node.master: true
# 表示節(jié)點(diǎn)是否存儲數(shù)據(jù)
node.data: true
# IP地址
network.host: localhost
# http端口
http.port: 1002
# tcp監(jiān)聽端口(節(jié)點(diǎn)間通信端口)
transport.tcp.port: 9302
# 該節(jié)點(diǎn)會與哪些候選地址進(jìn)行通信
discovery.seed_hosts: ["localhost:9301"]
# 集群內(nèi)可以被選為主節(jié)點(diǎn)的節(jié)點(diǎn)列表
#cluster.initial_master_nodes: ["node-1001", "node-1002", "node-1003"]
# 是否支持跨域,默認(rèn)為false(因?yàn)槲覀兘酉聛硪褂胑lasticsearch-head插件連接es服務(wù))
http.cors.enabled: true
# 當(dāng)設(shè)置允許跨域,默認(rèn)為*,表示支持所有域名,如果我們只是允許某些網(wǎng)站能訪問,那么可以使用正則表達(dá)式。比如只允許本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"

通過 elasticsearch-head 插件查看集群情況
【ES】分布式集群

水平擴(kuò)容

怎樣為我們的正在增長中的應(yīng)用程序按需擴(kuò)容呢?當(dāng)啟動了第三個(gè)節(jié)點(diǎn),我們的集群會擁有三個(gè)節(jié)點(diǎn)的集群:為了分散負(fù)載而對分片進(jìn)行重新分配。
node-1003配置如下:

# 集群名稱,節(jié)點(diǎn)之間要保持一致
cluster.name: my-elasticsearch
# 節(jié)點(diǎn)名稱,集群內(nèi)要唯一
node.name: node-1003
# 表示節(jié)點(diǎn)是否具有成為主節(jié)點(diǎn)的資格(此屬性的值為true,并不意味著這個(gè)節(jié)點(diǎn)就是主節(jié)點(diǎn))
node.master: true
# 表示節(jié)點(diǎn)是否存儲數(shù)據(jù)
node.data: true
# IP地址
network.host: localhost
# http端口
http.port: 1003
# tcp監(jiān)聽端口(節(jié)點(diǎn)間通信端口)
transport.tcp.port: 9303
# 該節(jié)點(diǎn)會與哪些候選地址進(jìn)行通信
discovery.seed_hosts: ["localhost:9301", "localhost:9302"]
# 集群內(nèi)可以被選為主節(jié)點(diǎn)的節(jié)點(diǎn)列表
# cluster.initial_master_nodes: ["node-1001", "node-1002", "node-1003"]
# 是否支持跨域,默認(rèn)為false(因?yàn)槲覀兘酉聛硪褂胑lasticsearch-head插件連接es服務(wù))
http.cors.enabled: true
# 當(dāng)設(shè)置允許跨域,默認(rèn)為*,表示支持所有域名,如果我們只是允許某些網(wǎng)站能訪問,那么可以使用正則表達(dá)式。比如只允許本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"

通過 elasticsearch-head 插件查看集群情況:
【ES】分布式集群
Node1 和 Node2 上各有一個(gè)分片被遷移到了新的 Node3 節(jié)點(diǎn),現(xiàn)在每個(gè)結(jié)點(diǎn)上都擁有2個(gè)分片,而不是之前的3個(gè)。這表示每個(gè)節(jié)點(diǎn)的硬件資源(CPU,RAM,I/O)將被更少的分片所共享,每個(gè)分片的性能將會得到提升。

分片是一個(gè)功能完善的搜索引擎,它擁有使用一個(gè)節(jié)點(diǎn)上所有資源的能力。我們這個(gè)擁有6個(gè)分片(3主3副)的索引可以擴(kuò)容到6個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)上存在一個(gè)分片,并且每個(gè)分片擁有所在節(jié)點(diǎn)的全部資源。

但是如果我們想要擴(kuò)容超過6個(gè)節(jié)點(diǎn)怎么辦?
主分片的數(shù)目在索引創(chuàng)建時(shí)就已經(jīng)確定了下來。實(shí)際上,這個(gè)數(shù)目定義了這個(gè)索引能夠存儲的最大數(shù)據(jù)量。(實(shí)際大小取決于你的數(shù)據(jù)、硬件和使用場景。)但是,讀操作和返回?cái)?shù)據(jù)可以同時(shí)被主分片或副本分片所處理,所以當(dāng)你擁有越多的副本分片時(shí),也將擁有越高的吞吐量。

在運(yùn)行中的集群上是可以動態(tài)調(diào)整副本分片數(shù)目的,我們可以按需伸縮群。讓我們把副本數(shù)從默認(rèn)的 1 增加到 2

{
	"number_of_replicas": 2
}

【ES】分布式集群
user索引現(xiàn)在擁有9個(gè)分片:3主6副。這意味著我們可以將集群擴(kuò)容到9個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)上一個(gè)分片。相比原來 3 個(gè)節(jié)點(diǎn)時(shí),集群搜索性能可以提升 3 倍
通過 elasticsearch-head 插件查看集群情況:
【ES】分布式集群

當(dāng)然,如果只是在相同節(jié)點(diǎn)數(shù)據(jù)的集群上增加更多的副本并不能提高性能,因?yàn)槊總€(gè)分片從節(jié)點(diǎn)上獲得的資源會變少。你需要增加更多的硬件資源來提升吞吐量。

但是更多的副本分片數(shù)提高了數(shù)據(jù)冗余量:按照上面節(jié)點(diǎn)配置,我們可以在失去 2 個(gè)節(jié)點(diǎn)的情況下不丟失任何數(shù)據(jù)。

應(yīng)對故障

我們關(guān)閉第一個(gè)節(jié)點(diǎn),這時(shí)集群的狀態(tài)為:關(guān)閉了一個(gè)節(jié)點(diǎn)后的集群。

我們關(guān)閉的節(jié)點(diǎn)是一個(gè)主節(jié)點(diǎn)。而集群必須擁有一個(gè)主節(jié)點(diǎn)來保證正常工作,所以發(fā)生的第一件事情就是選舉集群的主節(jié)點(diǎn):node-1002。在我們關(guān)閉 Node-1001 的同時(shí)也失去了主分片2,并且在缺失主分片的時(shí)候索引也不能正常工作。如果此時(shí)來檢查集群的狀況,我們看到的狀態(tài)將會為red:不是所有主分片都在正常工作。
幸運(yùn)的是,在其他節(jié)點(diǎn)上存在著這個(gè)主分片的完整副本,所以新的主節(jié)點(diǎn)立即將這些分片在node-1002和node-1003上對應(yīng)的副本分片提升為主分片,此時(shí)集群的狀態(tài)將會為yellow。這個(gè)提升主分片的過程是瞬間發(fā)生的,如同按下一個(gè)開關(guān)一般。
【ES】分布式集群
為什么我們集群狀態(tài)是 yellow 而不是 green 呢?
雖然我們擁有所有的三個(gè)主分片,但是同時(shí)設(shè)置了每個(gè)主分片需要對應(yīng) 2 份副本分片,而此時(shí)只存在一份副本分片。所以集群不能為 green 的狀態(tài)。

坑3:當(dāng)你關(guān)閉了兩個(gè)節(jié)點(diǎn)的時(shí)候,第三個(gè)節(jié)點(diǎn)是無法操作訪問的,這里涉及到另外一個(gè)知識點(diǎn):discovery.zen.minimum_master_nodes,感興趣的朋友可以再研究一下。

如果我們重新啟動node-1001,集群可以將缺失的副本分片再次進(jìn)行分配,那么集群的狀態(tài)也將恢復(fù)成之前的狀態(tài)。如果node-1001依然擁有著之前的分片,它將嘗試去重用它們,同時(shí)僅從主分片復(fù)制發(fā)生了修改的數(shù)據(jù)文件。和之前的集群相比,只是 master 節(jié)點(diǎn)切換了。

注意:重啟node-1001的之前添加配置:discovery.seed_hosts: [“l(fā)ocalhost:9302”, “l(fā)ocalhost:9303”],用來發(fā)現(xiàn)node-1002和node-1003節(jié)點(diǎn)
【ES】分布式集群

路由計(jì)算

當(dāng)索引一個(gè)文檔的時(shí)候,文檔會被存儲到一個(gè)主分片中。Elasticsearch 如何知道一個(gè)文檔應(yīng)該存放到哪個(gè)分片中呢?當(dāng)我們創(chuàng)建文檔時(shí),它如何決定這個(gè)文檔應(yīng)該被存放在分片 1 還是分片 2 中呢?首先這肯定不是隨機(jī)的,否則將來要獲取文檔的時(shí)候我們就不知道從何處尋找了。實(shí)際上,這個(gè)過程是根據(jù)下面這個(gè)公式?jīng)Q定的:
分片 = hash(routing) % 主分片數(shù)量
routing 是一個(gè)可變值,默認(rèn)是文檔的 _id,也可以設(shè)置成一個(gè)自定義值。routing 通過 hash 函數(shù)生成一個(gè)數(shù)字,然后這個(gè)數(shù)字再除以主分片的數(shù)量后得到余數(shù)。這個(gè)分布在 0 到 主分片數(shù)量 -1 之間的余數(shù),就是我們所尋求的文檔所在分片的位置。

這就解釋了為什么我們在創(chuàng)建索引的時(shí)候就確定好主分片的數(shù)量,并且永遠(yuǎn)不會改變這個(gè)數(shù)量:因?yàn)閿?shù)量變化了,那么之前路由的值會無效,文檔也再也找不到了。

所有的文檔API(get、index、delete、bulk、update以及mget)都接受一個(gè)叫做 routing 的路由參數(shù),通過這個(gè)參數(shù)我們可以自定義文檔到分片的映射。一個(gè)自定義的路由參數(shù)可以用來確保所有相關(guān)的文檔(例如:所有屬于同一個(gè)用戶的文檔)一一都被存儲到同一個(gè)分片中。文章來源地址http://www.zghlxwxcb.cn/news/detail-494415.html

到了這里,關(guān)于【ES】分布式集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 分布式計(jì)算----期末復(fù)習(xí)題(僅供參考)

    一.單選題,每個(gè)2分 1.Hadoop 之父 是下面的哪一位?(B) A. James Gosling ???? ??B.Doug Cutting ? ?C.Matei Zaharia ??D.Linus Benedict Torvalds 2.Hadoop中,用于 處理或者分析海量數(shù)據(jù) 的組件是哪一個(gè)?( ?B ??) A.HDFS ?? ?B.MapReduce ????C.Yarn ??D.以上選項(xiàng)都不是 3.HDFS中 存儲和管理元數(shù)據(jù)

    2024年02月10日
    瀏覽(32)
  • Hadoop是一個(gè)開源的分布式處理系統(tǒng),主要用于處理和存儲大量數(shù)據(jù)

    Hadoop是一個(gè)開源的分布式處理系統(tǒng),主要用于處理和存儲大量數(shù)據(jù)

    Hadoop是一個(gè)開源的分布式處理系統(tǒng),主要用于處理和存儲大量數(shù)據(jù)。它是由Apache軟件基金會開發(fā)的,現(xiàn)在已經(jīng)成為大數(shù)據(jù)領(lǐng)域中廣泛使用的技術(shù)之一。 Hadoop架構(gòu) Hadoop的架構(gòu)包括以下幾個(gè)主要組件: Hadoop Distributed File System (HDFS) : HDFS是Hadoop的核心組件之一,它是一個(gè)分布式文

    2024年02月04日
    瀏覽(24)
  • ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。??

    ES 的分布式架構(gòu)原理能說一下么(ES 是如何實(shí)現(xiàn)分布式的?。??

    目錄 一、面試官心理分析 二、面試題剖析 ????????在搜索這塊,lucene 是最流行的搜索庫。幾年前業(yè)內(nèi)一般都問,你了解 lucene 嗎?你知道倒排索引的原理嗎?現(xiàn)在早已經(jīng) out 了,因?yàn)楝F(xiàn)在很多項(xiàng)目都是直接用基于 lucene 的分布式搜索引 擎—— ElasticSearch ,簡稱為 ES 。 ?

    2024年03月15日
    瀏覽(24)
  • 分布式鏈路追蹤專欄,分布式鏈路追蹤:Skywalking集群管理設(shè)計(jì)

    分布式鏈路追蹤專欄,分布式鏈路追蹤:Skywalking集群管理設(shè)計(jì)

    SkyWalking 是一個(gè)開源 APM 系統(tǒng),包括針對 Cloud Native 體系結(jié)構(gòu)中的分布式系統(tǒng)的監(jiān)視,跟蹤,診斷功能。核心功能如下: 服務(wù)、服務(wù)實(shí)例、端點(diǎn)指標(biāo)分析; 根本原因分析,在運(yùn)行時(shí)分析代碼; 服務(wù)拓?fù)鋱D分析; 服務(wù),服務(wù)實(shí)例和端點(diǎn)依賴性分析; 檢測到慢速服務(wù)和端點(diǎn); 性

    2024年02月01日
    瀏覽(50)
  • 分布式、集群、微服務(wù)

    分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來提升效率的;而集群則是通過提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。 分布式是指將不同的業(yè)務(wù)分布在不同的地方。 集群指的是將幾臺服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。 分布式中的每一個(gè)節(jié)點(diǎn),都可以做集群。而集群并不一定就是

    2024年02月08日
    瀏覽(89)
  • 分布式與集群區(qū)別

    1、提供服務(wù)是否相同 分布式:不同的機(jī)器上部署的是不同的服務(wù)模塊,對外提供不同的服務(wù) 集群:不同機(jī)器上部署的是同樣的模塊,對外提供同樣的服務(wù) 2、目的 分布式:分解任務(wù),用來應(yīng)對高并發(fā)。 集群:用來容錯(cuò),可靠性,高可用。 3、是否依賴其他模塊 分布式:各節(jié)

    2024年04月22日
    瀏覽(31)
  • 搭建HBase分布式集群

    0. Prerequisite There are 3 VMs - hadoop3/hadoop4/hadoop5 for fully-distributed HBase cluster, the setup plan looks like: hadoop3 hadoop4 hadoop5 Hadoop hdfs NameNode:8020 DateNode:50010 JobHistoryServer:19888 DataNode:50010 SecondaryNameNode:50090 DateNode:50010 Hadoop yarn NodeManger:8040 ResourceMananger:8088 NodeManger:8040 NodeManger:8040 Zookeeper Quor

    2024年02月08日
    瀏覽(24)
  • 部署SeaTunnel分布式集群

    深入理解SeaTunnel:易用、高性能、支持實(shí)時(shí)流式和離線批處理的海量數(shù)據(jù)集成平臺 SeaTunnel Engine 是 SeaTunnel 的默認(rèn)引擎。SeaTunnel的安裝包中已經(jīng)包含了SeaTunnel Engine的所有內(nèi)容。 在/etc/profile.d/seatunnel.sh中配置環(huán)境變量 SeaTunnel Engine 支持兩種設(shè)置 jvm 選項(xiàng)的方式。 將 JVM 選項(xiàng)添加

    2024年02月09日
    瀏覽(26)
  • 單機(jī),集群和分布式概念

    1.受限于硬件資源,單機(jī)所能承受的用戶并發(fā)量太少; 2.一個(gè)系統(tǒng)有多個(gè)模塊,任意模塊的修改都會導(dǎo)致整個(gè)項(xiàng)目代碼重新編譯、部署; 3.系統(tǒng)中,有些模塊是CPU密集型,有些模塊是I/O密集型,造成各個(gè)模塊對于硬件資源的需求是不一樣的。 負(fù)載均衡??????? 集群的優(yōu)點(diǎn)

    2024年02月14日
    瀏覽(18)
  • Hadoop分布式集群安裝

    ????????上一篇大數(shù)據(jù)文章講解了在單機(jī)上搭建Hadoop-Yarn 偽分布式集群的安裝方法,方便大家學(xué)習(xí),真實(shí)環(huán)境不可能只有一臺機(jī)器,肯定是多節(jié)點(diǎn)的集群,大單位還會建設(shè)很多Hadoop集群,比如各個(gè)大部門有自己的集群,或者按熱、溫、冷來劃分建立集群,反正都是很多臺服

    2024年01月19日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包