一步步搭环境:

----------------------------------------------------

系统环境要求:

Mac OS X 或者 Ubuntu14.04>=

1. Java环境配置

Linux java环境配置。因为heron用到Bazel管理工具的要求必须是JDK1.8版本,所以可以直接下JDK1.8进行安装。

JDK安装下载解压到/usr/local目录下,然后进行环境变量配置,有两个地方可以配置(/etc/profile(全局配置) 或者 ~/.bashrc(只针对某个用户)),打开文件,shift+g定位到文件末尾,添加如下语句

exportJAVA_HOME=/usr/local/jdkexportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:exportPATH=$PATH:$HOME/bin:$JAVA_HOME/bin

为了使得更改立即生效,可以使用source命令

source/etc/profile#source~/.bashrc

2. 下载脚本

可以去github上下载Twitter提供的heron安装脚本(https://github.com/twitter/heron/releases),可以下载自己系统对应的文件。

注:如果是Mac,脚本文件是带有darwin的,即heron-client-install-0.14.3-darwin.sh、heron-tools-install-0.14.3-darwin.sh这样的文件。

heron的单节点运行主要用到2个脚本文件

heron-client-install-0.14.2-PLATFORM.sh

heron-tools-install-0.14.2-PLATFORM.sh

3. 安装

下载完成,可以使用 --user进行安装

若脚本没有执行权限,则先执行如下语句,其他脚本文件同理

$chmod+xheron-client-install-0.14.3-ubuntu.sh

安装client

$./heron-client-install-0.14.3-ubuntu.sh--userHeronclientinstaller----------------------Uncompressing......Heronisnowinstalled!Makesureyouhave"$/home/xxx/bin"inyourpath....

如果环境变量中没有 /home/xxx/bin 可以进行环境变量导入

$exportPATH=$PATH:~/bin

接下来安装 tool,依旧使用 --user

$./heron-tools-install-0.14.3-.sh--userHerontoolsinstaller---------------------Uncompressing......HeronToolsisnowinstalled!...

可以使用如下语句检查heron是否安装成功

heronversion

如果提示如下语句,提示JAVA_HOME没有设置:

root@vm-heron:~/bin#heronversionERROR:root:JAVA_HOMEnotset

可是明明环境变量已经设置,而且使用echo $PATH可以看到环境变量....

那就执行一次export将JAVA_HOME进行导入(终端关闭后,就不起作用了)

exportJAVA_HOME=/usr/local/jdk

然后再执行,就可以成功

root@vm-heron:~$heronversionheron.build.version:'0.14.3'heron.build.time:SatSep1001:04:00PDT2016heron.build.timestamp:1473494660000heron.build.host:tw-mbp-kramasamyheron.build.user:kramasamyheron.build.git.revision:71d5b256d779be73b37c50d2a58af8f00d618276heron.build.git.status:Clean

4. 部署运行

安装完成后,在~/.heron/example目录下会有一些Twitter的官方例子,可以使用heron的CLI工具在本地部署一个tolopogy。

$heronsubmitlocal\>~/.heron/examples/heron-examples.jar\>com.twitter.heron.examples.ExclamationTopology\>ExclamationTopology\>--deploy-deactivatedINFO:Usingconfigfileunder/home/${user}/.heron/conf/localINFO:Launchingtopology'ExclamationTopology'INFO:Topology'ExclamationTopology'launchedsuccessfullyINFO:Elapsedtime:6.915s.

这个运行之后就会在家目录下产生一个 ./herondata的目录,此目录存放了之前运行的数据。可以看看其内容

$ll~/.herondata/topologies/local/${user}/ExclamationTopology-rw-rw-r--1useruser23439月1816:14ExclamationTopology.defndrwxr-xr-x2useruser40961月11970heron-conf/drwxr-xr-x4useruser40961月11970heron-core/-rwxr-xr-x1useruser45862111月11970heron-examples.jar*-rw-rw-r--1useruser09月1816:14heron-executor-0.stderr-rw-rw-r--1useruser09月1816:14heron-executor-1.stderr-rw-rw-r--1useruser09月1816:14java-a4298b50-started.stderrdrwxrwxr-x2useruser40969月1816:14log-files/-r-xr-xr-x1useruser2811月11970release.yaml*

5. 启动Heron Tracker

Heron Tracker是用来收集heron集群信息的web服务,可以通过运行heron-tracker来部署它。

$heron-trackerINFO:09/18/201616:35:05+0000Connectingtofilestatewithrootpath:/home/${user}/.herondata/repository/state/localINFO:09/18/201616:35:05+0000TrackerhasstartedINFO:09/18/201616:35:05+0000Runningonport:8888INFO:09/18/201616:35:05+0000Usingconfigfile:/home/${user}/.herontools/conf/heron_tracker.yamlINFO:09/18/201616:35:05+0000Statewatchtriggeredfortopologies.INFO:09/18/201616:35:05+0000Addingnewtopology:ExclamationTopology,state_manager:localINFO:09/18/201616:35:05+0000Registeringawatchwithuid:53ccd3c3-f6d2-4d53-af11-c736a96986d3INFO:09/18/201616:35:05+0000Noexecutionstatefoundfor:ExclamationTopologyINFO:09/18/201616:35:05+0000Watchtriggeredfortopologyexecutionstate:ExclamationTopologyINFO:09/18/201616:35:05+0000Settingtopologyinfofortopology:ExclamationTopologyINFO:09/18/201616:35:05+0000Watchtriggeredfortopologypplan:ExclamationTopologyINFO:09/18/201616:35:05+0000Settingtopologyinfofortopology:ExclamationTopologyINFO:09/18/201616:35:05+0000Watchtriggeredfortopologytmaster:ExclamationTopologyINFO:09/18/201616:35:05+0000Settingtopologyinfofortopology:ExclamationTopologyINFO:09/18/201616:35:05+0000Watchtriggeredfortopologyschedulerlocation:ExclamationTopologyINFO:09/18/201616:35:05+0000Settingtopologyinfofortopology:ExclamationTopologyINFO:09/18/201616:36:31+0000302GET/(127.0.0.1)0.50msINFO:09/18/201616:36:31+0000200GET/topologies(127.0.0.1)0.71msWARNING:09/18/201616:36:32+0000404GET/favicon.ico(127.0.0.1)1.10msWARNING:09/18/201616:36:32+0000404GET/favicon.ico(127.0.0.1)0.49ms

执行中若是出现,没有权限错误,则把家目录下的 .pex目录权限改成当前用户

$sudochown-R${user}:${user}~/.pex/

然后在浏览器中输入http://localhost:8888/,即可看到如下内容

{"status":"success","executiontime":4.076957702636719e-05,"message":"","version":"1.0.0","result":{"local":{"${user}":{"default":["ExclamationTopology"]}}}}

6. Heron UI使用

Heron UI 就是直观的用户界面了,通过它可以看tolopogy的详细运行情况,通过 heron-ui来部署启动

$heron-uiINFO:09/18/201616:47:24+0000Listeningathttp://0.0.0.0:8889INFO:09/18/201616:47:24+0000Usingtrackerurl:http://localhost:8888

然后就可以在浏览器中输入http://localhost:8889/,就可以打开如下界面了。

注:上一步的heron-tracker也是必须在运行状态,长期运行可以使用守护进程启动,否则会出现[Errno 111] connected refused的异常。


7. tolopogy的几个常用命令

上面我们在本地环境提交了一个tolopogy,我们可以使用heron的CLI工具进行一些管理,如activate、deactivate、kill等。

$heronactivatelocalExclamationTopology$herondeactivatelocalExclamationTopology$heronkilllocalExclamationTopolog

若果上面的命令执行成功,会有类似下面这样的提示信息:

INFO:Successfullyactivatedtopology'ExclamationTopology'INFO:Elapsedtime:1.980s.

我们可以通过heron来查看有哪些命令可用

$heronusage:heron<command><options>...Availablecommands:activateActivateatopologydeactivateDeactivateatopologyhelpPrintshelpforcommandskillKillatopologyrestartRestartatopologysubmitSubmitatopologyversionPrintversionofheron-cliGettingmorehelp:heronhelp<command>Printshelpandoptionsfor<command>Fordetaileddocumentation,gotohttp://heronstreaming.io

利用help命令查看如何提交一个tolopogy

$heronhelpsubmitusage:heronsubmit[options]cluster/[role]/[env]topology-file-nametopology-class-name[topology-args]Requiredarguments:cluster/[role]/[env]Cluster,role,andenvironmenttoruntopologytopology-file-nameTopologyjar/tar/zipfiletopology-class-nameTopologyclassnameOptionalarguments:--config-path(astring;pathtoclusterconfig;default:"/home/${user}/.heron/conf")--config-property(key=value;aconfigkeyanditsvalue;default:[])--deploy-deactivated(aboolean;default:"false")--extra-launch-classpath(astring;additionalJVMclasspathforlaunchingtopology)--topology-main-jvm-property(property=value;JVMsystempropertyforexecutingtopologymain;default:[])--verbose(aboolean;default:"false")