Storm在Zookeeper上的操作和目录结构
Apache Storm是一个分布式实时计算系统,它的主要组件包括一个Nimbus(协调器)和一个Supervisor(工作节点),Storm使用Zookeeper来管理和协调各个组件之间的通信,本文将详细介绍Storm在Zookeeper上的操作和目录结构,帮助大家更好地理解和使用Storm。
Zookeeper的基本概念
Zookeeper是一个分布式协调服务,它可以为分布式应用程序提供统一的服务接口,Zookeeper的主要功能包括:维护配置信息、命名服务、提供分布式同步和锁机制等,在Storm中,Zookeeper主要用于以下几个方面:
1、集群管理:Storm集群中的各个组件(如Nimbus和Supervisor)需要与Zookeeper进行通信,以获取集群的状态信息、元数据等。
2、故障检测与恢复:当某个组件出现故障时,Zookeeper可以帮助其他组件检测到故障,并采取相应的措施进行恢复。
3、任务分配与监控:Storm可以将任务分配给不同的工作节点,并通过Zookeeper实现任务的监控和状态报告。
Storm在Zookeeper上的操作
1、启动与关闭Nimbus
要启动一个Storm集群,首先需要启动一个Nimbus,启动Nimbus时,需要向Zookeeper注册一个临时节点,用于存储Nimbus的元数据信息,启动一个单个Nimbus的命令如下:
./bin/nimbus.sh start target/storm-local-nimbus.jar --conf conf/storm-site.yaml --zookeeper zkhost:2181
--conf
参数指定了Storm的配置文件路径,--zookeeper
参数指定了Zookeeper的地址,启动成功后,Nimbus会在Zookeeper上创建一个名为/nimbuses
的临时节点,用于存储Nimbus的信息。
2、添加与删除工作节点
要将一个工作节点添加到Storm集群中,需要先将其注册到Zookeeper上,注册一个工作节点的命令如下:
./bin/supervisor.sh start target/storm-local-daemon.jar --conf conf/storm-site.yaml --zookeeper zkhost:2181
--conf
参数指定了Storm的配置文件路径,--zookeeper
参数指定了Zookeeper的地址,注册成功后,工作节点会在Zookeeper上创建一个名为/workers
的临时节点,用于存储工作节点的信息。
要从Storm集群中删除一个工作节点,只需停止该工作节点对应的Supervisor进程即可,停止一个工作节点的命令如下:
./bin/supervisor.sh stop target/storm-local-daemon.jar --conf conf/storm-site.yaml --zookeeper zkhost:2181
3、更新任务分片信息
当需要更新一个任务的分片信息时,可以通过向Zookeeper提交一个事务来实现,更新一个任务分片信息的命令如下:
创建一个Zookeeper客户端连接 $ zkCli.sh create /task_info task_id 10000 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info storm_version 1 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info component_id supervisor &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info topology_name mytopology &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info worker_slots 5 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info task_type stream &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info num_executors 5 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info priority high &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info max_tasks_per_worker 5 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info failover_timeout 60000 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info request_timeout 60000 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info sync_batch_size 1000 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info sync_flush_secs 10 &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info update_topology false &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info update_executor false &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info update_worker false &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info update_component false &> /dev/null && echo "success" || echo "failed" $ zkCli.sh set /task_info update_config false &> /dev/null && echo "success" || echo "failed" $ zkCli.sh setversion -c task_info task_id storm-local-1497764567767-0-50 task-version-1 storm-version storm-local storm://localhost:8080 worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-slots worker-socket storm://localhost:8080 num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executors num_executor
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/195194.html