sijie commented on a change in pull request #4820: [docs] Add functions-deploy 
guide for Pulsar Functions (new)
URL: https://github.com/apache/pulsar/pull/4820#discussion_r307589311
 
 

 ##########
 File path: site2/docs/functions-deploy.md
 ##########
 @@ -0,0 +1,210 @@
+---
+id: functions-deploy
+title: Pulsar Functions Deploy
+sidebar_label: Deploy
+---
+
+## Requirements
+
+To deploy and manage Pulsar Functions, you need to have a Pulsar cluster 
running. There are several options for this:
+
+* You can run a [standalone cluster](getting-started-standalone.md) locally on 
your own machine.
+* You can deploy a Pulsar cluster on [Kubernetes](deploy-kubernetes.md), 
[Amazon Web Services](deploy-aws.md), [bare metal](deploy-bare-metal.md), 
[DC/OS](deploy-dcos.md), and more.
+
+If you run a non-[standalone](reference-terminology.md#standalone) cluster, 
you need to obtain the service URL for the cluster. How you obtain the service 
URL depends on how you deploy your Pulsar cluster.
+
+If you want to deploy and trigger Python user-defined functions, you need to 
install [the pulsar python 
client](http://pulsar.apache.org/docs/en/client-libraries-python/) first.
+
+## Command-line interface
+
+Pulsar Functions are deployed and managed using the [`pulsar-admin 
functions`](reference-pulsar-admin.md#functions) interface, which contains 
commands such as [`create`](reference-pulsar-admin.md#functions-create) for 
deploying functions in [cluster mode](#cluster-mode), 
[`trigger`](reference-pulsar-admin.md#trigger) for 
[triggering](#triggering-pulsar-functions) functions, 
[`list`](reference-pulsar-admin.md#list-2) for listing deployed functions.
+
+To learn more commands, refer to [`pulsar-admin 
functions`](reference-pulsar-admin.md#functions).
+
+### Default arguments
+
+When managing Pulsar Functions, you need to specify a variety of information 
about functions, including tenant, namespace, input and output topics, and so 
on. However, some parameters have default values if you do not specify values 
for them. The following table lists the default values.
+
+Parameter | Default
+:---------|:-------
+Function name | You can specify any value for the class name (except org, 
library, or similar class names). For example, when you specify the flag 
`--classname org.example.MyFunction`, the function name is `MyFunction`.
+Tenant | Derived from names of the input topics. If the input topics are under 
the `marketing` tenant, which means the topic names have the form 
`persistent://marketing/{namespace}/{topicName}`, the tenant is `marketing`.
+Namespace | Derived from names of the input topics. If the input topics are 
under the `asia` namespace under the `marketing` tenant, which means the topic 
names have the form `persistent://marketing/asia/{topicName}`, then the 
namespace is `asia`.
+Output topic | `{input topic}-{function name}-output`. For example, if an 
input topic name of a function is `incoming`, and the function name is 
`exclamation`, then the name of the output topic is 
`incoming-exclamation-output`.
+Subscription type | For `at-least-once` and `at-most-once` [processing 
guarantees](functions-guarantees.md), the 
[`SHARED`](concepts-messaging.md#shared) mode is applied by default; for 
`effectively-once` guarantees, the [`FAILOVER`](concepts-messaging.md#failover) 
mode is applied.
+Processing guarantees | [`ATLEAST_ONCE`](functions-guarantees.md)
+Pulsar service URL | `pulsar://localhost:6650`
+
+### Example of default arguments
+
+Take the `create` command as an example.
+
+```bash
+$ bin/pulsar-admin functions create \
+  --jar my-pulsar-functions.jar \
+  --classname org.example.MyFunction \
+  --inputs my-function-input-topic1,my-function-input-topic2
+```
+
+The function has default values for the function name (`MyFunction`), tenant 
(`public`), namespace (`default`), subscription type (`SHARED`), processing 
guarantees (`ATLEAST_ONCE`), and Pulsar service URL (`pulsar://localhost:6650`).
+
+## Local run mode
+
+If you run a Pulsar Function in **local run** mode, it runs on the machine 
from which you enter the commands (on your laptop, an [AWS 
EC2](https://aws.amazon.com/ec2/) instance, and so on). The following is a 
[`localrun`](reference-pulsar-admin.md#localrun) command example.
+
+```bash
+$ bin/pulsar-admin functions localrun \
+  --py myfunc.py \
+  --classname myfunc.SomeFunction \
+  --inputs persistent://public/default/input-1 \
+  --output persistent://public/default/output-1
+```
+
+By default, the function connects to a Pulsar cluster running on the same 
machine, via a local [broker](reference-terminology.md#broker) service URL of 
`pulsar://localhost:6650`. If you use local run mode to run a function but 
connect it to a non-local Pulsar cluster, you can specify a different broker 
URL using the `--brokerServiceUrl` flag. The following is an example.
+
+```bash
+$ bin/pulsar-admin functions localrun \
+  --broker-service-url pulsar://my-cluster-host:6650 \
+  # Other function parameters
+```
+
+## Cluster mode
+
+When you run a Pulsar Function in **cluster** mode, the function code is 
uploaded to a Pulsar broker and runs *alongside the broker* rather than in your 
[local environment](#local-run-mode). You can run a function in cluster mode 
using the [`create`](reference-pulsar-admin.md#create-1) command. 
+
+```bash
+$ bin/pulsar-admin functions create \
+  --py myfunc.py \
+  --classname myfunc.SomeFunction \
+  --inputs persistent://public/default/input-1 \
+  --output persistent://public/default/output-1
+```
+
+### Update functions in cluster mode 
+
+You can use the [`update`](reference-pulsar-admin.md#update-1) command to 
update a Pulsar Function running in cluster mode. The following command updates 
the function created in the [cluster mode](#cluster-mode) section.
+
+```bash
+$ bin/pulsar-admin functions update \
+  --py myfunc.py \
+  --classname myfunc.SomeFunction \
+  --inputs persistent://public/default/new-input-topic \
+  --output persistent://public/default/new-output-topic
+```
+
+### Parallelism
+
+Pulsar Functions run as processes, which is called **instances**. When you run 
a Pulsar Function, it runs as a single instance by default. In [local run 
mode](#local-run-mode), you can *only* run a single instance of a function.
 
 Review comment:
   > In [local run mode](#local-run-mode), you can *only* run a single instance 
of a function.
   
   Each localrun command runs only a single instance of a function. If you want 
to run multiple instances, you can execute localrun multiple times.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to