S4-与ZooKeeper结合部署

部署运行你感兴趣的模型镜像
[quote="AliKevin"]
本系列文章不涉及过多的S4的理论内容,因为s4论文中描述相当清楚(我认为我实在是说的不会比论文中更清楚了:)呵呵),论文信息请看论文[url]http://dl.iteye.com/topics/download/704e5924-0dd8-34df-b44f-2efbc91de071[/url][/quote]

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

[b]一、ZooKeeper的简单部署[/b]
我们这里只是简单介绍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,执行如下命令:
[code]
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)
[code]
c.启动ZooKeeper实例
[code]
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
....
....
[code]

d.验证ZooKeeper的实例启动情况
[code]
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]
[code]
如上显示证明我们已经启动的ZooKeeper实例,当前实例说管理的节点是跟目录下有个zookeeper节点。

[b]二、将S4节点告知ZooKeeper[/b]

a.将S4集群信息告知ZooKeeper
[code]
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:~#
[code]
b.检查ZooKeeper接管S4后的节点情况
[code]
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]
[code]

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

[b]三、S4实例验证[/b]

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

b.执行测试和查看服务端输出
[code]
测试类:
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
[code]

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

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,我现在需要给用户介绍Kafka、JDK和Zookeeper的安装部署步骤。首先,我得确认自己对这些组件的理解是否正确,以及它们之间的关系。Kafka是一个分布式流处理平台,依赖Zookeeper进行元数据管理和协调,而JDK是运行Java应用的基础,所以安装Kafka前需要先安装JDK和Zookeeper。 接下来,我需要分步骤整理安装流程。首先应该是JDK的安装,用户需要检查是否已经安装了Java,如果没有的话,要下载合适的版本,配置环境变量。然后是Zookeeper的安装,包括下载、配置、启动和验证。最后是Kafka的安装,同样需要下载、配置、启动,并进行测试。 在整理过程中,需要注意各个组件的版本兼容性。比如Kafka的不同版本可能对Zookeeper有不同要求,尤其是新版本Kafka可能不再依赖Zookeeper,但用户这里提到的是Kafka-JDK,可能还是需要传统搭配。因此,应该选择一个兼容的组合,例如Kafka 2.13-3.5.1和Zookeeper 3.8.3,JDK 11或17,确保版本匹配。 另外,配置文件的细节需要准确。比如Zookeeper的dataDir和clientPort,Kafka的server.properties中的zookeeper.connect、listeners等参数。这些配置如果有误会导致服务无法启动,所以必须仔细检查。 还要考虑用户可能是在Linux环境下部署,所以步骤中的命令和路径都是基于Linux系统的。例如,使用wget下载,tar解压,systemd服务配置等。如果用户使用其他系统,可能需要调整,但问题中没有特别说明,所以默认按Linux处理。 在启动服务部分,Zookeeper和Kafka都需要以后台服务运行,可能需要编写systemd的unit文件,或者使用nohup命令。这部分需要详细说明,确保用户能够正确启动并验证服务状态。 测试部分,需要指导用户如何创建主题、发送和接收消息,以验证Kafka是否正常工作。这包括使用Kafka自带的命令行工具,如kafka-topics.sh、kafka-console-producer.sh和kafka-console-consumer.sh。 可能还需要提醒用户注意防火墙设置,确保端口开放,比如Zookeeper的2181,Kafka的9092。另外,数据目录的权限问题,避免因权限不足导致服务启动失败。 总结下来,步骤应该分为三个主要部分:JDK安装、Zookeeper安装、Kafka安装,每个部分包含下载、配置、启动和验证。同时,需要给出具体的命令和配置示例,确保用户能够一步步执行。最后,测试整个环境是否正常,确保安装成功。</think>以下是Kafka、JDKZookeeper的安装部署步骤详解: --- ### 一、JDK安装部署 **1. 检查现有Java环境** ```bash java -version ``` 若无Java环境则继续安装 **2. 下载JDK** 推荐JDK 11或17(以JDK17为例): ```bash wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz ``` **3. 解压安装** ```bash tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/ ``` **4. 配置环境变量** ```bash vim /etc/profile ``` 添加以下内容: ```bash export JAVA_HOME=/usr/local/jdk-17 export PATH=$JAVA_HOME/bin:$PATH ``` 使配置生效: ```bash source /etc/profile ``` --- ### 二、Zookeeper安装部署 **1. 下载安装包** ```bash wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz ``` **2. 解压安装** ```bash tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/ cd /opt/apache-zookeeper-3.8.3-bin ``` **3. 配置zoo.cfg** ```bash cp conf/zoo_sample.cfg conf/zoo.cfg vim conf/zoo.cfg ``` 修改关键配置: ```properties dataDir=/var/lib/zookeeper clientPort=2181 ``` **4. 启动服务** ```bash bin/zkServer.sh start ``` 验证状态: ```bash bin/zkServer.sh status ``` --- ### 三、Kafka安装部署 **1. 下载安装包** ```bash wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz ``` **2. 解压安装** ```bash tar -zxvf kafka_2.13-3.5.1.tgz -C /opt/ cd /opt/kafka_2.13-3.5.1 ``` **3. 修改配置文件** ```bash vim config/server.properties ``` 关键配置项: ```properties broker.id=0 listeners=PLAINTEXT://:9092 log.dirs=/tmp/kafka-logs zookeeper.connect=localhost:2181 ``` **4. 启动Kafka** ```bash bin/kafka-server-start.sh -daemon config/server.properties ``` **5. 验证服务** 创建测试主题: ```bash bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 ``` 查看主题列表: ```bash bin/kafka-topics.sh --list --bootstrap-server localhost:9092 ``` --- ### 四、服务管理(Systemd配置) **1. Zookeeper服务文件** ```bash vim /etc/systemd/system/zookeeper.service ``` 内容示例: ```ini [Unit] Description=Zookeeper Service [Service] ExecStart=/opt/apache-zookeeper-3.8.3-bin/bin/zkServer.sh start-foreground Restart=always [Install] WantedBy=multi-user.target ``` **2. Kafka服务文件** ```bash vim /etc/systemd/system/kafka.service ``` 内容示例: ```ini [Unit] Requires=zookeeper.service After=zookeeper.service [Service] ExecStart=/opt/kafka_2.13-3.5.1/bin/kafka-server-start.sh /opt/kafka_2.13-3.5.1/config/server.properties Restart=on-failure [Install] WantedBy=multi-user.target ``` --- ### 五、注意事项 1. 版本兼容性:Kafka 3.x建议搭配Zookeeper 3.5+ 2. 生产环境需配置: - 多节点集群部署 - 数据目录持久化存储 - 安全认证机制(SASL/SSL) 3. 端口开放: - Zookeeper: 2181, 2888, 3888 - Kafka: 9092 4. 日志管理:建议修改log.dirs到独立磁盘分区 可通过`jps`命令验证Java进程是否包含: - QuorumPeerMain(Zookeeper- Kafka(Kafka Broker)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值