Samza1---Hello Samza

hello-samza是官方给的例子,包括一整套运行环境,包括zookeeper、kafka、yarn、samza。虽然例子看起来很容易,但是跑起来感觉全是坑,毕竟用的公司的集群,没有root权限,然后例子给的都是国外的地址,访问速度很慢或者根本被墙了。想say hello不容易!

安装和配置Apache-Samza,需要jdk1.7+、maven2的环境

下载源码

官方给的https://git.apache.org/samza-hello-samza.git可能连接不上,换了一个

1
2
git clone https://github.com/apache/samza-hello-samza.git hello-samza
cd hello-samza/

运行grid

下载、安装相关系统

1
bin/grid bootstrap

虽然只有一句话,但是会执行如下,会下载并安装samza,zookeeper,yarn,kafka

1
2
3
stop all #停止yarn|kafka|zookeeper
install all #安装
start all #启动

可能出现很多问题

出现问题:

  1. 公司开发机,没有root权限,会有错误:

    Caused by: java.io.IOException: No locks available

gradle的默认本地仓库是home下的 如~/.gradle
需要修改gradle和samza目录,在用户的home目录下建立软连接:

1
2
ln -s /disk1/fangyq/gradle ~/.gradle
ln -s /disk1/fangyq/samza ~/.samza

  1. 改完继续执行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文件:

1
2
git clone git://git.apache.org/samza.git #原地址
git clone https://github.com/apache/samza.git #现地址

继续执行bin/grid bootstrap,下载、安装持续了很久。
再给我一次机会,肯定会改下载地址,下面自带的地址太慢了,hadoop的用了一个多小时。

1
2
3
DOWNLOAD_KAFKA=http://www.us.apache.org/dist/kafka/0.8.2.1/kafka_2.10-0.8.2.1.tgz
DOWNLOAD_YARN=https://archive.apache.org/dist/hadoop/common/hadoop-2.6.1/hadoop-2.6.1.tar.gz
DOWNLOAD_ZOOKEEPER=http://archive.apache.org/dist/zookeeper/zookeeper-3.4.3/zookeeper-3.4.3.tar.gz

安装完后,在deploy目录下有kafka,yarn,zookeeper的系统。
在自己建立软连接的目录下有samza。

查看是否安装成功:

1
2
3
4
5
6
7
jps
50500 NodeManager
43877 Kafka
56215 Jps
50439 ResourceManager
43721 QuorumPeerMain

还可以通过浏览器访问来查看YARN UI:
http://localhost:8088

利用maven打包并解压

打包,要等很久。

1
mvn clean package

出现问题:

Too many files with unapproved license samza

修改之后继续打包:

1
mvn -Drat.ignoreErrors=true clean package

解压:

1
2
mkdir -p deploy/samza
tar -xvf target/hello-samza-0.10.1-dist.tar.gz -C deploy/samza

运行samza job:

数据获取job

该job是从在线的wikimedia实时消费数据,作为kafka的wikipedia-raw这个topic的producer。

先看下将要运行的示例的input

1
less deploy/samza/config/wikipedia-feed.properties

测试一下是否能连接上

1
telnet irc.wikimedia.org 6667

  • 如果有响应

    1
    deploy/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:

    1
    2
    3
    4
    bin/produce-wikipedia-raw-data.sh
    #或者可以修改kafka-broker地址和zookeeper地址
    bin/produce-wikipedia-raw-data.sh -b yourKafkaBrokerAddress -z yourZookeeperAddress

测试是否成功,开一个消费者实时消费wikipedia-raw

1
deploy/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic wikipedia-raw

将会有实时的消息输出

1
{"raw":"[[Paul Henreid]] http://en.wikipedia.org/w/index.php?diff=606587718&oldid=603654278 * .48.142.193 * (-1) original name Wasel, not Wassel - see ref & ext link","time":1398926962623,"source":"rc-pmtpa","channel":"#en.wikipedia"}

数据统计job

1
2
3
deploy/samza/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-parser.properties
deploy/samza/bin/run-job.sh --config-factory=org.apache.samza.config.factories.PropertiesConfigFactory --config-path=file://$PWD/deploy/samza/config/wikipedia-stats.properties

前面的wikipedia-parser负责解析wikipedia-raw中消息,从而抽取edit的大小,修改者等信息

wikipedia-raw–>wikipedia-edits

后面的wikipedia-stats负责统计来自wikipedia-edits中的消息,计算消息的个数。而后通过一个10秒钟长的滑动时间窗口将统计个数发送到kafka的wikipedia-statstopic中

wikipedia-edits–>wikipedia-statstopic

可以查看结果:

1
2
3
deploy/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic wikipedia-edits
deploy/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic wikipedia-stats

最后的输出结果类似:

1
2
{"is-minor":948,"unique-titles":763,"is-talk":90,"is-bot-edit":513,"bytes-added":350253,"edits":2790,"is-new":135,"edits-all-time":3720,"is-unpatrolled":78}
{"is-minor":632,"unique-titles":763,"is-talk":60,"is-bot-edit":342,"bytes-added":233502,"edits":1860,"is-new":90,"edits-all-time":5580,"is-unpatrolled":52}

关闭samza

1
bin/grid stop all

开启samza

如果不是首次,则通过之前的bootstrap已经下载了相应的东西,只需要start

1
bin/grid start all

参考

http://blog.jassassin.com/2015/04/30/samza/hello-samza/
http://samza.apache.org/startup/hello-samza/0.10/

文章目录
  1. 1. 下载源码
  2. 2. 运行grid
    1. 2.0.1. 出现问题:
  • 3. 利用maven打包并解压
    1. 3.0.1. 出现问题:
  • 4. 运行samza job:
    1. 4.1. 数据获取job
    2. 4.2. 数据统计job
  • 5. 关闭samza
  • 6. 开启samza
  • 7. 参考
  • |