`
AliKevin2011
  • 浏览: 117067 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

S4-多节点部署

阅读更多
AliKevin 写道

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

S4多节点(node)部署
前面几个章节我们主要描述介绍了S4细节上的开发,接下来的两章我们将在宏观上了感性认识一下S4多节点运行和与ZooKeeper的整合配置。
多节点运行的关键在于最clusters.xml文件的配置,那下面我们对查看一下单节点配置,并进行多节点配置和运行。
1.单节点配置
我们之前的运行的例子的配置是:
<config version="-1">
  <cluster name="s4" type="s4" mode="unicast">
    <node>
      <partition>0</partition>
      <machine>localhost</machine>
      <port>5077</port>
      <taskId>s4node-0</taskId>
    </node>
  </cluster>
<cluster name="client-adapter" type="s4" mode="unicast">
    <node>
      <partition>0</partition>
      <machine>localhost</machine> <!-- used only in red button mode -->
      <taskId>client-adapter-0</taskId>
      <port>6077</port>
    </node>
  </cluster>
</config>

配置中我们发现只有一个名字为s4类型为s4的集群配置,里面有1个节点。
2.多节点配置
<config version="-1">
  <cluster name="s4" type="s4" mode="unicast">
    <node>
      <partition>0</partition>
      <machine>localhost</machine>
      <port>5077</port>
      <taskId>s4node-0</taskId>
    </node>
    <node> <!-- this is the new node element -->
      <partition>1</partition>
      <machine>localhost</machine> <!-- used only in red button mode -->
      <port>5088</port>
      <taskId>s4node-1</taskId>
    </node>
  </cluster>
<cluster name="client-adapter" type="s4" mode="unicast">
    <node>
      <partition>0</partition>
      <machine>localhost</machine> <!-- used only in red button mode -->
      <taskId>client-adapter-0</taskId>
      <port>6077</port>
    </node>
  </cluster>
</config>

OK,我们在同一台机器上增加了一个新的节点.好了不用更改其他地方,S4就能进行多node的部署了。(似乎S4也满强大和灵活哦)
3.运行服务和测试
a.启动S4和Adapter
root@slave:/kevin/sellMoniter# rm -fr $S4_IMAGE/s4-apps/* 
root@slave:/kevin/sellMoniter# rm $S4_IMAGE/s4-core/logs/s4-core/*
root@slave:/kevin/sellMoniter# cp -r $S4_IMAGE/s4-example-apps/s4-example-speech02 $S4_IMAGE/s4-apps/
root@slave:/# $S4_IMAGE/scripts/start-s4.sh -r client-adapter 
appName=s4
dequeuer number: 6
[]
[/kevin/s4/build/s4-image/s4-apps/s4-example-speech02/s4-example-speech02-conf.xml]
Adding processing element with bean name eventCatcher, id eventCatcher
adding pe: io.s4.example.speech01.SentenceReceiverPE@c2ee15
Using ConMapPersister ..
Adding processing element with bean name rerouteSentencePE, id rerouteSentencePE
adding pe: io.s4.processor.ReroutePE@149105b
Using ConMapPersister ..
Adding processing element with bean name rerouteSpeechPE, id rerouteSpeechPE
adding pe: io.s4.processor.ReroutePE@196f4b5
Using ConMapPersister ..
Adding processing element with bean name sentenceJoinPE, id sentenceJoinPE
adding pe: io.s4.processor.JoinPE@1bfc4fc
Using ConMapPersister ..


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

如上信息证明启动成功。
b.运行测试类和查看日志
测试类
root@slave:/kevin/s4/build/s4-image/s4-core/logs/s4-core# head -20 $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 19 events
root@slave:/kevin/s4/build/s4-image/s4-core/logs/s4-core# 


服务端
.....
Sentence is 'It is altogether fitting and proper that we should do this.', location gettysburg, pa, us
Sentence is 'The brave men, living and dead who struggled here have consecrated it far above our poor power to add or detract.', location gettysburg, pa, us
Sentence is 'The world will little note nor long remember what we say here, but it can never forget what they did here.', location gettysburg, pa, us
Sentence is 'It is for us the living rather to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced.', location gettysburg, pa, us
.....


日志
root@slave:/kevin/s4/build/s4-image/s4-core/logs/s4-core# find $S4_IMAGE/s4-core/logs/s4-core -name "s4-core_*.log" -print -exec sh -c 'grep -i "count by" {} | tail -4' \;
/kevin/s4/build/s4-image/s4-core/logs/s4-core/s4-core_17078.log
/kevin/s4/build/s4-image/s4-core/logs/s4-core/s4-core_16917.log
2011-10-17 20:41:16,605 s4 INFO (PEContainer.java:362) Count by Sentence speechId: 4
2011-10-17 20:41:16,605 s4 INFO (PEContainer.java:362) Count by Speech id: 1
2011-10-17 20:41:16,605 s4 INFO (PEContainer.java:362) Count by SentenceJoined speechId: 4
2011-10-17 20:41:16,606 s4 INFO (PEContainer.java:362) Count by RawHighlight : 4
root@master:/kevin/s4/build/s4-image/s4-core/logs/s4-core# 

整体演示图如下:

这里没有显示出负载均衡,需要继续不同数据数据测试因为该例子采用的是Speechid和id作为key值,采用FNV1-64进行hash计算节点。:)

分享到:
评论

相关推荐

    程序员5个刷题网站-incubator-retired-s4:ApacheS4的镜像

    节点、测试、打包、部署和监控 S4 应用程序的工具集 文档 有关 S4 的最新信息,请访问我们的网站: 和我们的维基,在: 目前,wiki 包含最相关和最新的文档。 源代码可在此处获得: 要求 JDK 6 或更高版本 *nix 或 ...

    2017最新大数据架构师精英课程

    131_区域观察者实现和部署" s o7 p+ F& p/ a) ]& W/ ? 132_重写区域观察者的postPut和postScannext方法实现数据统一处理0 H) Q' Z- b; P# K 133_hbase的bulkload命令实现hbase集群之间数据的传输2 D6 d; F6 S8 x+ I/...

    漫谈大数据第四期-storm

    Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节 点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作...

    java开源包1

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包10

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包11

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包2

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包3

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包6

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包5

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包4

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包8

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包7

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包9

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包101

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    Java资源包01

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

Global site tag (gtag.js) - Google Analytics