您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何分析Apache Pulsar的分層存儲,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
在一些流數據用例場景中,用戶希望將數據長時間存儲在流中。雖然 Apache Pulsar 對 topic backlog 的大小沒有限制,但將所有數據存儲在 Pulsar 中較長時間,存儲成本比較大。
下面介紹了 Apache Pulsar 的分層存儲特性(在 2.1 及之后的版本可用),分層存儲支持在不影響終端用戶的條件下,將較舊的數據移動到長期存儲中。
在推薦服務中,開發者不希望限制 backlog 的大小。以音樂服務為例,終端用戶每聽一首歌,就向 topic 中添加一條消息。使用這一 topic 訓練推薦算法,根據終端用戶聽過的音樂推薦用戶可能喜歡的音樂。然后,將計算結果推薦給用戶,再循環這個過程。
推薦算法并非一成不變。音樂服務的數據科學家一直在不斷優化推薦算法,以更好地預測用戶喜歡的音樂,從而提高用戶對推薦服務的滿意度和參與度。
但是,如果每次修改算法時,都只運行修改時間點之后的用戶數據,不僅預測的準確度會受到影響,判斷算法的修改效果也會需要一段較長的時間。為了解決這一問題,算法需要盡可能多地運行用戶歷史數據。
Pulsar 允許用戶存儲任意大小的 topic backlog。當集群將要耗盡空間時,用戶只需添加新的存儲節點,系統將會自動重新平衡數據。但是,這樣的操作運行一段時間后,運維成本十分昂貴。
Pulsar 通過提供分層存儲(Apache Pulsar 2.1 起新增的特性)減少了成本/大小的損失。分層存儲為用戶提供大小不受限制的 backlog,且無需添加存儲節點;卸載較舊的 topic 數據到長期存儲中,長期存儲的成本比在 Pulsar 集群中存儲的成本低一個數量級。對于終端用戶來說,消費存儲在 Pulsar 集群或分層存儲中的 topic 數據沒有明顯差別。位于 Pulsar 集群和分層存儲中的 topic 生產和消費消息的方式也完全相同。
Pulsar 通過分片架構實現了分層存儲。Pulsar topic 的消息日志由一系列分片組成。序列中的最后一個分片是 Pulsar 當前寫入的分片。當前序列之前的所有分片都已封裝,也就是說,這些分片中的數據不可變。由于數據不可變,因此可以輕易地將數據復制到另一個存儲系統,而不必擔心一致性的問題。復制完成后,可以立即更新消息日志元數據中的數據指針,并且可以刪除 Pulsar 在 Apache BookKeeper 中存儲的數據副本。
Pulsar 目前支持通過 Amazon S3、GCS(Google Cloud Storage)、Filesystem 進行長期存儲。要使用 S3 進行分層存儲,管理員需要先在 S3 中創建一個存儲桶(bucket);然后,用存儲桶和創建存儲桶的區域配置 broker。
managedLedgerOffloadDriver=S3s3ManagedLedgerOffloadRegion=eu-west-3s3ManagedLedgerOffloadBucket=pulsar-topic-offload
用戶不直接在 Pulsar 中配置身份驗證。Pulsar 使用的 `DefaultAWSCredentialsProviderChain` 可以在多個位置查找驗證信息。
配置驗證信息最簡單的方式是在 pulsar-env.sh 中設置環境變量。
關于配置身份驗證方法的更多信息,參閱分層存儲文檔:
http://pulsar.apache.org/docs/en/concepts-tiered-storage/
配置好所有 broker 后,就可以開始使用分層存儲了。可以配置分層存儲的數據卸載為自動運行,也可以手動觸發。
管理員可以為命名空間設置大小閾值策略。配置大小閾值策略后,如果命名空間中的任一 topic 在 Pulsar 集群上的數據大小超過了閾值,topic 就會卸載分片到長期存儲中,直到 Pulsar 集群上的數據大小在閾值之內。
例如,當 Pulsar 集群上的數據大小超過 1 GB 時,指定命名空間中的 topic 卸載分片,可以使用以下命令:
pulsar-admin namespaces set-offload-threshold --size 1G my-tenant/my-namespace
當命名空間中的任一 topic 超過閾值時,topic 將會移動數據至長期存儲,釋放 Pulsar 集群上的存儲空間。
除了配置自動卸載數據外,還可以通過 REST 接口或命令行界面在單個 topic 上手動觸發卸載操作。要通過命令行界面觸發,用戶必須指定在 Pulsar 集群上為 topic 保留的最大數據量。如果 Pulsar 集群上的 topic 數據大小超過了設置的閾值,則將此 topic 上的分片移動到長期存儲中,直到 Pulsar 集群上的數據大小在閾值之內。移動數據時,先移動較舊的分片。
pulsar-admin topics offload --size-threshold 10M my-tenant/my-namespace/topic1
關于如何分析Apache Pulsar的分層存儲就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。