分享

Storm 0.9.3开始支持与HDFS、HBase的集成

desehawk 发表于 2015-8-13 19:16:32 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 16807
本帖最后由 desehawk 于 2015-8-13 19:20 编辑

问题导读

1.Storm拓扑是否可以实时地向HBase写入数据及查询?
2.Apache Storm的HDFS集成包含哪些内容?





Apache Storm 0.9.3发布 ,虽然只是一个维护版本,但它不仅改进了与 Apache Kafka 的集成,还提供了与HDFS、HBase的集成,并减少了依赖冲突。此外,它还修复了100多个Bug,使其稳定性更好。具体改进如下:
  • 改进与Kafka的集成——Apache Strom自0.9.2-incubating版本以来就支持使用Apache Kafka作为流数据源。0.9.3版本进行了若干改进,其中包括向一个或多个Kafka集群或Topic写入数据。现在,Storm用户可以将Kafka用作流数据的源和目的地。这一点考虑了拓扑间通信、拓扑链、基于spout/bolt的拓扑与基于Trident的数据流之间的结合以及与支持从Kafka获取数据的任何外部系统的集成。更多信息请查看 storm-kafka项目文档
  • HDFS集成——Apache Storm的HDFS集成包含多个bolt和Trident state实现,允许拓扑开发人员从任何Storm拓扑向HDFS写入数据。更多信息请查看 storm-hdfs项目文档
  • HBase集成——Apache Storm的HBase集成包含若干组件,允许Storm拓扑实时地向HBase写入数据及查询,并允许用户将HBase中的数据资产作为流数据查询,以及将HBase用于保存流计算结果。更多信息请查看 storm-hbase项目文档
  • 减少依赖冲突——在Storm的先前版本中,用户拓扑的依赖项经常与Storm使用的库相冲突。Storm 0.9.3更改了多个经常导致冲突的依赖包的存放位置,详细信息请查看 发布说明
  • 改进多语言——Storm 0.9.3包含一个新的 Node.js 多语言实现,允许开发人员使用JavaScript编写spouts和bolts。此外,多语言协议的健壮性和错误处理能力也得到了很大的提升。这也导致多语言API发生了向后不兼容的变化。因此,在升级之前,使用了多语言拓扑的用户应查看Python、Ruby和JavaScript的多语言示例以确定其影响。
感兴趣的读者可以从 这里 下载。更详细的信息请查看 更新日志


#####################
















已有(5)人评论

跳转到指定楼层
desehawk 发表于 2015-8-13 19:17:19
补充:

Storm输出到hdfs的各种方案

1)方案较多,从数据收集角度分为:NFS收集、Scribe/Flume等收集、不收集(多个Bolt并行写入),从数据写入角度分为:分段写入本地文件后Put、Fuse-HDFS写入、dfsCLient写入,收集和写入可以组合为多种方案;显然NFS在收集方面无优势,可以排除;另外Fuse-HDFS方案依赖于os fuse的支持,不适合于数据不收集的情况;剩余的5种组合适合不同的业务场景。


2)收集写入的最大优点是:多个topology多Bolt数据流合并分拆控制灵活,写入客户端部署维护方便;但同时,由于引入了storm控制之外的新的数据处理环节,增加了transactional topology控制的复杂度,需要收集系统特别的支持replay,使得该方案并不太适合正确性要求较高的应用,当然对于数据丢失可以容忍的场景该方案是OK的。


3) 最后看一下Bolt直接写入的情况,这种方案结构最简单,但所有worker节点都要配置为写入客户端可执行的环境(特别是权限),各个topology的写入无法合并处理。另外dfsClient写入加上缓存优化会比Put方式更易于控制及部署。


4)写入环节需要考虑的包括数据序列化格式、数据分区控制、性能优化(cache)、事务控制(正确性保证)等具体问题,框架性的通用写入模块还需要解决较多系统结构方面的问题,如Kryo序列化框架支持等等。

通用的Bolt直接写入hdfs框架更符合分层规范,除了实现稍微麻烦一些外无明显问题,但在某些特殊的项目中其他方案可能会有更好的表现!




回复

使用道具 举报

a_zhen 发表于 2015-8-14 15:50:41
非常不错啊,见贤思齐啊,渴望
回复

使用道具 举报

benwen 发表于 2015-9-17 20:42:19
楼主,您好,请问下,我写了一个wordcount的例子,放在集群上面跑,集群是5个节点,输出结果写入到HDFS上面,写过写到HDFS上面的数据是5份,而且貌似是一个节点一份,请问下楼主如何才能实现分布式呢?是不是还需要做其他的设置?
回复

使用道具 举报

恋枫缩影 发表于 2015-10-27 10:41:56
不错的文章!
回复

使用道具 举报

OCG 发表于 2015-12-3 15:13:53
刚好在研究kafka to storm  不错的文章
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条