大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

时间:2022-12-27 14:46:06

一、概述

  今天起就正式进入了流式计算。这里先解释一下流式计算的概念

  离线计算

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

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

,hivesql
、调度平台
、Hadoop集群运维
、数据清洗(脚本语言)
、元数据管理
、数据稽查
、数据仓库模型架构

相关技术栈与应用

  流式计算

    

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

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

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

实时计算,强调的是实时。比如小明要查看他去年一年的消费总额度,那么当小明点下统计按钮的时候,服务器集群就在噼里啪啦的赶紧计算了,必须在小明能够忍耐的时间范围内得出结果。这种计算的背后实现,一般都是冗余 + 各种高性能部件在做支撑,算法也对实时性做了优化,但实时计算并没有强调用那种算法,只要能保证高实时性的就行。实时计算与离线计算的最大区别,就是离线计算是人无法忍耐的时间进行计算,因此人不需要等待,把任务丢给计算机后,自己该干嘛就去干嘛。流式计算,比实时计算要稍微迟钝些,但比离线计算又实时的多,而且主要强调的是计算方法。比如,服务器端,有一个值,是记录小明订单数量。当小明每买一件东西后,服务端立即发出一个交易成功的事件,该值接收到这个事件后就立即加1。如果用离线计算的方式来做,估计是在查询时,才慢腾腾的从低速存储中,把小明的所有订单取出来,统计数量。流式计算有点像数据库领域的触发器,又有些像事件总线、中间件之类的计算模式。

作者:pig pig
链接:https://www.zhihu.com/question/38996005/answer/114339820
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

与实时计算概念的区别详解

  1.什么是storm

    根据storm官网:http://storm.apache.org/

  Apache Storm is a free and open source distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm is simple, can be used with any programming language, and is a lot of fun to use!

   Apache Storm是一款免费且开源的分布式实时计算系统。Storm可以轻松地可靠地处理无限数据流,从而实时处理Hadoop进行批处理的操作。Storm很简单,可以与任何编程语言一起使用,并且使用起来非常有趣!

  2.与Hadoop的区别

    w3c的教程https://www.w3cschool.cn/apache_storm/apache_storm_introduction.html

Storm用于实时计算,Hadoop用于离线计算。
Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批。
Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
Storm与Hadoop的编程模型相似

    大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

Job:任务名称
JobTracker:项目经理
TaskTracker:开发组长、产品经理
Child:负责开发的人员
Mapper/Reduce:开发人员中的两种角色,一种是服务器开发、一种是客户端开发 Topology:任务名称
Nimbus:项目经理
Supervisor:开组长、产品经理
Worker:开人员
Spout/Bolt:开人员中的两种角色,一种是服务器开发、一种是客户端开发

名词解释

    简单来说:Apache Storm执行除持久性之外的所有操作,而Hadoop在所有方面都很好,但滞后于实时计算。

  3.应用场景

    Storm用来实时计算源源不断产生的数据,如同流水线生产。 

     日志分析

      从海量日志中分析出特定的数据,并将分析的结果存入外部存储器用来辅佐决策。

    管道系统

      将一个数据从一个系统传输到另外一个系统,比如将数据库同步到Hadoop

    消息转化器

      将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件

  更多概述与特性,参加上文官网与w3c相关介绍!

二、storm核心组件与编程模型

  1.核心组件

  大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

  

   Nimbus:负责资源分配和任务调度。

   Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。---通过配置文件设置当前supervisor上启动多少个worker。

   Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。(一worker就是一个JVM。)

   Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。

  2.编程模型

  大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

  

  Topology:Storm中运行的一个实时应用程序的名称。(拓扑)

   Spout:在一个topology中获取源数据流的组件。

      通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。

   Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。

   Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。

   Stream:表示数据的流向。

DataSource:外部数据源
Spout:接受外部数据源的组件,将外部数据源转化成Storm内部的数据,以Tuple为基本的传输单元下发给Bolt
Bolt:接受Spout发送的数据,或上游的bolt的发送的数据。根据业务逻辑进行处理。发送给下一个Bolt或者是存储到某种介质上。介质可以是Redis可以是mysql,或者其他。
Tuple:Storm内部中数据传输的基本单元,里面封装了一个List对象,用来保存数据。
StreamGrouping:数据分组策略
7种:shuffleGrouping(Random函数),Non Grouping(Random函数),FieldGrouping(Hash取模)、Local or ShuffleGrouping 本地或随机,优先本地。

  大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

    这些概念在官网中的concepts章节有相关介绍http://storm.apache.org/releases/1.0.6/Concepts.html

              并发编程网中文storm翻译教程http://ifeve.com/getting-started-with-stom-index/

  3.一般架构

  大数据入门第十六天——流式计算之storm详解(一)入门与集群安装

  

  其中flume用来获取数据。

  Kafka用来临时保存数据。

  Strom用来计算数据。

  Redis是个内存数据库,用来保存数据。

三、storm集群的安装

  1.下载

    windows或者linux中使用wget命令下载皆可

  2.解压

[hadoop@mini1 ~]$ tar -zxvf apache-storm-1.0..tar.gz -C apps/

  解压后如果有需要,可以参考这里创建软连接

cd apps/
ln -s apache-storm-1.0. storm

  3.配置环境变量

sudo vim /etc/profile
export STORM_HOME=/home/hadoop/apps/apache-storm-1.0.
export PATH=$PATH:$STORM_HOME/bin
source /etc/profile

  4.配置storm

[hadoop@mini1 conf]$ mv storm.yaml storm.yaml.bak
[hadoop@mini1 conf]$ vim storm.yam

  通过mv或者cp命令备份出厂配置,这是一个比较推荐的好习惯

#指定storm使用的zk集群
storm.zookeeper.servers:
- "mini1"
- "mini2"
- "mini3"
#指定storm集群中的nimbus节点所在的服务器
nimbus.host: "mini1"
#指定nimbus启动JVM最大可用内存大小
nimbus.childopts: "-Xmx1024m"
#指定supervisor启动JVM最大可用内存大小
supervisor.childopts: "-Xmx1024m"
#指定supervisor节点上,每个worker启动JVM最大可用内存大小
worker.childopts: "-Xmx768m"
#指定ui启动JVM最大可用内存大小,ui服务一般与nimbus同在一个节点上。
ui.childopts: "-Xmx768m"
#指定supervisor节点上,启动worker时对应的端口号,每个端口对应槽,每个槽位对应一个worker
supervisor.slots.ports:
-
-
-
-

  5.分发安装包

[hadoop@mini1 apps]$ scp -r apache-storm-1.0./ mini2:/home/hadoop/apps/
[hadoop@mini1 apps]$ scp -r apache-storm-1.0./ mini3:/home/hadoop/apps/

  // 这里使用的是相对路径,分发时请注意所在目录

  另外两台机器也分别配置一下环境变量,以及如果有需要可以建立软连接(推荐)

  6.启动

    在master(这里是mini1上)上启动

nohup storm nimbus &
nohup storm ui &

    supervisor上启动:

nohup storm supervisor &

  停止storm进程只有一种方式,就是kill

  这里发现storm会有自动停止的问题,目前百度到的方法参考如下:http://roadrunners.iteye.com/blog/2229894

  启动的东西还是挺多的,从hadoop到这里,应该搞一个统一的启动脚本!

    输出的信息设置:

[root@log1 ~]# nohup storm ui >/dev/null >& &
[root@log1 ~]# nohup storm nimbus >/dev/null >& &

  默认情况下,nohup执行的日志在当前目录下的nohup.out中,除非重定向
  此处重定向到了/dev/null,即空白设备,即丢弃了。

  访问nimbus的主机即可:(如果有时候刚开始加载不了,注意稍等一会儿)

http://mini1:8080

大数据入门第十六天——流式计算之storm详解(一)入门与集群安装的更多相关文章

  1. 大数据入门第十六天——流式计算之storm详解(三)集群相关进阶

    一.集群提交任务流程分析 1.集群提交操作 参考:https://www.jianshu.com/p/6783f1ec2da0 2.任务分配与启动流程 参考:https://www.cnblogs.c ...

  2. 大数据入门第十六天——流式计算之storm详解(二)常用命令与wc实例

    一.常用命令 1.提交命令 提交任务命令格式:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称] torm jar examples/storm-starter/storm-st ...

  3. 大数据入门第十四天——Hbase详解(一)入门与安装配置

    一.概述 1.什么是Hbase 根据官网:https://hbase.apache.org/ Apache HBase™ is the Hadoop database, a distributed, ...

  4. 大数据入门第十九天——推荐系统与mahout(一)入门与概述

    一.推荐系统概述 为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统.其实,解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎,如hao123,电商首页的分类目录 ...

  5. 大数据入门第十天——hadoop高可用HA

    一.HA概述 1.引言 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 2.运行机制 实现高可用最关键的是消除单点故障 hadoop-ha严格来说应该分成各个组件的HA机制——H ...

  6. 大数据入门第十四天——Hbase详解(三)hbase基本原理与MR操作Hbase

    一.基本原理 1.hbase的位置 上图描述了Hadoop 2.0生态系统中的各层结构.其中HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持, MapReduce为HBas ...

  7. 大数据入门第十四天——Hbase详解(二)基本概念与命令、javaAPI

    一.hbase数据模型 完整的官方文档的翻译,参考:https://www.cnblogs.com/simple-focus/p/6198329.html 1.rowkey 与nosql数据库们一样, ...

  8. 大数据入门第十五天——HBase整合:云笔记项目

    一.功能简述 1.笔记本管理(增删改) 2.笔记管理 3.共享笔记查询功能 4.回收站 效果预览: 二.库表设计 1.设计理念 将云笔记信息分别存储在redis和hbase中. redis(缓存):存 ...

  9. 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装

    一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...

随机推荐

  1. 阿里云学生优惠Windows Server 2012 R2安装IIS,ftp等组件,绑定服务器域名,域名解析到服务器,域名备案,以及安装期间错误的解决方案

     前言: 这几天终于还是按耐不住买了一个月阿里云的学生优惠.只要是学生,在学信网上注册过,并且支付宝实名认证,就可以用9块9的价格买阿里云的云服务ECS.确实是相当的优惠. 我买的是Windows S ...

  2. dedecms为文档页增加动态点击

    加上 <script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id' ...

  3. Centos&colon; 修改 yum安装的mysql路径

    1.使用命令service mysqld stop 停止mysql查看mysql数据库的默认路径:/var/lib/mysql使用cp -afir  /var/lib/mysql/*   /usr/l ...

  4. oracle rac重建控制文件

    1.使用sqlplus连接到已经mount或open的rac数据库 sql> alter database backup controlfile to trace noresetlogs; 2. ...

  5. mac 启动nfsd共享

    # cat /etc/exports /Users/guang/jumpserver -maproot=root:wheel -alldirs -rw -network 192.168.244.0 - ...

  6. VS中制作安装文件

    第一步先来建一个最简单的Windows窗体应用程序,并为项目命名为WinFormTest,解决方案为WinFormSetup 第二步在窗体Form中添加一个按钮并在按钮事件中添加代码,只做测试因此简单 ...

  7. linux3&period;0&period;4编译LDD中的scull全过程

    按照惯例,我是应该先写一些本章的收获的,不过太晚了. 在看完第三章之后开始编译,错误一堆,几乎崩溃,幸亏经过不断的百度,总算解决了问题,我发现 我遇到问题比较多,算是集中七个龙珠了吧,感谢先行的大神们 ...

  8. 【FSFA 读书笔记】Ch 2 Computer Foundatinons(1)

    Data Organization 1. 进制转换. 按照正常的书写顺序写一个数字(无论多少进制),其中最左边的列称为“最高有效符号”,最右边的列称为“最低有效符号”. (The right-most ...

  9. Linux:一位猫奴的意外产物

    作者:Vamei,严禁任何形式转载. 1991年年中,林纳斯·托瓦兹(Linus Torvalds)在自己房间里敲着键盘.他全神贯注地盯着14寸的黑色屏幕,都没感觉到自己的小猫Randi在扒自己的裤腿 ...

  10. &lbrack;FJOI2018&rsqb;领导集团问题

    [FJOI2018]领导集团问题 dp[i][j],i为根子树,最上面的值是j,选择的最大值 观察dp方程 1.整体Dp已经可以做了. 2.考虑优美一些的做法: dp[i]如果对j取后缀最大值,显然是 ...