您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么使用GCS offloader 卸載存儲在 BookKeeper 中的數據,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
對于大量不需要快速訪問的數據,建議你使用 Apache Pulsar 的內置功能——分層存儲。它也是 Pulsar 分片架構的原生優勢。
通過分層存儲,你可以從 Apache BookKeeper 卸載數據到可擴展、無限的廉價云原生存儲(例如 Google Cloud Storage、AWS S3)或文件系統,構建高性能的消息集群,并降低運維成本。
Google Cloud Storage (GCS) offloader 是 StreamNative Hub 上托管的一個 Pulsar 插件。
介紹如何通過 GCS offloader 將存儲在 BookKeeper 中的數據卸載至 GCS。
請按照以下步驟安裝 GCS offloader。
Apache jclouds:2.2.0 或更高版本
???? 步 驟
1. 選擇以下任一方式下載 Pulsar 壓縮包:
從 Apache mirror 下載:
https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
從 Pulsar 下載頁面下載
https://pulsar.apache.org/download
通過 wget 命令下載
https://www.gnu.org/software/wget
wget https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
2. 下載并解壓 Pulsar offloaders 安裝包。
wget https://downloads.apache.org/pulsar/pulsar-2.5.1/apache-pulsar-offloaders-2.5.1-bin.tar.gz
tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
注意:
在裸機集群中運行 Pulsar 時,需要保證每個 broker 所在的 Pulsar 目錄中,都有 `offloaders` 解壓縮后的安裝文件。
在 Docker 中運行 Pulsar 或使用 Docker image(例如 K8S、DCOS)部署 Pulsar 時,可以使用 `apachepulsar/pulsar-all` image 而不使用 `apachepulsar/pulsar` image。`apachepulsar/pulsar-all` image 已經捆綁了分層存儲 offloaders。
3. 在本地 Pulsar 目錄中創建 offloader 文件夾,將解壓后的 Pulsar offloaders 文件復制到此處。
mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
ls offloaders
???? 輸出
如下輸出所示,Pulsar 通過 Apache jclouds 支持 GCS 和 AWS S3 。
tiered-storage-file-system-2.5.1.nar tiered-storage-jcloud-2.5.1.nar
以下內容為在 Pulsar 中使用 GCS offloader 的詳細步驟。
第 1 步:配置 GCS offloader driver
在使用 GCS offloader 之前,需要為 GCS offloader driver 配置一些屬性。更多關于如何配置 GCS offloader driver 屬性的信息,可以參閱:
https://hub.streamnative.io/offloaders/gcs/2.5.1/#configuration
本示例假設已在 `standalone.conf` 中進行了如下配置,并以單機模式運行 Pulsar。
managedLedgerOffloadDriver=google-cloud-storagegcsManagedLedgerOffloadBucket=pulsar-topic-offload-1gcsManagedLedgerOffloadRegion=europe-west3gcsManagedLedgerOffloadServiceAccountKeyFile=/Users/user-name/Downloads/affable-ray-226821-6251d04987e9.jsonoffloadersDirectory=offloadersmanagedLedgerMinLedgerRolloverTimeMinutes=2 managedLedgerMaxEntriesPerLedger=5000
------
第 2 步:創建 GCS 存儲分區
1. 進入 Google Cloud 控制臺(https://console.cloud.google.com/) ,在左邊側欄選擇 Storage。
2. 選擇瀏覽器,然后點擊創建存儲分區。
為了確保 broker 可以訪問存儲分區,需要為服務賬號設置 Storage Object Creator 和 Storage Object Viewer。
3. 設置存儲分區的名稱。
Bucket 名稱應與在第 1 步配置的 `gcsManagedLedgerOffloadBucket` 值一致。
更多關于 `gcsManagedLedgerOffloadBucket`的信息,可以參閱:
https://hub.streamnative.io/offloaders/gcs/2.5.1/#step-1-configure-gcs-offloader-driver
4. 設置存儲分區。
存儲分區應與在第 1 步配置的 `gcsManagedLedgerOffloadRegion` 值一致。
更多關于 `gcsManagedLedgerOffloadRegion` 的信息,可以參閱:
https://hub.streamnative.io/offloaders/gcs/2.5.1/#step-1-configure-gcs-offloader-driver
5. 點擊創建。
現在,你已經成功創建了一個 GCS 存儲分區。
------
第 3 步:創建 GCS 服務賬號
1. 進入 Google Cloud 控制臺 ,在左邊側欄選擇 IAM 和管理。
2. 選擇服務賬號,然后點擊創建服務賬號。
3. 設置服務賬號名稱。
創建服務賬號后,服務賬號 ID 會自動創建。
4. 點擊創建。
5. 為服務賬號授權,點擊下一步。
6. 點擊創建密鑰。
7. 選擇 JSON 后點擊創建,然后選擇將生成的 JSON 文件保存到本地。
JSON 文件應與在第 1 步配置的 `gcsManagedLedgerOffloadServiceAccountKeyFile` 值一致。
更多關于 `gcsManagedLedgerOffloadServiceAccountKeyFile` 的信息,可以參閱:
https://hub.streamnative.io/offloaders/gcs/2.5.1/#step-1-configure-gcs-offloader-driver
8. 復制 JSON 文件中的密鑰 ID 到密鑰 ID 對話框,然后點擊完成。
------
第 4 步:為 GCS 服務賬號分配權限
1. 在 IAM 和管理頁面,點擊 IAM,然后點擊添加。
2. 填寫在第 3 步創建的 GCS 服務賬號名稱。
3. 為服務賬號設置 Storage Object Creator 和 Storage Object Viewer 權限。
4. 點擊保存。
------
第 5 步:從 BookKeeper 卸載數據到 GCS
以下命令均在本地 Pulsar 所在的文件夾(例如 `~/path/to/apache-pulsar-2.5.1`)中執行。
1. 啟動 Pulsar(單機模式)。
./bin/pulsar standalone -a 127.0.0.1
2. 為確保生成的數據不會被立刻刪除,建議設置保留策略。
https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies
保留策略可以設置為大小限制或時間限制,設置的值越大,數據保留的時間越長。
./bin/pulsarctl namespaces set-retention public/default --size -10G --time 3d
更多關于 `pulsarctl namespaces set-retention options` 命令的信息(包括 flags、說明、默認值、快捷鍵等),可以 參閱:
https://streamnative.io/docs/pulsarctl/v0.4.0/#-em-set-retention-em-
3. 使用 pulsar-perf 生產數據。
./bin/pulsar-perf produce -r 1000 -s 2048 test-topic
4. Ledger 發生切換后,卸載操作才會開始。為了確保卸載操作成功執行,建議多等待幾個 ledger 發生切換。前文配置的保留策略也是為了保證 ledger 在切換時,數據不會被 broker 刪除。
如需查看 ledger 信息,可以使用 `pulsarctl topics internal-stats option` 命令。
./bin/pulsarctl topics internal-stats test-topic
???? 輸出
以下輸出中顯示 ledge 已發生切換:已存在 ledger 10、ledger 11 和 ledger 12。
"entriesAddedCounter" : 107982, "numberOfEntries" : 107982, "totalSize" : 508276193, "currentLedgerEntries" : 1953, "currentLedgerSize" : 9167863, "lastLedgerCreatedTimestamp" : "2020-05-12T00:07:27.273+08:00", "waitingCursorsCount" : 0, "pendingAddEntriesCount" : 1, "lastConfirmedEntry" : "12:1951", "state" : "LedgerOpened", "ledgers" : [ { "ledgerld" : 10, "entries" : 52985, "size" : 249500259, "offloaded" : false }, { "ledgerld" : 11, "entries" : 53045, "size" : 249614295, "offloaded" : false }, { "ledgerId" : 12, "entries" : 0, "size" : 0, "offloaded" : false }, ] "cursors" : { }
更多關于 `pulsarctl topics internal-stats options` 命令的信息(包括 flags、說明、默認值、快捷鍵等),可以參閱:
https://streamnative.io/docs/pulsarctl/v0.4.0/#-em-internal-stats-em-
5. Ledger 切換后,你可以手動觸發卸載操作(如下所示)。
另外,你也可以設置自動觸發卸載操作。更多關于如何設置自動觸發卸載操作,可以參閱:
https://hub.streamnative.io/offloaders/gcs/2.5.1/#configure-gcs-offloader-to-run-automatically
./bin/pulsarctl topics offload --size-threshold 10M public/default/test-topic
???? 輸出
Offload triggered for persistent://public/default/test-topic for messages before 12:0:-1
更多關于 `pulsarctl topics offload options` 命令的信息(包括 flags、說明、默認值、快捷鍵等),可以參閱:
https://streamnative.io/docs/pulsarctl/v0.4.0/#-em-offload-em-
6. 檢查卸載操作的狀態。
./bin/pulsarctl topics offload-status -w public/default/test-topic
卸載操作可能會需要一段時間。
???? 輸出
Offload was a success
更多關于 `pulsarctl topics offload-status options` 命令的信息(包括 flags、說明、默認值、快捷鍵等),可以參閱:
https://streamnative.io/docs/pulsarctl/v0.4.0/#-em-offload-status-em-
操作完成后,數據成功卸載到 GCS。
點擊觀看如何在 Pulsar 中使用 GCS offloader 的分步演示。
想要隨時掌握 Pulsar 的研發進展、用戶案例和熱點話題嗎?快來關注 Apache Pulsar 和 StreamNative 微信公眾號,我們第一時間在這里分享與 Pulsar 有關的一切。
看完上述內容,你們對怎么使用GCS offloader 卸載存儲在 BookKeeper 中的數據有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。