hello-samza是官方给的例子,包括一整套运行环境,包括zookeeper、kafka、yarn、samza。虽然例子看起来很容易,但是跑起来感觉全是坑,毕竟用的公司的集群,没有root权限,然后例子给的都是国外的地址,访问速度很慢或者根本被墙了。想say hello不容易!
安装和配置Apache-Samza,需要jdk1.7+、maven2的环境
下载源码
官方给的https://git.apache.org/samza-hello-samza.git可能连接不上,换了一个
运行grid
下载、安装相关系统
虽然只有一句话,但是会执行如下,会下载并安装samza,zookeeper,yarn,kafka
可能出现很多问题
出现问题:
- 公司开发机,没有root权限,会有错误:
Caused by: java.io.IOException: No locks available
gradle的默认本地仓库是home下的 如~/.gradle
需要修改gradle和samza目录,在用户的home目录下建立软连接:
- 改完继续执行bin/grid bootstrap,会出现超时,
fatal: unable to connect to git.apache.org:
git.apache.org[0: 54.84.58.65]: errno=Connection timed out
修改bin/grid文件:
继续执行bin/grid bootstrap,下载、安装持续了很久。
再给我一次机会,肯定会改下载地址,下面自带的地址太慢了,hadoop的用了一个多小时。
安装完后,在deploy目录下有kafka,yarn,zookeeper的系统。
在自己建立软连接的目录下有samza。
查看是否安装成功:
还可以通过浏览器访问来查看YARN UI:
http://localhost:8088
利用maven打包并解压
打包,要等很久。
出现问题:
Too many files with unapproved license samza
修改之后继续打包:
解压:
运行samza job:
数据获取job
该job是从在线的wikimedia实时消费数据,作为kafka的wikipedia-raw这个topic的producer。
先看下将要运行的示例的input
测试一下是否能连接上
如果有响应
1deploy/samza/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-feed.properties如果没有响应。只能使用本地的数据,作为kafka的producer:
1234bin/produce-wikipedia-raw-data.sh#或者可以修改kafka-broker地址和zookeeper地址bin/produce-wikipedia-raw-data.sh -b yourKafkaBrokerAddress -z yourZookeeperAddress
测试是否成功,开一个消费者实时消费wikipedia-raw
将会有实时的消息输出
数据统计job
|
|
前面的wikipedia-parser负责解析wikipedia-raw中消息,从而抽取edit的大小,修改者等信息
wikipedia-raw–>wikipedia-edits
后面的wikipedia-stats负责统计来自wikipedia-edits中的消息,计算消息的个数。而后通过一个10秒钟长的滑动时间窗口将统计个数发送到kafka的wikipedia-statstopic中
wikipedia-edits–>wikipedia-statstopic
可以查看结果:
最后的输出结果类似:
关闭samza
|
|
开启samza
如果不是首次,则通过之前的bootstrap已经下载了相应的东西,只需要start
参考
http://blog.jassassin.com/2015/04/30/samza/hello-samza/
http://samza.apache.org/startup/hello-samza/0.10/