摘要:是當(dāng)前最流行的大數(shù)據(jù)集分析平臺(tái)之一,對(duì)于日志聚合商業(yè)智能以及機(jī)器學(xué)習(xí)等各類(lèi)用例而言,都是一個(gè)很有用的工具。是在大型非結(jié)構(gòu)化數(shù)據(jù)集上運(yùn)行分析的最佳方法之一,在從日志聚合機(jī)器學(xué)習(xí)到商業(yè)智能等許多領(lǐng)域中皆被廣泛使用。
Elasticsearch是當(dāng)前最流行的大數(shù)據(jù)集分析平臺(tái)之一,對(duì)于日志聚合、商業(yè)智能以及機(jī)器學(xué)習(xí)等各類(lèi)用例而言,Elasticsearch都是一個(gè)很有用的工具。Elasticsearch基于 REST的簡(jiǎn)單的API,使得創(chuàng)建索引、添加數(shù)據(jù)和進(jìn)行復(fù)雜的查詢(xún)變得非常簡(jiǎn)單,這也是它大受歡迎的一大原因。但是,在你開(kāi)始構(gòu)建數(shù)據(jù)集和運(yùn)行查詢(xún)之前,您需要設(shè)置一個(gè)Elasticsearch集群,這可能會(huì)有點(diǎn)難。現(xiàn)在我們來(lái)看看Rancher Catalog是如何讓配置一個(gè)可擴(kuò)展、高可用的Elasticsearch集群變?nèi)菀椎摹?/p>
假設(shè)你已經(jīng)有一個(gè)運(yùn)行中的Rancher集群,那么讓Elasticsearch在你的集群上運(yùn)行起來(lái)非常簡(jiǎn)單 。只要通過(guò)頂部菜單打開(kāi) Catalog,然后搜索Elasticsearch。Elasticsearch條目有兩個(gè)版本,我們假設(shè)你使用的是2.x,這是最新的穩(wěn)定版本。要從集群?jiǎn)?dòng)stack,請(qǐng)選擇查看詳細(xì)信息(View Detail),然后在后續(xù)屏幕中選擇stack名稱(chēng)( Stack Name),集群名稱(chēng)(Cluster Name),然后選擇啟動(dòng)。
這個(gè)stack會(huì)啟動(dòng)以下服務(wù):kopf、client(s)、datanode(s) 和master(s)。kopf容器提供了web界面,用來(lái)管理你的elasticsearch 集群。Datanodes儲(chǔ)存實(shí)際的索引。主節(jié)點(diǎn)運(yùn)行集群管理任務(wù),客戶(hù)端節(jié)點(diǎn)發(fā)起和協(xié)調(diào)你的搜索和其他操作。開(kāi)始時(shí),你的Elasticsearch集群各種類(lèi)型的容器都只有一個(gè)(master、client、datanodes有兩個(gè)輔助容器)。但是,您可以根據(jù)查詢(xún)負(fù)載和索引的大小擴(kuò)展每個(gè)組件。請(qǐng)注意,你需要不同的物理主機(jī)才能使每個(gè)datanode容器正常工作。因此,您可能需要注冊(cè)更多Rancher計(jì)算節(jié)點(diǎn)。
當(dāng)所有容器都處于active狀態(tài)時(shí),您就可以到運(yùn)行著kopf容器的主機(jī)中,啟動(dòng)kopf界面。點(diǎn)擊 nodes選項(xiàng)卡,就會(huì)看到我之前提過(guò)的各種組件。如你所見(jiàn),為了為我的索引提供冗余存儲(chǔ),我啟動(dòng)了第二個(gè)數(shù)據(jù)節(jié)點(diǎn)。我們將很快看到,當(dāng)創(chuàng)建索引時(shí),我們可以控制數(shù)據(jù)片的數(shù)量和每個(gè)片的備份。這樣不僅可以提供冗余,還可以提升查詢(xún)處理的速度。
在kopf的頂部的菜單中,選擇更多(more),然后選擇創(chuàng)建索引(create index)。在之后的頁(yè)面中,你會(huì)被要求輸入索引名稱(chēng)(Index Name),分片數(shù)(Number of Shards)和副本數(shù)(Number of replicas)。默認(rèn)值為5個(gè)分片和1個(gè)副本。為索引設(shè)置的分片數(shù)和副本數(shù)高度依賴(lài)于數(shù)據(jù)集和查詢(xún)模型。shard數(shù)有助于將數(shù)據(jù)擴(kuò)展到多個(gè)節(jié)點(diǎn),并且并行處理查詢(xún)。如果你只有一個(gè)datanote,多分片可能看不到很多好處。此外,如果你期望數(shù)據(jù)快速增長(zhǎng),你可能需要更多分片,以便于你稍后添加節(jié)點(diǎn)并將數(shù)據(jù)移動(dòng)到這些分片上。另外要注意的一點(diǎn)是,Elasticsearch建議最大的堆大小為32GB,所以最大的分片大小應(yīng)該約為該大小,以便它可以盡可能地保存在內(nèi)存中。
另一方面,副本與數(shù)據(jù)大小不太相關(guān),它與冗余和性能的關(guān)系更緊密。所有對(duì)索引的查詢(xún)都需要查看每個(gè)分片的一個(gè)副本,如果一個(gè)分片有多個(gè)副本,當(dāng)一個(gè)節(jié)點(diǎn)不可用時(shí),數(shù)據(jù)也依然可用。此外,使用多個(gè)副本,對(duì)指定分片的查詢(xún)負(fù)載會(huì)分散在多個(gè)節(jié)點(diǎn)間。多個(gè)副本只有在集群中具有多個(gè)數(shù)據(jù)容器或節(jié)點(diǎn)時(shí)才有意義,而且在擴(kuò)展越來(lái)越大的集群時(shí)會(huì)變得更加重要。
舉例來(lái)說(shuō),我們來(lái)定義一個(gè)叫movies的索引,給它設(shè)置2個(gè)分片和2個(gè)副本。現(xiàn)在從頂部菜單中選擇Rest選項(xiàng)卡,以便我們向索引中添加一些文檔并測(cè)試一些查詢(xún)。Elasticsearch是無(wú)模式的,所以我們可以向索引中添加任意形式的數(shù)據(jù),只要它是合法的JSON格式就行。將path字段更新為 /movies/movie/1。path的格式為 /INDEX_NAME/TYPE/ID,movies是我們剛剛創(chuàng)建的索引,movie是我們給即將提交的文檔類(lèi)型的名稱(chēng),id是這個(gè)索引中文檔的唯一ID。ID是可選的,如果你在path中省略了,那么你的文檔會(huì)被創(chuàng)建一個(gè)隨機(jī)的ID。添加了path之后,選擇POST方法,在底部的文本字段中輸入你的JSON文檔,點(diǎn)擊發(fā)送。這樣將把這個(gè)文檔添加到索引中,并且向你發(fā)送一個(gè)確認(rèn)消息。
在添加了幾個(gè)movie到索引中之后,我們就可以用同樣的界面從索引中搜索和聚合數(shù)據(jù)了。將path字段更新為 /movies/movie/_search。path的格式為 /INDEX_NAME/TYPE/_search,INDEX_NAME,TYPE都是可選的。如果省略type,則會(huì)搜索所有類(lèi)型,如果省略索引名,則會(huì)搜索所有索引。
Elasticsearch支持多種不同類(lèi)型的查詢(xún),我們?cè)谶@里只介紹幾種常見(jiàn)的類(lèi)型。第一種類(lèi)型是自由文本查詢(xún),查詢(xún)字符串參數(shù)允許使用Elasticsearch Query DS進(jìn)行相當(dāng)復(fù)雜的查詢(xún)。當(dāng)然我可只輸入簡(jiǎn)單的字符串進(jìn)行匹配,這將匹配文檔任何字段中指定的詞。
{ "query": { "query_string": { "query": "Apocalypse" } } }
例如,上面的查詢(xún)會(huì)返回下面的結(jié)果。結(jié)果中包含處理查詢(xún)花費(fèi)的時(shí)間、搜索的分片數(shù)、結(jié)果總數(shù)以及每個(gè)結(jié)果的詳細(xì)信息。
{ "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" ] } } ....
除了查詢(xún)文本之外,你還可以指定一個(gè)字段或一些字段的估計(jì)值,從而將查詢(xún)限制為搜索文檔的一個(gè)子集。比如,下面的查詢(xún)會(huì)返回與之前一樣的結(jié)果,但是必須查看文檔的一個(gè)子集,且更大的數(shù)據(jù)集會(huì)有更好的性能。這里還有很多其他操作。
{ "query": { "query_string": { "query": "Apocalypse" "fields": ["title"] } } }
我們可以把查詢(xún)字符串包裹在filtered對(duì)象中,這樣會(huì)對(duì)查詢(xún)的結(jié)果進(jìn)行過(guò)濾。這允許我們對(duì)初始數(shù)據(jù)集保持任意格式的查詢(xún),但隨后過(guò)濾出我們查找的特定數(shù)據(jù)。
{ "query": { "filtered": { "query_string": { "query": "Apocalypse" "fields": ["title"] } "filter": { "term": { "year": 1979 } } } } }
最后,聚合可能是你會(huì)運(yùn)行的另外一種形式的查詢(xún),它對(duì)于計(jì)算有關(guān)數(shù)據(jù)的統(tǒng)計(jì)信息很有用。下面展示了這些類(lèi)型的聚合的兩個(gè)例子。第一個(gè)將返回每個(gè)導(dǎo)演指揮的電影的數(shù)量,第二個(gè)將返回我們的數(shù)據(jù)集中所有電影的平均評(píng)分。
{ "aggs": { "group_by_director": { "terms": { "field": "director" } } } } { "aggs" : { "avg_rating" : { "avg" : { "field" : "rating" } } } }
Elasticsearch是在大型非結(jié)構(gòu)化數(shù)據(jù)集上運(yùn)行分析的最佳方法之一,在從日志聚合、機(jī)器學(xué)習(xí)到商業(yè)智能等許多領(lǐng)域中皆被廣泛使用。本文中,我們看到了使用Catalog在Rancher上設(shè)置一個(gè)功能齊全的Elasticsearch集群是多么簡(jiǎn)單。此外,我們還快速了解了Elasticsearch使用REST API的強(qiáng)大功能。只要你有Elasticsearch可用并且運(yùn)行了起來(lái),你就可以使用它作為許多不同的用例與許多可用的可視化和聚合框架的主機(jī),比如實(shí)時(shí)可視化的Kibana或業(yè)務(wù)分析的Pentaho框架。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26919.html
摘要:在中默認(rèn)開(kāi)啟端口用于偵聽(tīng)發(fā)送過(guò)來(lái)的日志報(bào)文。至此,在中如何部署一套完整系統(tǒng)已經(jīng)介紹完了,下面我將介紹如何將容器日志發(fā)送到中。下面我將介紹如何收集容器日志。目前日志顯的雜亂無(wú)序。,現(xiàn)在我們?cè)偃ゲ榭窗l(fā)現(xiàn)我們的容器日志已經(jīng)展示在這里了。 相信大家對(duì)于容器和 docker 這個(gè)概念并不陌生,很高興的是 docker 為我們提供了多種log-driver。 showImg(https://se...
摘要:在這篇文章中,我們將使用來(lái)部署,并將它用于追蹤上的和。我們將使用創(chuàng)建一個(gè)索引模板,來(lái)調(diào)整相關(guān)配置。這樣,一個(gè)配置正確的已經(jīng)準(zhǔn)備好被使用了后續(xù)我們還將會(huì)對(duì)它進(jìn)行一些配置。雖然和已經(jīng)部署好了,我們還是需要對(duì)進(jìn)行一些操作。 介紹 Elasticsearch是ELK(Elasticsearch/Logstash/Kibana)的基石。在這篇文章中,我們將使用Rancher Catalog來(lái)部署...
摘要:本文就探討一下,平臺(tái)內(nèi)如何做容器日志收集。當(dāng)然完整的日志體系中,并不僅僅是采集,還需要有日志存儲(chǔ)和展現(xiàn)。是可以理解微的助手,它可以識(shí)別容器內(nèi)的日志卷文件,通知進(jìn)行采集。 引言 一個(gè)完整的容器平臺(tái),容器日志都是很重要的一環(huán)。尤其在微服務(wù)架構(gòu)大行其道狀況下,程序的訪問(wèn)監(jiān)控健康狀態(tài)很多都依賴(lài)日志信息的收集,由于Docker的存在,讓容器平臺(tái)中的日志收集和傳統(tǒng)方式很多不一樣,日志的輸出和采集點(diǎn)...
閱讀 2684·2021-11-16 11:53
閱讀 2749·2021-07-26 23:38
閱讀 2080·2019-08-30 15:55
閱讀 1760·2019-08-30 13:21
閱讀 3680·2019-08-29 17:26
閱讀 3314·2019-08-29 13:20
閱讀 884·2019-08-29 12:20
閱讀 3200·2019-08-26 10:21