设为首页 收藏本站
查看: 834|回复: 0

[经验分享] S4-与ZooKeeper结合部署

[复制链接]

尚未签到

发表于 2017-4-19 07:46:19 | 显示全部楼层 |阅读模式
AliKevin 写道

   本系列文章不涉及过多的S4的理论内容,因为s4论文中描述相当清楚(我认为我实在是说的不会比论文中更清楚了:)呵呵),论文信息请看论文http://dl.iteye.com/topics/download/704e5924-0dd8-34df-b44f-2efbc91de071

   
    S4的的运行模式有两种Static和Dynamic,期之前我们所做的学习完全基于s4的static模式。static模式不能对s4的集群进行智能的负载均衡,这对于分布式的大数量计算能力是一个不好的消息哦:),幸运的是S4可以借助现有的ZooKeeper智能的管理S4的集群:),接下来我们看看如何利用zookeeper和s4结合部署。

一、ZooKeeper的简单部署
    我们这里只是简单介绍s4与ZooKeeper的结合,不涉及到ZooKeeper的集群,这里试只是单节点启动ZooKeeper。
a.[下载ZooKeeper|http://labs.renren.com/apache-mirror//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz]
b.安装ZooKeeper
将下载的ZooKeeper解压到你的安装目录,这里目录是/kevin/zookeeper-3.3.3,执行如下命令:

root@master:/# cd /kevin/zookeeper-3.3.3/conf
root@master:/kevin/zookeeper-3.3.3/conf# cp zoo.cfg.bak zoo.cfg
root@master:/kevin/zookeeper-3.3.3/conf# vi zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/kevin/zookeeper-3.3.3/data ---> 修改到你的指定目录
# the port at which the clients will connect
clientPort=2181--->设置你要监听的端口(大于1024)

c.启动ZooKeeper实例

root@master:/kevin/zookeeper-3.3.3/conf# cd /kevin/zookeeper-3.3.3/bin/
root@master:/kevin/zookeeper-3.3.3/bin# ./zkServer.sh start
root@master:/kevin/zookeeper-3.3.3/bin# ./zkServer.sh start
JMX enabled by default
Using config: /kevin/zookeeper-3.3.3/bin/../conf/zoo.cfg
Starting zookeeper ...
STARTED
....
....


d.验证ZooKeeper的实例启动情况

root@master:/kevin/zookeeper-3.3.3/bin# cd /
root@master:/# cd /kevin/zookeeper-3.3.3/bin
root@master:/kevin/zookeeper-3.3.3/bin# ./zkCli.sh -server localhost:2181
Connecting to localhost:2181
...
...
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
[zk: localhost:2181(CONNECTED) 29] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 30]

如上显示证明我们已经启动的ZooKeeper实例,当前实例说管理的节点是跟目录下有个zookeeper节点。

二、将S4节点告知ZooKeeper

a.将S4集群信息告知ZooKeeper

root@master:~# $S4_IMAGE/scripts/task-setup.sh localhost:2181 clean setup $S4_IMAGE/s4-core/conf/dynamic/clusters.xml
RUNNING /usr/jdk1.6.0_26/bin/java -classpath /kevin/s4/build/s4-image/s4-core/lib/gson-1.6.jar:/kevin/s4/build/s4-image/s4-core/lib/junit-3.8.1.jar:/kevin/s4/build/s4-image/s4-core/lib/spring-2.5.6.jar:/kevin/s4/build/s4-image/s4-core/lib/S4WordCount.jar:/kevin/s4/build/s4-image/s4-core/lib/jakarta-regexp-1.4.jar:/kevin/s4/build/s4-image/s4-core/lib/bcel-5.2.jar:/kevin/s4/build/s4-image/s4-core/lib/log4j-1.2.15.jar:/kevin/s4/build/s4-image/s4-core/lib/kryo-1.01.jar:/kevin/s4/build/s4-image/s4-core/lib/json-20090211.jar:/kevin/s4/build/s4-image/s4-core/lib/s4-driver-0.3.0.jar:/kevin/s4/build/s4-image/s4-core/lib/mail-1.4.jar:/kevin/s4/build/s4-image/s4-core/lib/activation-1.1.jar:/kevin/s4/build/s4-image/s4-core/lib/flexjson-2.1.jar:/kevin/s4/build/s4-image/s4-core/lib/minlog-1.2.jar:/kevin/s4/build/s4-image/s4-core/lib/zookeeper-3.3.1.jar:/kevin/s4/build/s4-image/s4-core/lib/s4-example-driver-0.3.0.jar:/kevin/s4/build/s4-image/s4-core/lib/asm-3.2.jar:/kevin/s4/build/s4-image/s4-core/lib/commons-cli-1.2.jar:/kevin/s4/build/s4-image/s4-core/lib/commons-jexl-1.1.jar:/kevin/s4/build/s4-image/s4-core/lib/jline-0.9.94.jar:/kevin/s4/build/s4-image/s4-core/lib/s4-core-0.3.0.jar:/kevin/s4/build/s4-image/s4-core/lib/s4-comm-0.3.0.jar:/kevin/s4/build/s4-image/s4-core/lib/reflectasm-0.8.jar:/kevin/s4/build/s4-image/s4-core/lib/commons-logging-1.1.1.jar: io.s4.comm.tools.TaskSetupApp localhost:2181 clean setup /kevin/s4/build/s4-image/s4-core/conf/dynamic/clusters.xml
log4j:WARN Continuable parsing error 1 and column 70
log4j:WARN Document root element "log4j:configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 1 and column 70
log4j:WARN Document is invalid: no grammar found.
log4j:WARN No appenders could be found for logger (io.s4.comm.core.DefaultWatcher).
log4j:WARN Please initialize the log4j system properly.
sTimeout=null
sTimeout=null
root@master:~#

b.检查ZooKeeper接管S4后的节点情况

root@master:/kevin/zookeeper-3.3.3/bin# ./zkCli.sh -server localhost:2181
Connecting to localhost:2181
...
...
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[client-adapter, zookeeper, s4]
[zk: localhost:2181(CONNECTED) 1] ls /s4/s4
[process, task]
[zk: localhost:2181(CONNECTED) 5] ls /client-adapter/s4
[process, task]
[zk: localhost:2181(CONNECTED) 7]                  


如上信息证明我们已经将S4的集群信息告知给ZooKeeper了:)

三、S4实例验证

    与ZooKeeper结合要以Dynamic方式启动S4,故要修改S4的启动sh.当然修改方式有好多种(命令参数或硬性修改)这里只强调是要Dynamic模式:)
a.启动S4和Adapdter

root@slave:~# $S4_IMAGE/scripts/start-s4.sh dynamic -r client-adapter
...

appName=s4
dequeuer number: 6
sTimeout=5000
[]
[/kevin/s4/build/s4-image/s4-apps/s4-example-speech02/s4-example-speech02-conf.xml]
sTimeout=5000
sTimeout=5000
Adding processing element with bean name eventCatcher, id eventCatcher
adding pe: io.s4.example.speech01.SentenceReceiverPE@d58939
Using ConMapPersister ..
Adding processing element with bean name rerouteSentencePE, id rerouteSentencePE
adding pe: io.s4.processor.ReroutePE@93df2c
Using ConMapPersister ..
Adding processing element with bean name rerouteSpeechPE, id rerouteSpeechPE
adding pe: io.s4.processor.ReroutePE@3a1834
Using ConMapPersister ..
Adding processing element with bean name sentenceJoinPE, id sentenceJoinPE
adding pe: io.s4.processor.JoinPE@190a0d6
Using ConMapPersister ..


root@slave:~# $S4_IMAGE/scripts/run-client-adapter.sh -s client-adapter -g s4 -d $S4_IMAGE/s4-core/conf/dynamic/client-stub-conf.xml dynamic
...
appName=client-adapter
dequeuer number: 12
sTimeout=null
Adding InputStub genericStub
Adding OutputStub genericStub
sTimeout=null


b.执行测试和查看服务端输出

测试类:
root@slave:~# head -10 $S4_IMAGE/s4-example-testinput/speeches.txt | sh $S4_IMAGE/s4-tools-loadgenerator/scripts/generate-load.sh -r 2 -a localhost:2334 -d 1500 -
[: 27: ==: unexpected operator
[: 57: xlocalhost:2334: unexpected operator
[: 61: x2: unexpected operator
[: 65: x1500: unexpected operator
[: 69: x: unexpected operator
{0=io.s4.tools.loadgenerator.LoadGenerator$EventTypeInfo@60420f, 1=io.s4.tools.loadgenerator.LoadGenerator$EventTypeInfo@19106c7, 2=io.s4.tools.loadgenerator.LoadGenerator$EventTypeInfo@540408}
Emitted 9 events
服务端:
Using ConMapPersister ..
Sentence is 'Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.', location gettysburg, pa, us
Sentence is 'Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.', location gettysburg, pa, us
Sentence is 'Now we are engaged in a great civil war, testing whether that nation or any nation so conceived and so dedicated can long endure.', location gettysburg, pa, us
Sentence is 'Now we are engaged in a great civil war, testing whether that nation or any nation so conceived and so dedicated can long endure.', location gettysburg, pa, us
Sentence is 'We are met on a great battlefield of that war.', location gettysburg, pa, us
Sentence is 'We are met on a great battlefield of that war.', location gettysburg, pa, us
Sentence is 'We have come to dedicate a portion of that field as a final resting-place for those who here gave their lives that that nation might live.', location gettysburg, pa, us
Sentence is 'We have come to dedicate a portion of that field as a final resting-place for those who here gave their lives that that nation might live.', location gettysburg, pa, us


OK,如上信息证明我们联合ZooKeeper部署成功了,在使用的角度对客户是透明的,我们感性上感觉不到ZooKeeper的存在,而在S4内部则发生了根本的变化,当static模式时候S4的事件流处理由StaticTaskManager处理,而当我们以
dynamic 模式结合ZooKeeper运行S4时候,S4内部会应用ZkTaskManager管理事件流的处理。ZkTaskManager会利用ZooKeeper强大的集群管理能力,实现负载均衡等高效率的集群管理!:)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366080-1-1.html 上篇帖子: windows下安装ZOOKEEPER失败 下篇帖子: zookeeper实现分布式锁
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表