首頁 > 軟體

Elasticsearch 在清博大資料的應用與實踐

2021-03-26 22:10:59

本篇內容是清博大資料技術副總裁王歡帶來的基於Elasticsearch技術的應用與實踐分享。分享人:清博大資料技術副總裁王歡

關於Elasticsearch在清博的應用和實踐,本文將通過四個部分展開介紹:

關於清博典型業務場景痛點與訴求阿里雲Elasticsearch實踐與收益一、關於清博大資料

清博資料成立於2014年,是一家專注於內容資料領域,是基於網路公開資料,依託自然語言處理、知識圖譜、事理圖譜等AI技術,挖掘有價值的資料以及關係,為政務部門、企業、媒體和高校的網路空間資料治理,提供一站式解決方案的公司。

清博大資料的主要業務佈局有:

清博指數,已經成為業內知名的新媒體賬號評估服務體系;清博輿情,是業內主流輿情SaaS服務平臺,為數十萬B端網路品牌跟蹤管理提供一站式服務;清博融媒,助力政企、校園的融媒體建設;產業資料,基於資料和技術的積累,在汽車大資料和環保大資料等產業資料領域也有佈局。二、典型業務場景

上文所提到的業務方向中都有Elasticsearch的參與和支援。下面介紹幾個典型的應用場景。

清博輿情

下圖展示的是清博輿情中常見的分析模組。

清博輿情利用NLP技術給常見的每條新聞及評論打上7個情緒標籤,然後基於標籤分析每天的情緒走勢和情緒分佈情況。這個應用可以理解為,針對某個事件,大眾在不同情感表達下的聲量大小。

另外,我們也對事件的釋出和媒體敏感資訊報道進行渠道統計,統計後就可以直觀的看到一個事件的重要或敏感的傳播節點,這就為業務的決策者提供了非常直觀的決策參考。除此之外,系統還為使用者提供發文類型、提及地區、熱詞分析等十多個常用的統計分析模組。

以上所描述的統計分析,都是基於Elasticsearch強大的聚合統計能力,包括巢狀的統計能力實現的。由於清博大資料提供的是線上的SaaS服務,在同個頁面會迸發請求查詢或聚合多個介面等需求,這就對Elasticsearch的聚合統計效能和記憶體使用率,都提出了更高的要求。

多維度的檢索

多維度檢索在清博大資料也是比較常見的業務場景。在輿情高階檢索模組,清博檢索提供了基於時間、釋出平臺、情感、媒體類別、釋出地區等十多個維度的複合檢索。同時還提供了基於term和match price的精確或模糊檢索的複雜查詢方式。

不同於日誌檢索場景,清博的多維度檢索業務,需要權衡召回率和準確率,需要對標題跟正文設定不同的打分策略。比如給標題設定更高的權重,給正文設定相對較低的權重。另外,產品還能對包括阿拉伯語、日語、韓語、德語、法語等多國語言進行文字檢索,這就涉及到了多語種的分詞與檢索召回。

賬號畫像

下圖是清博指數平臺一個微信公眾號的畫像頁面,展示了公眾號系列資料,包括閱讀統計、閱讀點贊、在看、發文趨勢、釋出習慣等資料指標的統計模組。通過這些模組,使用者可以直觀的瞭解一個公眾號的釋出情況、文章傳播情況等,不僅給運營者提供了全方位、可參考的資料,也給廣告投放的使用者提供客觀投放參考。

三、痛點與訴求

上文列舉的不同業務場景都離不開Elasticsearch強大的查詢和聚合能力,那麼實現這樣的功能有哪些痛點與訴求呢?

從上面業務場景列舉可以看出,清博大資料的業務基本上都是基於文字檢索,那麼它具有的特點包括:

需要支援多種語言檢索;由於是線上的SaaS系統,需要實現亞秒級響應;需要支援上百個索引欄位;需要滿足聚合查詢多和迭代頻繁;基於以上的業務特點就要求Elasticsearch具備高效能、平衡檢索的召回率和準確率,並具有動態伸縮的能力。

基於以上的業務特點和服務要求,對清博大資料來講,業務痛點可以分為三個方面:

1、成本

單篇文件不同於日誌資料,佔用索引空間大,所需的SSD儲存昂貴;

2、運維

當業務資料不斷增加,需要頻繁擴節點;同時,由於是線上SaaS業務,所以需要實現亞秒級響應速度;並且在節點升級、增加記憶體等線上升級時,不停止服務。

3、相容性

實現Elasticsearch叢集遷移、本地化部署,業務程式碼無感知適配;雲端備份索引可以相容開源的Elasticsearch。

針對以上的業務痛點,清博大資料對雲端Elasticsearch也提出了三點訴求:

1、成本

平滑擴縮容,索引支援冷熱分離,熱資料才放到SSD儲存,從而降低儲存成本;

2、運維

需要有簡單的運維工具支援一鍵擴縮容和節點升級等能力;需要支援豐富的運維指標,在達到一定閾值時,可以有不同類型的報警通知;需要支援平滑升級不對業務產生影響;

3、相容性

阿里雲Elasticsearch 100%相容開源生態,並支援自定義的分詞器,實現熱更新分詞詞典,方便備份與恢復。雲上備份與索引,可以快速在開源Elasticsearch上恢復或拉起服務。

四、雲上實踐與收益

清博大資料在遷移之前是基於Apache Solr自建的搜尋叢集,為了提升搜尋效能和鞏固叢集穩定性,創建了很多小的Solr叢集。在上游資料分析之後,通過一套路由機制寫入到不同的Solr叢集,在查詢時通過同一套機制,自動選擇對應的叢集。在不同的叢集中查詢不同的資料,可以分散單個叢集壓力,如果有小叢集異常只會影響部分業務。

但是太多分散且小的叢集也會出現很多問題,比如增加故障的概率、缺少統一運維管理平臺、運維管理成本過高、無法自動擴充Shard、需要手動增加節點擴容等等。

相比之下,阿里雲Elasticsearch提供智慧的、統一的運維平臺,不僅可以多維度地監控告警,也能及時發現叢集問題,而且阿里雲ES專家的支援也減少了大量的運維成本。

阿里雲ES自動Shard,提升系統性能,提高了系統的檢索效能;阿里雲ES節點的伸縮能力,可以靈活應對業務逐步增加,節省大量一次性投入的成本。

在遷移過程中,清博大資料同步升級了資料架構,整個平臺是分層的資料模式。最底層是資料接入層,包括上述提到的各平臺社交文字資料。所有的資料來源首先會推送到Kafka叢集,通過訊息佇列對各個業務模組進行檢索。

再往上一層是資料處理和儲存層。在儲存層,像新聞標題、釋出時間、原始URL等資訊儲存到HBASE。一些不需要檢索內容的映象資料會存到OSS上進行長期儲存,並把OSS的路徑存到HBASE,方便後面的檢查。

在資料處理這一層,使用 Flink 實時流處理引擎,通過RPC的方式實時呼叫NLP相關的演算法服務,為每一條文字內容打上情感屬性、情緒分類、新聞類型和地域等標籤,方便下游業務使用。

再上一層是整個ES的基礎設施,包括ES叢集和智慧閘道器兩層服務。在ES叢集層,根據業務特點把近兩年的資料放到冷資料叢集,使用價格相對較低的高效雲盤,把近三個月的資料放到熱資料叢集,使用SSD盤進行冷熱叢集分離,同時根據不同平臺大小對索引進行拆分,分為微信、微博、短視訊等等索引。

為了提高ES的安全性和訪問的可控性,清博大資料開發了智慧閘道器服務,遮蔽了直連ES的方式。在智慧閘道器層,有很多業務都要呼叫ES資料,為了防止單個業務佔用過多資源,影響到其他業務使用,閘道器可以為每個業務分配各自的QPS並設定優先順序。一旦叢集出現問題,可以對低優先順序的業務進行熔斷限流,以保證高優先順序的業務。

由於在ES的資料層把索引按照來源進行拆分,資料被分散到多個叢集中,這會給查詢帶來一定的麻煩。為了方便前端業務的呼叫,閘道器路由所有模組可以根據業務端查詢的資料類型,自動路由到對應的索引,同時閘道器層也會對業務端查詢進行優化,比如根據時間段選擇對應索引,而不是掃描全部索引。

最上面一層是業務接入層,包括上文提到的輿情業務、指數業務、融媒業務等等。

基於阿里雲ES打造的統一資料平臺,也可以看作是一個分層架構,如下圖。

最底層文件寫入ES索引前,會先進入路由層。路由服務會根據文件的來源、釋出時間、機型狀態等,選擇對應的叢集以及索引,比如自動選擇對應平臺或者是對應索引所在的機器。

對日增資料量比較少的平臺,會按照周或月進行索引拆分。對日增資料量很大的平臺,路由會按天創建索引,這樣就避免單個索引過大、資料過於傾斜而影響整個叢集效能的問題,使每個索引的大小保持基本相同。

再向上一層是多個ES叢集,包括不同平臺的資料叢集和冷熱資料叢集。前面一層經過路由策略之後,最終資料會分散到對應叢集的對應索引中。為了方便查詢,通過開發的Proxy,對使用者特定的索引查詢、多索引查詢和聚合查詢,甚至跨叢集查詢等,可以對資料進行查詢集合,做到對業務端底層的索引細節遮蔽、業務端無感知、降低業務端呼叫成本,同時也方便底層的迭代升級。

基於以上的架構,在阿里雲的ES資料平臺提供近三個月超過100億的熱資料,在近三個月的索引佔用空間超過60TB,日增網路公開內容資料超過1.2億,單篇文件搜尋欄位超過200。

在這麼大資料量的情況下,頻繁變動升級會帶來一些問題。值得一提的是,利用阿里雲ES診斷功能,可以很方便地發現ES叢集潛在的問題,也為叢集的運維方向提供診斷經營。

在阿里雲ES各種功能的加持下,清博大資料平臺的穩定性較之以前提升了60%,整個運維時間減少了80%。正是由於阿里雲Elasticsearch平臺的各種能力,讓團隊可以把更多的精力放到產品開發和迭代上,比如基於平臺能力快速開發了輕薄融媒平臺,為清博融媒平臺提供內容檢索服務。

在開發的政府補貼類應用中提供政策搜尋服務,為後面的推薦演算法提供出色的結果,也為年終公眾號運營畫像類應用提供相關統計服務。除此之外,基於平臺的能力還能提供更多的產品形態。

本文為阿里雲原創內容,未經允許不得轉載。


IT145.com E-mail:sddin#qq.com