Storm入门,看这篇就够了

部分一:Srorm 简介

1.1 Storm是实时的数据流,Hadoop是批量离线数据

起源背景

  • Twitter 开源的一个类似于Hadoop的实时数据处理框架
  • Storm是由Nathan Marz 在BackType公司【做社交数据分析,数据量大】工作中实现的,这家公司后来被Twitter收购。

Ps:·Hadoop分布式存储和分布式计算两个难题全部解决了。但是缺点就是不能实时处理数据,Storm的作者就像写一个这样实时数据处理场景的框架出来

1.2 Storm应用场景【实时处理数据】
  • 推荐系统:实时推荐,根据下单或加入购物车等操作
  • 网站统计:实时销量,流量统计
  • 监控预警系统,金融系统
1.3Storm特性
  • 扩展性强,当计算能力不足时,可以进行横向扩展机器
  • 保证数据不丢失,且数据可以消费一次或多次
  • 容错性好,消息处理过程出现异常,会进行重试
  • 语言无关性:storm程序可以使用各种语言进行编写

部分2 Storm原理

2.1拓展:大数据框架都有哪些架构类型?

主从架构:简单高效,单主节点存在单点问题

HDFS\YARN\Storm\Hbase\Spark\Flink

对称架构:复杂,效率较低,无单点问题,更加可靠

Zookeeper\Kafka [会进行主节点的选举]

Storm的主从架构

  • Nimbus 主节点
  • Sipervisor 从节点

Nimbus—zookeeper--supervisor

Storm组件:Nimbus

  • 接收客户端的topo代码,拆分成多个task,将task信息存入zk,并将task分配给Supervisor,将映射关系存入ZK,并进行故障检测
  • 类比:部门经理将需求拆分为 多个任务(每个任务有多个模块) 将这些任务写入项目文档中去,,并将每个任务与每一程序员进行对应

Storm组件:Supervisor

  • 从Nimbus目录读取代码,从zk上读取Nimbus分配的task
  • 启动工作进程Worker
  • 监控每一个工作进程Worker

Storm 组件:Worker

  • 从zk上读取分配的task,并计算出task需要给哪些task发信息
  • 启动一个或多个Execucor线程执行任务Task

Storm组件:Zookeeper

  • Nimbus与Supervisor进行通信(分配任务与心跳)
  • Supervisor与Worker进行通信(分配任务和心跳)
  • Nimbus高可用(HA机制)

动手实践

  • Zookeeper简介与集群配置【Storm的各个组件间是通过这个组件进行通信】
  • Zookeeper 的核心,单机和集群的配置方法
  • Storm的单机和集群环境的搭建

部分3.Zookeeper简介与集群配置【Storm的各个组件间是通过这个组件进行通信】

简介:

Zookeeper是一个开源的分布式协调服务的框架,使各个机器进行之间进行通信

3.1核心功能:
  • 文件系统
  • 通知机制

文件系统:

类似于linux的文件系统目录结构,从根目录(/)开始

1.每一个目录都是一个znode节点

2.每一个znode节点可直接存储数据

3.类型:持久化,持久化顺序,临时,临时顺序

通知机制:

  • 客户端监听关心的znode节点
  • Znode节点有变化(数据改变、删除、子目录添加删除),通知客户端处理
3.2 zookeeper的安装

下载:直接去官网:zookeeper.apache.org或CDH5进行下载

/opt/soft [下载位置]

/opt/module 【解压位置】

下载 .tar.gz

解压 tar –zxvf tar.gz –C /apps

解压后的主要目录结构:

bin:包含

  • zkCli.sh 【命令行客户端,可以去连接到这个文件系统,类似于hadoop fs】
  • zkCleanup.sh [zk是一个小型文件系统,用于清理数据信息,保证各个节点的数据一致]
  • zkEnv.sh [环境变量的一些东西]
  • zkServer.sh 【zk服务器的启动停止等操作】

conf:包含

  • log4j.properties 日志输出级别
  • zoo_sample.cfg mv zoo_sample.cfg zoo.cfg
  • [tickTime:客户端与zk服务器的心跳时间,各个znode节点也要保持心跳]
  • InitLimit 启动集群时候,选举Nimbus节点的最大时间 tickTime* InitLimit
  • SyncLimit 集群中各个znode节点进行数据同步时候,保持数据一致性,进行数据同步的最大时间,超过这个时间,数据会同步失败
  • dataDir zookeeper是一个小型的文件系统,将数据存放在哪里配置
  • clientPort 客户端访问zk服务器的端口号2181去连接到这个服务器

在解压后的目录新建一个data的目录用于存放zk的数据

将$ZK_HOME/data 替换conf/zoo.cfg 中的dataDir

启动bin/zkServer.sh start

Jps

Or

bin/zkServer.sh status

  • standalone状态
3.3 zk的命令行客户端

去连接zk服务器

bin/zkCli.sh

这样会连接本地的zk服务器‘

里面的操作类似于linux的操作

输入ls

查看根目录有什么 ls /

查看目录下面的数据 get /

创建目录 create /test 111

查看数据 get /test 得到111

修改数据 set /test 222

再次查看: get /test 得到222

删除数据rmr /test

再次查看 ls / 无test目录

3.4 zookeeper的集群搭建(推荐1,3,5这样的节点数,在进行节点选举的时候,保证能选举一个主节点出来)

启动三个机器

配置第一台

步骤一:在单机的基础(解压后修改dataDir的目录)上,添加配置项

server.

server.1=192.168.1.1:2888:3888

server.2=192.168.1.2:2888:3888

server.3=192.168.1.3:2888:3888

步骤二:

Scp –r zookeeper-3.4.5/ [email protected]:/opt/module

即可

在这之前可以配置ssh的免密码登录

拓展:

1.HOSTNAME主机名:vim /etc/sysconfig/network

2.配置ip与主机名之间的映射关系

Vim /etc/hosts

192.168.1.1 hadoop001

192.168.1.2 hadoop002

192.168.1.3 hadoop003

启动zk集群

在每一台上面都要进行启动,bin/zkServer.sh start

Bin/zkServer.sh status 状态为:leader 主节点

Bin/zkServer.sh status 状态为:follower 从节点

ZKcli从1-2-3

192.168.1.1可以使用bin/zkCli.sh -server 192.168.1.2:2181

进入之后,connect 192.168.1.3:2181

部分4 Storm的安装配置

单机环境的安装配置

下载啊storm.apache.org 或CDH5 1.1.0 ,1.2.1等版本

解压 tar –zxvf storm.tar.gz –C /opt/module

Storm的启动是需要依赖于zookeeper服务的

在这之前,先使用单个zk服务(单节点)

Storm解压后的目录

bin 包含

  • storm 核心脚本,可以通过这个脚本进行启动
  • Storm.py 是一个python脚本

Conf 包含

  • Storm.yaml最核心的配置文件
  • storm.zookeeper.servers
  • nimbus.seeds
  • drpc.servers

    暂时不做任何修改

启动主节点

bin/storm nimbus &

启动从节点

bin/storm supervisor &

启动UI

bin/storm ui &

启动日志

bin/storm logviewer &

ps:nohup java –jar hh.jar &

nohup + & 客户端和虚拟机是不需要保持连接的,即当前输入的命令界面是可以进行关闭的

Storm性能调优

为了解决数据不一致的问题,我们先把zookeeper的data目录下先删除,保持一致

每个机器上执行

rm –rf $ZK_HOME/data

mkdir $ZK_HOME/data

vim $ZK_HOME/data/myid 写入相应的

每个机器上启动zookeeper

bin/zkServer.sh start

开始配置storm的单机环境为集群环境配置

Vim #STORM_HOME/conf/storm.yaml

storm.zookeeper.servers:

  • “192.168.1.1”
  • “192.168.1.2”
  • “192.168.1.3”

    Nimbus.seeds: [“192.168.1.1”,”192.168.1.2”]

就简单做这样的操作就 可以了

接着 拷贝storm文件到其余的机器上面去

就可以启动storm了

启动主节点【第一台机器上】

Nohup bin/storm nimbus &

启动从节点【第二台机器上】

Nohup bin/storm supervisor &

启动UI

可以在第一台 也可以在第二台上面

nohup bin/storm ui

WebUI查看:

192.168.1.2:8080/index.html

这里可以做节点故障转义的实验

原文地址:https://www.cnblogs.com/liuge36/p/10261011.html

时间: 2024-08-28 15:12:53

Storm入门,看这篇就够了的相关文章

Zookeeper入门看这篇就够了!!

Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等. 上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制. 1. 文件系统 Zookeeper维护一个类似文件系统的数据结构: 每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统一样,我们能够

ZooKeeper 入门看这篇就够了

什么是 ZooKeeper? ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务.ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用. ZooKeeper 发展历史 ZooKeeper 最早起源于雅虎研究院的一个研究小组.在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协同,但是这些系统往往都存在分布式单点问题. 所以,雅虎的开发人员就开发了一个通用

.NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既然是快速入门所以过多过深的内容我这里就一笔带过了!然后在后面的一些列文章中再慢慢的对其中的概念进行阐述. 本文已收录至.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规

使用Visual Studio Code开发.NET Core看这篇就够了

原文:使用Visual Studio Code开发.NET Core看这篇就够了 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9926078.html 在本文中,我将带着大家一步一步的通过图文的形式来演示如何在Visual Studio Code中进行.NET Core程序的开发,测试以及调试.尽管Visual Studio Code的部分功能还达不到Visual Studio的水平,但它实际上已经足够强大来满足我们的日常开发.而且其轻量化,插件化

ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者的心情.或者详细点,或者简单点.那么有没有一种快速有效的方法来构建api说明文档呢?答案是肯定的, Swagger就是最受欢迎的REST APIs文档生成工具之一! 为什么使用Swagger作为REST APIs文档生成工具 Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学

Pycharm新手教程,只需要看这篇就够了

pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次使用这款软件的朋友做一个简单的使用教程,希望能给你带来帮助! 目前pycharm一共有两个版本,Professional(专业版本)」和「社区版」,专业版功能最强大,主要是为 Python 和 web 开发者而准备,是需要付费的.社区版是专业版的阉割版,比较轻量级,主要是为 Python 和数据专家而准备的.一般我们做开发,下载专业版本比较合适. 文章转自:django中文网---Pych

入门Webpack,看这篇就够了

写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失:如果你以前没怎么接触过Webpack,而你又你对webpack感兴趣,那么动手跟着本文中那个贯穿始终的例子写一次,写完以后你会发现你已明明白白的走进了Webpack的大门. //一个常见的Webpack配置文件 var webpack = requir

转:入门Webpack,看这篇就够了

写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失:如果你以前没怎么接触过Webpack,而你又你对webpack感兴趣,那么动手跟着本文中那个贯穿始终的例子写一次,写完以后你会发现你已明明白白的走进了Webpack的大门. //一个常见的Webpack配置文件 var webpack = requir

入门 Webpack,看这篇就够了

写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失:如果你以前没怎么接触过Webpack,如果你对webpack感兴趣,本文中有一个贯穿始终的例子,如果你能把这个例子自己动手写一次,写完以后你会发现你已明明白白的走进了Webpack的大门. JavaScript 1 2 3 4 5 6 7 8 9 10