@
# 下載最新版本為2.11.0,需要Java 17
wget https://archive.apache.org/dist/pulsar/pulsar-2.11.0/apache-pulsar-2.11.0-bin.tar.gz
# 解壓
tar xvfz apache-pulsar-2.11.0-bin.tar.gz
# 進入根目錄
cd apache-pulsar-2.11.0
# 目錄結構
ls -1F
# 啟動
bin/pulsar standalone
# 要將服務作為後臺程序執行,可以使用下面命令
bin/pulsar -daemon start standalone
檢視紀錄檔可以看到原生的pulsar standalone 叢集啟動成功紀錄檔
Pulsar叢集啟動時,會建立以下目錄
公共/預設名稱空間是在啟動Pulsar叢集時建立的。此名稱空間用於開發目的。所有Pulsar主題都在名稱空間中管理。
bin/pulsar-admin topics create persistent://public/default/test-topic1
bin/pulsar-client produce test-topic1 --messages 'Hello ,welcome Pulsar!'
bin/pulsar-client consume test-topic1 -s 'my-subscription' -p Earliest -n 0
這裡使用Pulsar二進位制包部署,不同於K8S部署叢集,為了可以更好理解Pulsar架構。Pulsar範例由多個Pulsar 叢集共同工作組成。可以跨資料中心或地理區域分佈叢集,並使用地理複製在它們之間複製叢集。搭建Pulsar叢集至少需要3個元件:ZooKeeper叢集、BookKeeper叢集、Broker叢集。
Pulsar的安裝包已經包含搭建分散式叢集所需的元件庫,無需單獨下載ZooKeeper和BookKeeper的安裝包。但在實際中,zookeeper並不僅僅應用在pulsar上,之前介紹很多巨量資料元件依賴zookeeper,因此我們也使用外接的zookeeper環境。需要apache-zookeeper-3.8.0以上版本,我這裡是apache-zookeeper-3.8.1。下面使用上面Standalone的下載的apache-pulsar-2.11.0-bin.tar.gz來部署分散式叢集。
只需要初始化一次介面,可以使用pulsar CLI工具的initialize-cluster-metadata命令初始化該後設資料
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--metadata-store zk1:2181,zk2:2181,zk3:2181 \
--configuration-metadata-store zk1:2181,zk2:2181,zk3:2181 \
--web-service-url http://hadoop1:8080/ \
--web-service-url-tls https://hadoop1:8443/ \
--broker-service-url pulsar://hadoop1:6650/ \
--broker-service-url-tls pulsar+ssl://hadoop1:6651/
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--metadata-store hadoop1:2181 \
--configuration-metadata-store hadoop1:2181 \
--web-service-url http://hadoop1:8080/ \
--web-service-url-tls https://hadoop1:8443/ \
--broker-service-url pulsar://hadoop1:6650/ \
--broker-service-url-tls pulsar+ssl://hadoop1:6651/
初始化命令的引數說明
初始化成功紀錄檔如下
BookKeeper為Pulsar提供持久訊息儲存。每個pulsar broker 都需要自己的bookies叢集。BookKeeper叢集與Pulsar叢集共用一個本地ZooKeeper仲裁。
bookies主機負責在磁碟上儲存訊息資料。為了讓bookie提供最佳的效能,擁有合適的硬體設定對bookie來說是必不可少的。以下是bookies硬體容量的關鍵維度。
通過組態檔conf/bookeeper.conf設定BookKeeper bookies。設定每個bookie最重要的方面是確保zkServers引數被設定為Pulsar叢集的本地ZooKeeper的連線字串。vim conf/bookkeeper.conf
# 修改本地地址
advertisedAddress=hadoop1
zkServers=zk1:2181,zk2:2181,zk3:2181
# 可以以兩種方式啟動一個bookie:在前臺或作為後臺守護行程啟動。使用pulsar-daemon命令列工具在後臺啟動一個bookie:
bin/pulsar-daemon start bookie
# 你可以使用BookKeeper shell的bookiesanity命令來驗證bookie是否正常工作,.這個命令在本地bookie上建立一個新的分類賬,寫一些條目,讀回來,最後刪除分類賬。
bin/bookkeeper shell bookiesanity
# 在您啟動了所有的bookie之後,可以在任何bookie節點上使用BookKeeper shell的simpletest命令,以驗證叢集中的所有bookie都在執行。
bin/bookkeeper shell simpletest --ensemble <num-bookies> --writeQuorum <num-bookies> --ackQuorum <num-bookies> --numEntries <num-entries>
其他bookie伺服器也是同樣設定(但需修改本地地址)和啟動。
設定了ZooKeeper,初始化了叢集後設資料,並啟動了BookKeeper bookie,就可以部署代理了。
修改組態檔 vi conf/broker.conf
clusterName=pulsar-cluster
advertisedAddress=hadoop1
zookeeperServers=zk1:2181,zk2:2181,zk3:2181
configurationStoreServers=zk1:2181,zk2:2181,zk3:2181
# 啟動broker,bin/pulsar broker為前臺啟動
./bin/pulsar-daemon start broker
其他broker伺服器也是同樣設定(但需修改本地地址)和啟動。檢視broker的列表
./bin/pulsar-admin brokers list pulsar-cluster
# 可以設定使用者端機器,這些使用者端機器可以作為每個叢集的管理使用者端。可以使用conf/client.conf組態檔設定admin使用者端。
serviceUrl=http://hadoop1:8080/
bin/pulsar-admin tenants create itxs-tenant \
--allowed-clusters pulsar-cluster \
--admin-roles test-admin-role
bin/pulsar-admin namespaces create itxs-tenant/myns
# 啟動一個消費者,在主題上建立一個訂閱並等待訊息:
bin/pulsar-perf consume persistent://itxs-tenant/myns/test-topic1
# 啟動一個生產者,以固定的速率釋出訊息,並每10秒報告一次統計資料:
bin/pulsar-perf produce persistent://itxs-tenant/myns/test-topic1
# 報告主題統計資訊:
bin/pulsar-admin topics stats persistent://itxs-tenant/myns/test-topic1
生產者的紀錄檔如下
消費者的紀錄檔如下
主題統計資訊的紀錄檔如下
Pulsar的分層儲存特性允許將舊的積壓資料從BookKeeper轉移到長期和更便宜的儲存中,同時允許使用者端存取積壓資料。
以流的方式永久保留原始資料,分割區容量不再限制,充分利用雲端儲存或現在廉價儲存(例如HDFS),資料統一,使用者端無需關心資料究竟存在哪裡。
當你有一個主題,並且你想要在很長一段時間內保持一個很長的待辦事項列表時,應該使用分層儲存。例如,如果有一個包含用於訓練推薦系統的使用者操作的主題,希望長時間保留該資料,以便在更改推薦演演算法時可以根據完整的使用者歷史重新執行它。
Pulsar中的主題由紀錄檔支援,稱為託管分類賬。這個紀錄檔由一個有序的段列表組成。脈衝星只寫入紀錄檔的最後一段。所有之前的片段都是密封的。段內的資料是不可變的。這被稱為面向段的體系結構。
瞭解層級儲存的基礎知識後本篇先到此,下一篇將實戰介紹層級儲存、Pulsar IO、Pulsar Functions、Pulsar SQL、Transactions的操作和範例演示。
本人部落格網站IT小神 www.itxiaoshen.com