当前位置: 首页 > 编程日记 > 正文

【大数据实时计算框架】Storm框架

一、大数据实时计算框架

1、什么是实时计算?流式计算?

(一)什么是Storm?
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比 Hadoop 用于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

举例:自来水厂处理自来水

2、对比:离线计算和流式计算

① 离线计算

  离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示

  代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算、Hive

② 流式计算

  流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示

  代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。

 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果

① StormHadoop的区别

Storm用于实时计算

Hadoop用于离线计算

Storm处理的数据保存在内存中,源源不断

Hadoop处理的数据保存在文件系统中,一批一批

Storm的数据通过网络传输进来

Hadoop的数据保存在磁盘中

Storm与Hadoop的编程模型相似

(*)离线计算:MapReduce和Spark Core, 数据的批量处理(Sqoop-->HDFS-->MR(SparkCore)--->HDFS)
(*)流式计算:Storm和Spark Streaming, 数据的实时性 (Flume-->Kafka-->Storm(SparkStreaming)-->Redis )

3、常见的实时计算系统

Apache Storm http://storm.apache.org/  
Spark Streaming http://spark.apache.org/streaming/  
阿里巴巴JStorm http://www.jstorm.io/ Alibaba JStorm is an enterprise fast and stable streaming process engine.
Apache Flink http://flink.apache.org/ 第三代大数据处理引擎,既可以进行离线计算,也可以进行流式计算

 

 

 

 

二、Apache Storm体系结构

  • Nimbus:负责资源分配和任务调度。
  • Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。
  • Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
  • Executor:Storm 0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
  • Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。

Storm也是主从结构,存在单点故障问题  ----> 实现HA(借助ZooKeeper)

Storm的运行机制

  • 整个处理流程的组织协调不用用户去关心,用户只需要去定义每一个步骤中的具体业务处理逻辑
  • 具体执行任务的角色是Worker,Worker执行任务时具体的行为则有我们定义的业务逻辑决定

三、安装和配置Apache Storm_伪分布模式

  • 1-bigdata111安装Strom并设置环境变量

  [前提]:安装ZooKeeper并且启动zkServer.sh start

  1. 下载storm包并传到~/tools目录:

    apache-storm-1.0.3.tar.gz

  2. 进入~/tools目录,解压安装: #tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
  3. 设置storm环境变量:#vi ~/.bash_profile

添加如下信息:

## ZK 3.4.10 ##确保ZK已经安装
ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
export ZOOKEEPER_HOME

PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH

## Storm ###
STORM_HOME=/root/training/apache-storm-1.0.3
export STORM_HOME

PATH=$STORM_HOME/bin:$PATH
export PATH

    4.环境变量生效:#source ~/.bash_profile

  • 2-配置Storm的伪分布模式_1台机器

  bigdata111编辑配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml  [注意:_ 和:配置信息和后面的信息中间有一个空格,如果没有配置会出错,切记]

  storm.zookeeper.servers:
    -  "bigdata111"

  nimbus.seeds:  ["bigdata111"]

  storm.local.dir: "/root/training/apache-storm-1.0.3/tmp"

  supervisor.slots.ports:
    -  6700
    -  6701
    -  6702
    -  6703

  

  • 3.启动主从节点和UI

  在bigdata111上启动命令:

启动主节点#storm nimbus &
启动从节点#storm supervisor &
启动UI#storm ui &
WED访问地址http://ip:8080

 

 

 

 

WEB信息如下:可以看到只有1个主节点(nimbus),1个从节点(supervisor),4个worker(slots)

 

四、安装和配置Apache Storm_全分布模式(3台机器)

简单的全分布模式至少需要3台机器,1主2从。这里使用bigdata112,bigdata113,bigdata114作为【主从从】环境。

  1.前提:3台机器zookeeper集群环境配置完毕并启动【参考文章:zookeeper配置部分】

下面是实际环境:leader:bigdata114,follower:bigdata112,bigdata113.

  2.在bigdata112,bigdata113,bigdata114全部机器上面安装storm并配置环境变量。

  • 下载storm包并传到~/tools目录:

    apache-storm-1.0.3.tar.gz

  • 进入~/tools目录,解压安装: #tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
  • 设置storm环境变量:#vi ~/.bash_profile

添加如下信息:

## Storm ###
STORM_HOME=/root/training/apache-storm-1.0.3
export STORM_HOME

PATH=$STORM_HOME/bin:$PATH
export PATH

  • 环境变量生效:#source ~/.bash_profile

  3.bigdata112主节点配置并复制到从节点bigdata113,bigdata114

  • 编辑bigdata112的storm配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml  [注意:_ 和:配置信息和后面的信息中间有一个空格,如果没有配置会出错,切记]

storm.zookeeper.servers:
  - "bigdata112"
  - "bigdata113"
  - "bigdata114"

nimbus.seeds: ["bigdata112"]
storm.local.dir: "/root/training/apache-storm-1.0.3/tmp"
supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

  • 将配置好的storm复制到其他节点

#scp -r apache-storm-1.0.3/ root@bigdata113:/root/training/
#scp -r apache-storm-1.0.3/ root@bigdata114:/root/training/

  • 启动主从节点
bigdata112主节点开启

#storm nimbus &

#storm ui & 

bigdata113从节点开启#storm supervisor &
bigdata114从节点开启#storm supervisor &

 

 

 

 

  • 访问主节点的WEB信息:http://192.168.205.112:8080 

 

五、安装和配置Apache Storm_HA

HA的环境基于上面的集群配置,将bigdata113作为bigdata112的备份主节点。因此HA的实际环境信息:

主节点bigdata112
主节点_备份bigdata113
从节点1bigdata113
从节点2bigdata114

 

 

 

 

  0.关闭集群环境进程

   HA环境是基于集群环境的配置,在配置HA之前,将集群环境的进程全部关闭。查看主从节点的进程,关闭如下进程:

    主节点关闭:nimbus

    从节点关闭:supervisor

  1.编辑bigdata112主节点的配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml 

增加一个主节点:nimbus.seeds: ["bigdata112", "bigdata113"]

启用Event Logger 可以查看处理的数据:"topology.eventlogger.executors": 1

  2.复制主节点配置到从节点bigdata113,bigdata114

  将配置好的storm复制到其他节点

  #scp -r apache-storm-1.0.3/ root@bigdata113:/root/training/
  #scp -r apache-storm-1.0.3/ root@bigdata114:/root/training/

  启动主从节点

bigdata112主节点开启

#storm nimbus &

#storm ui & 

#storm logviewer &

bigdata113主节点开启

#storm nimbus &

#storm ui & 

#storm logviewer &

bigdata113从节点开启

#storm supervisor &

bigdata114从节点开启

#storm supervisor &

#storm logviewer &

 

 

 

 

 

 

 

 

 

 

 

启动后主从节点的进程信息如下:

bigdata112_4进程:nimbus,core,QuorumPeerMain(zookeeper进程),logviewer

bigdata113_5进程:nimbus,supervisor,core,QuorumPeerMain(zookeeper进程),logviewer

bigdata114_3进程:supervisor,QuorumPeerMain(zookeeper进程),logviewer

  3.查看主节点的WEB

主节点bigdata112 WEB: http://bigdata112:8080

主节点bigdata113 WEB: http://bigdata113:8080

 

 

   4.演示HA功能:关闭bigdata112主节点的nimbus进程,查看bigdata113是否成为主节点:

》查看bigdata112 WEB此时显示2个主节点,一个是leader,一个是not a leader。

 

》查看bigdata112的进程并关闭nimbus进程:

 

》再次查看WEB页面:此时bigdata切换成主节点

》再次启动bigdata112的nimbus进程,查看WEB:bigdata113任然为leader,bigdata112此时not a leader。

 

六、Apache Storm_HA Demo演示Wordcount计数器

  1.bigdata112主节点storm自带例子查看

Storm自带了很多的例子可供我们进行实时计算演示,Example位置:/root/training/apache-storm-1.0.3/examples/storm-starter/storm-starter-topologies-1.0.3.jar。

bigdata112:

查看例子中的readme介绍用法:cat README.markdown

  2.运行jar

运行:storm jar ***.jar 任务Topology的类 别名
#storm jar storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology MyWCTopology

 

  3.WEB查看topology任务

任务在没有人为打断的情况下会一直运行,此时查看主节点的WEB,显示的任务信息:参考storm的体系架构:worker=slots,一个worker可以包含多个executors,executors是单线程的,所以executors=tasks.

  4.查看topology任务的组成

》点击主节点页面的topology任务名称,进入任务的详细页面:

 

》topology任务详细页面:

  

  5.查看spout和bolts任务的内容

》在topology任务详情页,开启Debug功能,然后查看spout和bolts任务的详情

 

》开启debug模式并设置采样率之后,查看具体的spout和bolts任务采样详情页:

 

点击采样的任务为spout,页面跳转到新页面,点击events按钮:

 

 

》关闭topology任务

 

七、查看zookeeper中保存的HA任务信息

使用zookeeper查看器,连接bigdata112,查看保存的storm的HA任务信息(HA任务信息比较多):

 

八、Storm内部通信的机制:有Work中的Executor来执行

 

转载于:https://www.cnblogs.com/forfreewill/articles/9088503.html

相关文章:

引用-ZIGBEE-ZSTACK网络配置相关问题

下面是以道友问的问题,这里简单做分析,仅供交流学习用,有什么不对之处还请各位大虾指正。鄙人邮箱为:peterpanjy163.com. 欢迎交流!!1: 最主要的就是路由问题。我用06协议栈自带的例子程序sampl…

GHOST还原教程详细

要提醒您注意的是在使用 GHSOT 软件恢复系统时,请勿中途中止!如果您在恢复过程中重新启动了计算机那么您的计算机将无法启动!必定要接双硬盘或用光盘系统启动才可恢复 在您的系统遇到以下的情况之一 怀疑或确定您的系统中了病毒或木马 系统运…

【java】增强for循环的简单使用(遍历数组)

public class Test4 {public static void main(String[] args) {int[] intArray {1, 2, 4, 5, 7, 8};for(int number : intArray) {System.out.println(number);}} }

字符设备驱动程序 2

三、字符设备的注册内核内部使用struct cdev结构来表示字符设备。在内核调用设备的操作之前&#xff0c;必须分配并注册一个或多个struct cdev。代码应包含<linux/cdev.h>&#xff0c;它定义了struct cdev以及与其相关的一些辅助函数。 注册一个独立的cdev设备的基本过程…

qmake 简易教程

qmake 简易教程 qmake是Qt开发中默认的构建工具。posted on 2018-05-27 00:09 JichengTang 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/tangjicheng/p/9094857.html

MSF连环攻击实验

MSF连续攻击实验 一、实验拓扑 二、实验环境 Windows XP BT 5 32位 三、实验原理 通过扫描 XP主机&#xff0c;利用扫描出的漏洞建立 TCP会话&#xff0c;通过进程的提权&#xff0c;进一步获取目标机的控制权限 四、实验目的 掌握MSF连续攻击的原理和利用MSF攻击检测技术进行服…

【java】关于面向对象优点的个人理解

本文只是一些个人的理解&#xff0c;没有过多的进行基础理论的堆积&#xff0c;尽量说人话&#xff0c;让不懂的人也可以有一点概念。 相同的目标&#xff1a; 去第一餐厅吃饭 面向过程&#xff1a; 进入第一餐厅、买饭、吃饭 面向对象&#xff1a; 创建对象 第一餐厅、同…

(转)flash的Socket通讯沙箱和安全策略问题

一、沙箱和安全策略问题 1、此问题发生在连接时&#xff0c;准确地说是连接前&#xff0c;分别两种情况&#xff1a; 1.本地播放 本地播放时&#xff0c;默认情况下Flash Player将不允许swf访问任何网络。 访问http://www.macromedia.com/suppor…

asp.net code-behind

asp.net code-behind 技术是指页面与代码分离。 asp.net framework允许创建两种不同的页面&#xff0c;一种是单页面&#xff08;页面包含页面代码与控件&#xff0c;页面代码包含在<script runat"server"></script>标签中&#xff09;&#xff0c;另外一…

python 基础_列表的其他操作 4

一.查找某个元素在数组中出现的次数 &#xff0c;count的运用 a [a,b,c,c,c,a] print(a.count(c)) 二.把一个元素插入到另一个元素的末尾&#xff0c;extend。如下面&#xff0c;把b里面的值赋予给a。 a [a,b,c] b [d,e,f] a.extend(b) print (a) print (b) 输出的结果为 [a…

DataGrid和GridView单击背景变色双击颜色还原

DataGrid中 首先我们假设.aspx文件中DataGrid的数据行的样式为 <AlternatingItemStyle BackColor"White" ForeColor"#284775" /><ItemStyle BackColor"#F7F6F3" ForeColor"#333333" /> 则在DataGrid的ItemDataBound事件中…

elasticsearch的备份和恢复(转)

vim /etc/elasticsearch/elasticsearch.yml path.repo: ["/data/backups/es_backup"] #备份目录&#xff0c;根据自己情况进行填写 systemctl restart elasticsearch.service mkdir -pv /data/backups/es_backup chmod 755 /data/backups/es_backup chown elas…

【javamatlab】以一个简单的例子实现java和matlab混编

目录 使用环境&#xff1a; MATLAB: matlab代码&#xff1a; 将matlab代码打包&#xff1a; eclipse&#xff1a; jar包配置&#xff1a; 使用jar包&#xff1a; 使用环境&#xff1a; jdk8&#xff08;ide使用eclipse2019-6&#xff09;、matlab2019a 应该从2018开始m…

转载CSDN - 从程序员到HR——面试经验分享

CSDN博客一周热文推荐&#xff0c;为您总结回顾过去一周的CSDN博客热门文章&#xff0c;推荐优质的博客作者&#xff0c;分享精华文章和优质博客。 [1] 谭海燕&#xff1a;北漂之惠普H3C面试经历 上一篇讲到了《北漂之百度面试》&#xff0c;今天跟大家分享我在H3C的面试经历。…

近期上海面试总结(一)

转眼来上海已经4年了&#xff0c;随着对公司业务的不断熟悉&#xff0c;同时通过与众多的人接触也渐渐加深了对职场的理解&#xff0c;从刚开始的初生牛犊不怕虎毅然来到上海&#xff0c;到如今已快有四个年头了&#xff0c;今年还是面临职场上的抉择&#xff0c;再次找工作吧&…

Expect 教程中文版

原文链接 本教程由*葫芦娃*翻译&#xff0c;并做了适当的修改&#xff0c;可以自由的用于非商业目的。 [BUG]   有不少部分&#xff0c;翻译的时候不能作到“信&#xff0c;达”。当然了&#xff0c;任何时候都没有做到“雅”&#xff0c;希望各位谅解。 [原著]     Don L…

【智能小车】舵机的基本原理(学习自平衡小车之家的资料)

概述&#xff1a; 根据控制方式舵机应该称为微型伺服马达。早期在模型上使用最多&#xff0c;主要用于控制模型的舵面&#xff0c;所以俗称舵机。舵机特点是接受一个简单的控制指令就可以自动转到一个比较精确的角度。 注&#xff1a; 微型伺服马达&#xff1a;一个微型伺服马…

005本周总结报告

这周主要学习了java中的类和对象的知识点&#xff0c;发现和C中的类和对象极为相似&#xff0c;对于类和对象的概念理解起来也简单。同时在自学的过程中也把类的知识重新复习巩固了一下&#xff08;如类的三大特征&#xff1a;继承&#xff0c;封装和多态&#xff0c;构造&…

IE6 下div高度显示的问题

IE6下默认的字体尺寸大致在 12 - 14px 之间&#xff0c;当你试图定义一个高度小于这个默认值的 div 的时候&#xff0c; IE 会固执的认为这个层的高度不应该小于字体的行高。所以即使你用 height: 6px; 来定义了一个 div 的高度&#xff0c;实际在 IE 下显示的仍然是一个 12 px…

ASP.NET Core 2 学习笔记(七)路由

ASP.NET Core通过路由(Routing)设定&#xff0c;将定义的URL规则找到相对应行为&#xff1b;当使用者Request的URL满足特定规则条件时&#xff0c;则自动对应到相符合的行为处理。从ASP.NET就已经存在的架构&#xff0c;而且用法也很相似&#xff0c;只有些许的不同。本篇将介绍…

[NOI2005]维护数列

输入格式 输入文件的第 1 行包含两个数 N 和 M&#xff0c;N 表示初始时数列中数的个数&#xff0c;M 表示要进行的操作数目。 第 2 行包含 N 个数字&#xff0c;描述初始时的数列。 以下 M 行&#xff0c;每行一条命令&#xff0c;格式参见问题描述中的表格 输出格式 对于输入…

java 常用正则表达式

匹配中文字符的正则表达式&#xff1a; [\u4e00-\u9fa5]评注&#xff1a;匹配中文还真是个头疼的事&#xff0c;有了这个表达式就好办了匹配双字节字符(包括汉字在内)&#xff1a;[^\x00-\xff]评注&#xff1a;可以用来计算字符串的长度&#xff08;一个双字节字符长度计2&…

考研总结以及假期规划

从标题不难看出&#xff0c;这是自我总结的水文一篇 备考总结 持续了将近一年的备考时间结束了&#xff0c;漫无目的地玩了几天的手机之后&#xff0c;感觉需要做点什么来充实一下自己了。&#xff08;写下这句话之后又回去玩手机了&#xff0c;直到昨天山东泰山拿了双冠王受到…

JAVA Functions in XI(转)

JAVA Functions in XI 1. Split Function 按字符分割成字符串数组 String [ ] StrArray LGORT.split(",") //-- pass LGORT to this UDF int len1 LGORT.length; for ( i0;i<len1;i){ result.addValue(StrArray[i]); } 2. Global Containers…

2018.5.29 Oracle连接到空闲例程

解决方法如下&#xff1a; 1、通过cmd命令窗启动Oracle&#xff1a;(最好是以管理员身份启动) C:\Users\Administrator>sqlplus /nolog SQL>conn /as sysdba 或者这种 conncet sys/123456orcl as sysdba //sys是用户名 123456是密码 。 后面的是数据库名字 SQL>s…

关于css中float的一切

原文&#xff1a;http://css-tricks.com/all-about-floats/ 这篇文章说的简单易懂 float是CSS中关于定位的属性。 float有4个值&#xff1a;none, left, right, inherit (继承父元素的float属性值&#xff09; float的姐妹属性&#xff1a;clear clear有4个值&#xff1a;both…

【光纤通信】关于RFA(喇曼光纤放大器)

近日在准备考研复试&#xff0c;在学习光纤通信的时候对书中关于RFA的解释不是很理解&#xff0c;经过查阅文献后将自己此刻的理解记录一下。 喇曼散射 解释一&#xff1a; “入射泵浦光子通过光纤的非线性散射转移部分能量&#xff0c;产生低频斯托克斯光子&#xff0c;而剩…

艾伟_转载:学习 ASP.NET MVC (第五回)理论篇

本系列文章导航学习 ASP.NET MVC &#xff08;第一回&#xff09;理论篇学习 ASP.NET MVC &#xff08;第二回&#xff09;实战篇学习 ASP.NET MVC &#xff08;第三回&#xff09;实战篇学习 ASP.NET MVC &#xff08;第四回&#xff09;实战篇学习 ASP.NET MVC &#xff08;第…

Jmeter(二十九)_dotnet搭建本地接口服务

这里使用的服务名为Bookshelf&#xff0c;在github上&#xff0c;自行下载。要运行此服务&#xff0c;需要.Net Core SDK 2.1或更高版本。如果尚未安装&#xff0c;从.Net Core官方网站下载并安装。 在本地克隆项目后&#xff0c;在命令行工具中打开项目文件夹并运行“dotnet r…

【eclipse】eclipse使用常见问题(持续更新)

创建maven工程中没有src/main/java及src/main/test文件夹 解决方法&#xff1a; 第一步 第二步 第三步 【eclipse】快速调整eclipse背景和格式的方法 第一步 第二步 第三步 &#xff1a;选择相应的格式 效果如图 eclipse 中使包名按层级显示的方法 使用eclipse在没网时编写配置…