官网原文标题《Setting up a local standalone cluster》
翻译时间:2018-09-28
官网原文地址:http://pulsar.apache.org/docs/en/standalone/
译者:本文介绍了如何在本地搭建单机集群。准备环境,是学习Pulsar的第一步。
下一步阅读《消息核心概念(Messaging Concepts)》
--------------------分割线----------------
如果是为了本地开发和测试,可以在你自己的电脑上,以单机模式运行Pulsar。单机模式包括运行在java虚拟机上的一个Pulsar broker以及它所必须的ZooKeeper和BookKeeper。
系统需求
目前Pulsar可以运行在MacOS和Linux上。你需要安装Java 8来运行pulsar。
安装Pulsar
首先通过以下任意一种方式下载binary tarball。
1、Apache镜像下载
2、Pulsar下载页
3、Pulsar发布页
4、使用wget
$ wget https://archive.apache.org/dist/incubator/pulsar/pulsar-2.1.1-incubating/apache-pulsar-2.1.1-incubating-bin.tar.gz
下载tarball后,解压,进入解压后的文件夹。
包里有什么呢?
初始Pulsar的binary包中有如下目录:
目录 | 内容 |
bin | Pulsar的命令行工具,例如pulsar和pulsar-admin |
conf | Pulsar的配置文件,包括broker配置、zookeeper配置等等 |
example | Pulsar function例子的Java jar文件 |
lib | Pulsar用到的Jar文件 |
licenses | 各种Pulsar codebase组件的License文件,.txt形式, |
一旦你开始运行Pulsar,下面的这些目录将会被创建:
目录 | 内容 |
data | ZooKeeper和BookKeeper使用的数据存储目录 |
instances | 为Pulsar Function创建的Artifact |
logs | 安装时创建的log |
安装内建的Connector
从2.1.0-incubating发布后,Pulsar发布了一个单独的binary分发版,含有所有内建connector。如果你想要使用这些内建connector,你可以通过下述方式下载connector tarball。
1、Apache镜像下载
2、Pulsar下载页
3、Pulsar发布页
4、使用wget
$ wget https://archive.apache.org/dist/incubator/pulsar/pulsar-2.1.1-incubating/apache-pulsar-io-connectors-2.1.1-incubating-bin.tar.gz
下载好tarball后,在pulasr目录下解压io-connectors包,然后在pulsar目录下拷贝connectors。
$ tar xvfz /path/to/apache-pulsar-io-connectors-2.1.1-incubating-bin.tar.gz
// you will find a directory named `apache-pulsar-io-connectors-2.1.1-incubating` in the pulsar directory
// then copy the connectors
$ cd apache-pulsar-io-connectors-2.1.1-incubating/connectors connectors
$ ls connectors
pulsar-io-aerospike-2.1.1-incubating.nar
pulsar-io-cassandra-2.1.1-incubating.nar
pulsar-io-kafka-2.1.1-incubating.nar
pulsar-io-kinesis-2.1.1-incubating.nar
pulsar-io-rabbitmq-2.1.1-incubating.nar
pulsar-io-twitter-2.1.1-incubating.nar
...
启动集群
当你本地有了最新的发布拷贝后,你可以通过bin目录下的pulsar命令来启动本地集群。启动时候需要指定你想以单机模式运行。
$ bin/pulsar standalone
如果Pulsar已经成功启动,你应该可以看到如下INFO级别的日志。
2017-06-01 14:46:29,192 - INFO - [main:WebSocketService@95] - Global Zookeeper cache started
2017-06-01 14:46:29,192 - INFO - [main:AuthenticationService@61] - Authentication is disabled
2017-06-01 14:46:29,192 - INFO - [main:WebSocketService@108] - Pulsar WebSocket Service started
自动创建namespace
当你启动本地单机集群,Pulsar将会自动创建public/default namespace,你可以用来作开发目的。所有的Pulsar topic都将在此namespace下管理。更多信息,参考Topics。
在Docker运行Pulsar
此外,你还可以在docker运行单机pulsar
docker run -it -p 80:80 -p 8080:8080 -p 6650:6650 apachepulsar/pulsar-standalone
命令对localhost开放这些端口
docker容器运行后,你可以通过http://localhost进入dashboard。
测试你的cluster安装
Pulsar提供了名为pulsar-client 的CLI工具,使你可以做一些诸如发送消息到topic的事情。这条命令将会发送一个简单的“hellp-pulsar”的消息到my-topic的Topic。
$ bin/pulsar-client produce my-topic --messages "hello-pulsar"
如果此消息成功的发布到topic,你可以在pulsar-client中看到下面的确认log。
13:09:39.356 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced
不需要明确的创建主题
你可能注意到,你并没在传递hello-pulsar消息前,去创建my-topic主题。如果你尝试往一个还不存在的topic写入消息,那么Pulsar会自动创建主题。
本地使用Pulsar client
目前pulsar提供了Java、Python和C++的类库。如果你运行了本地独立集群,可以通过下述根URL和你的集群交互。
下面是某topic的producer的java客户端的例子:
String localClusterUrl = "pulsar://localhost:6650";
PulsarClient client = PulsarClient.builder().serviceURL(localClusterUrl).build();
Producer producer = client.newProducer().topic("my-topic").create();
下面是Pythion的例子:
import pulsar
client = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer('my-topic')
最后是一个C++ producer的例子:
Client client("pulsar://localhost:6650");
Producer producer;
Result result = client.createProducer("my-topic", producer);
if (result != ResultOk) {
LOG_ERROR("Error creating producer: " << result);
return -1;
}