Set up a standalone Pulsar locally
For local development and testing, you can run Pulsar in standalone mode on your machine. The standalone mode includes a Pulsar broker, the necessary RocksDB and BookKeeper components running inside of a single Java Virtual Machine (JVM) process.
Pulsar in production? If you're looking to run a full production Pulsar installation, see the Deploying a Pulsar instance guide.
Install Pulsar standaloneβ
This tutorial guides you through every step of installing Pulsar locally.
System requirementsβ
Currently, Pulsar is available for 64-bit macOS, Linux, and Windows. To use Pulsar, you need to install 64-bit JRE/JDK 8 or later versions
By default, Pulsar allocates 2G JVM heap memory to start. It can be changed in conf/pulsar_env.sh
file under PULSAR_MEM
. This is an extra option passed into JVM.
Broker is only supported on 64-bit JVM.
Install JDK on M1β
In the current version, Pulsar uses a BookKeeper version which in turn uses RocksDB. RocksDB is compiled to work on x86 architecture and not ARM. Therefore, Pulsar can only work with x86 JDK. This is planned to be fixed in future versions of Pulsar.
One of the ways to easily install an x86 JDK is to use SDKMan as outlined in the following steps:
- Install SDKMan.
Follow the instructions on the SDKMan website.
- Turn on Rosetta2 compatibility for SDKMan by editing
~/.sdkman/etc/config
and changing the following property fromfalse
totrue
.
sdkman_rosetta2_compatible=true
- Close the current shell / terminal window and open a new one.
- Make sure you don't have any previously installed JVM of the same version by listing existing installed versions.
sdk list java|grep installed
Example output:
| >>> | 17.0.3.6.1 | amzn | installed | 17.0.3.6.1-amzn
If you have any Java 17 version installed, uninstall it.
sdk uinstall java 17.0.3.6.1
- Install any Java versions greater than Java 8.
sdk install java 17.0.3.6.1-amzn
Install Pulsar using binary releaseβ
To get started with Pulsar, download a binary tarball release in one of the following ways:
-
download from the Apache mirror (Pulsar 2.10.6 binary release)
-
download from the Pulsar downloads page
-
download from the Pulsar releases page
-
use wget:
wget https://archive.apache.org/dist/pulsar/pulsar-2.10.6/apache-pulsar-2.10.6-bin.tar.gz
After you download the tarball, untar it and use the cd
command to navigate to the resulting directory:
tar xvfz apache-pulsar-2.10.6-bin.tar.gz
cd apache-pulsar-2.10.6
What your package containsβ
The Pulsar binary package initially contains the following directories:
Directory | Contains |
---|---|
bin | Pulsar's command-line tools, such as pulsar and pulsar-admin . |
conf | Configuration files for Pulsar, including broker configuration and more. Note: Pulsar standalone uses RocksDB as the local metadata store and its configuration file path metadataStoreConfigPath is configurable in the standalone.conf file. For more information about the configurations of RocksDB, see here and related documentation. |
examples | A Java JAR file containing Pulsar Functions example. |
instances | Artifacts created for Pulsar Functions. |
lib | The JAR files used by Pulsar. |
licenses | License files, in the.txt form, for various components of the Pulsar codebase. |
These directories are created once you begin running Pulsar.
Directory | Contains |
---|---|
data | The data storage directory used by RocksDB and BookKeeper. |
logs | Logs created by the installation. |
If you want to use built-in connectors and tiered storage offloaders, you can install them according to the following instructionsοΌ
- Install built-in connectors (optional)
- Install tiered storage offloaders (optional) Otherwise, skip this step and perform the next step Start Pulsar standalone. Pulsar can be successfully installed without installing built-in connectors and tiered storage offloaders.
Install builtin connectors (optional)β
Since 2.1.0-incubating
release, Pulsar releases a separate binary distribution, containing all the built-in
connectors.
To enable those builtin
connectors, you can download the connectors tarball release in one of the following ways:
-
download from the Apache mirror Pulsar IO Connectors 2.10.6 release
-
download from the Pulsar downloads page
-
download from the Pulsar releases page
-
use wget:
wget https://archive.apache.org/dist/pulsar/pulsar-2.10.6/connectors/{connector}-2.10.6.nar
After you download the NAR file, copy the file to the connectors
directory in the pulsar directory.
For example, if you download the pulsar-io-aerospike-2.10.6.nar
connector file, enter the following commands:
mkdir connectors
mv pulsar-io-aerospike-2.10.6.nar connectors
ls connectors
pulsar-io-aerospike-2.10.6.nar
...
- If you are running Pulsar in a bare metal cluster, make sure
connectors
tarball is unzipped in every pulsar directory of the broker (or in every pulsar directory of function-worker if you are running a separate worker cluster for Pulsar Functions). - If you are running Pulsar in Docker or deploying Pulsar using a docker image (e.g. K8S or DC/OS, you can use the
apachepulsar/pulsar-all
image instead of theapachepulsar/pulsar
image.apachepulsar/pulsar-all
image has already bundled all built-in connectors.
Install tiered storage offloaders (optional)β
- Since
2.2.0
release, Pulsar releases a separate binary distribution, containing the tiered storage offloaders. - To enable the tiered storage feature, follow the instructions below; otherwise skip this section.
To get started with tiered storage offloaders, you need to download the offloaders tarball release on every broker node in one of the following ways:
-
download from the Apache mirror Pulsar Tiered Storage Offloaders 2.10.6 release
-
download from the Pulsar downloads page
-
download from the Pulsar releases page
-
use wget:
wget https://archive.apache.org/dist/pulsar/pulsar-2.10.6/apache-pulsar-offloaders-2.10.6-bin.tar.gz
After you download the tarball, untar the offloaders package and copy the offloaders as offloaders
in the pulsar directory:
tar xvfz apache-pulsar-offloaders-2.10.6-bin.tar.gz
// you will find a directory named `apache-pulsar-offloaders-2.10.6` in the pulsar directory
// then copy the offloaders
mv apache-pulsar-offloaders-2.10.6/offloaders offloaders
ls offloaders
tiered-storage-jcloud-2.10.6.nar
For more information on how to configure tiered storage, see Tiered storage cookbook.
- If you are running Pulsar in a bare metal cluster, make sure that
offloaders
tarball is unzipped in every broker's pulsar directory. - If you are running Pulsar in Docker or deploying Pulsar using a docker image (e.g. K8S or DC/OS), you can use the
apachepulsar/pulsar-all
image instead of theapachepulsar/pulsar
image.apachepulsar/pulsar-all
image has already bundled tiered storage offloaders.
Start Pulsar standaloneβ
Once you have an up-to-date local copy of the release, you can start a local cluster using the pulsar
command, which is stored in the bin
directory, and specifying that you want to start Pulsar in standalone mode.
bin/pulsar standalone
If you have started Pulsar successfully, you will see INFO
-level log messages like this:
21:59:29.327 [DLM-/stream/storage-OrderedScheduler-3-0] INFO org.apache.bookkeeper.stream.storage.impl.sc.StorageContainerImpl - Successfully started storage container (0).
21:59:34.576 [main] INFO org.apache.pulsar.broker.authentication.AuthenticationService - Authentication is disabled
21:59:34.576 [main] INFO org.apache.pulsar.websocket.WebSocketService - Pulsar WebSocket Service started
- The service is running on your terminal, which is under your direct control. If you need to run other commands, open a new terminal window.
You can also run the service as a background process using the bin/pulsar-daemon start standalone
command. For more information, see pulsar-daemon.
By default, there is no encryption, authentication, or authorization configured. Apache Pulsar can be accessed from remote server without any authorization. Please do check Security Overview document to secure your deployment.
When you start a local standalone cluster, a
public/default
namespace is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see Topics.
Use Pulsar standaloneβ
Pulsar provides a CLI tool called pulsar-client
. The pulsar-client tool enables you to consume and produce messages to a Pulsar topic in a running cluster.
Consume a messageβ
The following command consumes a message with the subscription name first-subscription
to the my-topic
topic:
bin/pulsar-client consume my-topic -s "first-subscription"
If the message has been successfully consumed, you will see a confirmation like the following in the pulsar-client
logs:
22:17:16.781 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully consumed
As you have noticed that we do not explicitly create the my-topic
topic, from which we consume the message. When you consume a message from a topic that does not yet exist, Pulsar creates that topic for you automatically. Producing a message to a topic that does not exist will automatically create that topic for you as well.
Produce a messageβ
The following command produces a message saying hello-pulsar
to the my-topic
topic:
bin/pulsar-client produce my-topic --messages "hello-pulsar"
If the message has been successfully published to the topic, you will see a confirmation like the following in the pulsar-client
logs:
22:21:08.693 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced
Stop Pulsar standaloneβ
Press Ctrl+C
to stop a local standalone Pulsar.
If the service runs as a background process using the bin/pulsar-daemon start standalone
command, then use the bin/pulsar-daemon stop standalone
command to stop the service.
For more information, see pulsar-daemon.