Storm 相关技术总结
Storm作为一个开源的分布式实时流计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍。以此为基础,后续再深入了解Storm的内部实现细节。
1. Zookeeper集群
Zookeeper是一个针对大型分布式系统的可靠协调服务系统,其采用类似Unix文件系统树形层次结构的数据模型(如:/zoo/a,/zoo/b),节点内可存储少量数据(<1M,当节点存储大数据量时,实际应用中可能出现同步问题)。
Zookeepr的高可靠性服务是通过配置Zookeeper集群实现的,官方建议Zookeeper集群至少包含3个节点,每个节点上存储一份数据,主节点挂掉后可以重新选取一个节点作为主节点。只要保证集群内有一半以上的节点存活,集群就可对外提供服务。
Zookeeper支持的操作类型有:
(1)创建树节点znode;
(2)删除树节点znode;
(3)读取树节点znode的内容和其子节点的内容;
(4)当节点内容发生变化或子节点增删时触发消息通知更新消息;
(5)支持瞬时节点(EPHEMERAL),创建节点的进程退出后节点自动被删除。
Storm中使用Zookeeper主要用于Storm集群各节点的分布式协调工作,具体功能如下:
(1)存储客户端提供的topology任务信息,nimbus负责将任务分配信息写入Zookeeper,supervisor从Zookeeper上读取任务分配信息;
(2)存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态, 从而重启一些挂掉的worker;
(3)存储整个集群的所有状态信息和配置信息。
关于Storm在Zookeeper的详细目录结构,可参考这里。
2. Thrift服务框架
3. ZeroMQ消息队列
Storm中ZeroMQ的应用场景:Spout与Bolt、Bolt与Bolt之间tuple消息的传输。
4. Java序列化
Storm中Java序列化的应用场景:
5. 总结
上面只是对Storm中所使用到的Zookeeper集群、Thrift服务框架、ZeroMQ消息队列、Java序列化技术及其在Storm中的应用情况的简单介绍,后续再进一步结合Storm的源码进行深入分析。
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2014-04-27 22:18:11
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: Storm 相关技术总结 (米扑博客)