文档章节

storm从入门到放弃教程(1)--storm初识

j
 java_龙
发布于 2017/03/31 11:21
字数 1419
阅读 1000
收藏 13

 概述   

    工作中要使用storm,突发奇想,准备开始写个人博客,也是第一次写,所以会有很多不足之处,欢迎大家批评指正!!工作使用场景:某电商公司,物流作业发货完毕后,要实时的更新订单以及物流信息.

学习环境:

    window10;     idea;     jdk1.8;     storm 1.1.0(现在最新稳定版)

storm简介

 注意

     在这个版本( 1.1.0 )中,项目管理包名由" backtype.storm "改为了" org.apache.storm ",所以本版本的拓扑就无法在 Storm 1.0.0 版本运行, 如果需要向后兼容,可以通过以下配置:

client.jartransformer.class: "org.apache.storm.hack.StormShadeTransformer" 

 将以上配置添加到提交了拓扑的服务器配置中,就可以兼容旧版本了!

初识

     storm是一个开源免费的分布式实时计算系统,storm可以可靠地处理无限的数据流(大数据),可以实时的处理 Hadoop 所处理的事项。storm有很多优势:

  1.  它使用很简单,多种语言均可以使用它,它也有很多使用者;
  2. 它处理数据非常快,基本每秒可以处理一百万组单元数据;
  3. 它伸缩性很强,容错性很好,可以保证数据一直被处理
  4. 它很容易设置以及操作
  5. 它有很多使用场景:
  • 实时分析
  • 机器算法
  • 持续计算
  • 分布式远程服务调用
  • 数据仓库技术
  • 还有更多功能待挖掘

storm将会集成消息与数据库技术,storm拓扑在数据流和更复杂的处理流处理中,可以实现每个流计算的需要。

学习步骤

  • storm基础知识
  • storm基层工具
  • Trident接口
  • storm  环境搭建署
  • storm 依赖
  • storm 调试
  • storm 外部集成的框架

理解storm

下图可以很清楚的理解storm的工作流程:

     上图用水管的水流代表程序的数据流, 首先有一个出水口们( Spouts ),程序控制水的流向,流到一个处理节点( Bolt ),就会进行一种处理,继续控制水流到下一处理节点(Bolt )。

storm特性

简单方便

     storm拥有简单方便的API,当用storm编程时,开发者可以很巧妙的处理和转换元组的数据流,一个元组就是一个有名字的列表中的一个值 ,元组里面可以包含任何对象或者类型,当你想用某一个类型的时候,storm可以很轻松为那个类型序列化。

     在storm中仅有三个抽象的概念: spouts(发射器), bolts(闪电),topologies (拓扑)。这三个概念在下一篇博文中,将会详细介绍。

storm项目中包含了很多简单的demo,如有兴趣的可以down源码,学习研究,一起学习进步

可伸缩

     storm拓扑是并行的运行在集群当中,拓扑不同的部分可以通过调整他们的并行性进行单独扩展,在storm客户端通过 rebalance  命令可以动态调整运行中的拓扑的并行(平衡度),storm与生俱来的并行性意味着它可以低延迟的处理大吞吐量的消息,通过测试得知,在处理器: 2x Intel E5645@2.4Ghz   ,内存:24G 的服务器环境下,storm可以完成 每节点一百万每秒100字节的信息。

高容错(自救)

     storm有很高的容错性,当处理任务死亡时,storm将会自动重新启动他们,如果一个节点服务器死亡时,storm将会自动把处理任务在其他节点服务器运行。

     storm的守护进程、矢量图和监测者均被设计为无状态模式和快速死亡,所以,当他们死亡时,他们会自动重启,就像什么都没发生过似的,这意味着如果你强制实行 kill -9命令杀死storm进程,也不会影响你的拓扑正常运行。

高可用(零容错)

     storm可以保证每个元组均被正常执行,storm的核心机制之一,就是它可以追踪到每一个元组关系,这是保证每个元组不丢失的有效方法。

     storm提供了一个“至少一次”处理的机制,当使用一个队列系统时,你将使用同一个机制,当他们失败时,消息就会被重新发送。

     Trident是storm更高级别的抽象语义,它可以保证消息只被执行一次。

跨语言

     storm可以在任何编程语言中使用,storm的核心是通过Thrift规范来定义和提交拓扑,Thrift是可以跨语言调用,所以拓扑也可以任何编程语言中定义或者提交。

     同样的, spouts(发射器)和bolts(闪电) 也可以在任何编程语言中定义或者提交,无虚拟机的spouts(发射器)和bolts(闪电)的输入/输出将会基于json的基础协议进行通讯。通讯适配器用 Ruby, Python, Javascript, Perl 这些语言的协议进行了实现。

集群易搭建

     storm只需要很少的配置和设置就可以运行起来,storm生产配置开箱即用,EC2可以一键发布、配置storm项目集群。另外,storm发布的时候操作很简单,storm的设计很强壮,集群可以日复一日的运行下去。

免费开源

        storm基于 Apache License, Version 2.0   开源

    

 

    

© 著作权归作者所有

j
粉丝 73
博文 102
码字总数 138333
作品 0
成都
程序员
私信 提问
加载中

评论(2)

j
java_龙 博主

引用来自“长颈鹿CTZ”的评论

题目起的很逗比
内容会很精彩😊
长颈鹿CTZ
长颈鹿CTZ
题目起的很逗比
windows 安装 storm 及 eclipse 调试 TopN 实例

一:安装JDK 下载地址:地址一 地址二 配置Java环境变量 JAVAHOME、Path、CLASSPATH三个值分别为(按照自己安装状况设置,此处供参考): D:javajdk1.8 %JAVAHOME%/bin;%JAVAHOME%/jre/bin ....

大数据之路
2012/06/08
345
1
Twitter Storm入门

.通过学习tutorial了解storm的整体架构(https://github.com/nathanmarz/storm/wiki/Tutorial) 通过学习Concepts了解storm的关键概念(https://github.com/nathanmarz/storm/wiki/Concepts......

加油_张
2013/09/14
353
0
使用 Twitter Storm 处理实时的大数据

使用 Twitter Storm 处理实时的大数据 流式处理大数据简介 IBM DW/M. Tim Jones, 独立作家, 顾问 简介: Storm 是一个开源的、大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与...

IBMdW
2012/12/06
6.4K
3
Apache Storm 0.9.6/0.10.0 发布

Apache Storm 0.10.0 发布,此版本是个稳定版本,相比之前的 Beta 版本主要包括 bug 修复和改进: STORM-1108: Fix NPE in simulated time STORM-1106: Netty should not limit attempts to...

oschina
2015/11/06
4.7K
8
Apache Slider + Storm

Apache Slider + Storm 系统环境 安装如下组件,部署可用环境 JDK 1.7.0_79 Apache Zookeeper 3.4.* Apache Zookeeper Apache Hadoop 2.6.* Apache Hadoop Apache Storm 0.9.4 Apache Storm......

Yulong_
2016/09/21
415
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部