S4的部署及使用也是很方便的,具体可以参见 https://cwiki.apache.org/confluence/display/S4/S4+piper+walkthrough
下面将简单摘录其中的一些内容。
S4目前并没有发布的包,故需要自已下载源代码包去build。
- Install S4
1.下载代码。安装git后,使用该命令:
git clone https://git-wip-us.apache.org/repos/asf/incubator-s4.git
或者 git clone git://git.apache.org/incubator-s4.git
2. 编译并安装S4,在S4目录incubator-s4下执行命令:./gradlew install -DskipTests
3. build启动脚本
./gradlew s4-tools:installApp
- 启动一个新的App。
1. 创建一个新的app。使用-parentDir指定project放置的位置。这里采用/tmp目录。
S4:incubator-s4$ ./s4 newApp myApp -parentDir=/tmp
2. 可以看到在生成的project文件夹下的如下文件:
build.gradle
gradlew 这个是s4自己再封装后的脚本,里面包含了很多s4的命令
s4 s4脚本文件。支持如deploy cluster, app,起动node等task。
src 源代码文件,是maven-like的结构。
可以具体看一下src中的示例代码,比较简单,主要是实现onEvent方法,还有给出keyFinder的实现。
- 运行示例App
1. 部署cluster。
1)启动zookeeper。
S4:incubator-s4$ ./s4 zkServer
2) 部署一个cluster。这里取名为cluster1。 -nbTasks指定partition的数目,也即将运行的节点数。 -flp指听监听端口的起始端口号,这里从12000开始。
S4:myApp$ ./s4 newCluster -c=cluster1 -nbTasks=2 -flp=12000
这里上面两步也可以合为一步,采用如下命令即可:
S4:incubator-s4$ ./s4 zkServer -clusters=c=cluster1:flp=12000:nbTasks=2
3)启动相应的节点。上述命令中指定了cluster1含两个task。故而这里启动两个。
运行S4:myApp$ ./s4 node -c=cluster1
在另一台机器上或在另一个shell上再执行同样的命令。
这样两个节点就启动了。
2.build, package并提交此app到cluster1上。
S4:myApp$ ./s4 deploy -appName=myApp -c=cluster1 -b=`pwd`/build.gradle -a=hello.HelloApp
这时从起动的两个node的控制台上也可以看到相应的app被检测,下载,加载以及启动的日志信息。
3.可以采用./s4 status来查看运行的状态信息。
s4还提供了一个adapter工具用于向示例的app发送消息,具体可以参照上面给出的网页。