博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache - Storm
阅读量:4641 次
发布时间:2019-06-09

本文共 3583 字,大约阅读时间需要 11 分钟。

一、Apache Storm

Storm是一个分布式的,可靠的,容错的数据流处理系统。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。
  1、Storm组件

在Storm集群中、有两类节点:主节点master node和工作节点worker nodes。主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个Storm拓扑结构在不同的机器上运行着众多的工作节点。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。

  2、Zookeeper

Zookeeper是完成Supervisor和Nimbus之间协调的服务。而应用程序实现实时的逻辑则被封装进Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。

  3、Spout

Spout从来源处读取数据并放入topology。Spout分成可靠和不可靠两种;当Storm接收失败时,可靠的Spout会对tuple(元组,数据项组成的列表)进行重发;而不可靠的Spout不会考虑接收成功与否只发射一次。而Spout中最主要的方法就是nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回。

  4、Bolt

Topology中所有的处理都由Bolt完成。Bolt从Spout中接收数据并进行处理,如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。而Bolt中最重要的方法是execute(),以新的tuple作为参数接收。不管是Spout还是Bolt,如果将tuple发射成多个流,这些流都可以通过declareStream()来声明。

  5、Stream Groupings

Stream Grouping定义了一个流在Bolt任务中如何被切分。Shuffle grouping:随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。Fields grouping:根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。Partial Key grouping:根据指定字段分割数据流,并分组。类似Fields grouping。All grouping:tuple被复制到bolt的所有任务。这种类型需要谨慎使用。Global grouping:全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。None grouping:无需关心流是如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。Direct grouping:这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。Local or shuffle grouping:如果目标bolt有一个或多个任务在同一工作进程,tuples 会打乱这些进程内的任务。否则,这就像一个正常的 Shuffle grouping。

二、Apache-strom 必须要求Python 2.6以上

  1、升级 Python 官方下载地址:

https://www.python.org/ftp/python/ wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgzwget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz# tar -xf Python-3.6.0.tgz# mv Python-3.6.0 /usr/local/python# cd /usr/local/python# ./configure --prefix=/usr/local/python# make # make install# mv /usr/bin/python /usr/bin/python_old# ln -s /usr/local/python/bin/python3.6 /usr/bin/python# python -V

  2、如发现yum 异常则, 编辑 /usr/bin/yum 文件

将文件头部的#!/usr/bin/python改为以下:(因为系统默认是2.6)#!/usr/bin/python2.6

三、storm 安集群配置;(具体根据线上环境资源进行设置)

系统:Centos6.7内核:2.6.32-573.el6.x86_64安装目录:/opt/storm数据日志目录:/opt/storm/{data,logs}用户组权限:deploy机器hostname需要在hosts里面配置关系映射:zoo1 - 10.207.101.101zoo2 - 10.207.101.102zoo3 - 10.207.101.103

四、集群说明

主节点(nimbus)zks1 任务节点(supervisor)zks2 zks3 等注:storm主节点、任务节点安装配置完全一致。

  1、下载安装配置:官方下载地址:

http://mirrors.hust.edu.cn/apache/storm/http://www-eu.apache.org/dist/storm/apache-storm-1.0.3/apache-storm-1.0.3.tar.gzhttp://mirrors.hust.edu.cn/apache/storm/apache-storm-1.0.2/apache-storm-1.0.2.tar.gz# tar -xf apache-storm-1.0.2.tar.gz# cd apache-storm# cat apache-storm-0.9.6/conf/storm.yaml |grep -v ^# |grep -v ^$storm.zookeeper.servers:- "10.207.101.101"- "10.207.101.102"- "10.207.101.103"nimbus.host: "10.207.101.101"storm.zookeeper.port: 2181ui.port: 8090storm.local.dir: "/opt/apache-storm-0.9.6/data"supervisor.slots.ports:- 6700- 6701- 6702- 6703- 6704worker.childopts: "-Xmx2g"# worker.heap.memory.mb: 2048/** 调整分配给每个 worker 的内存,关于内存的调节,上文已有描述 */logviewer.port: 18090topology.max.spout.pending: 1000topology.message.timeout.secs: 300storm.messaging.netty.server_worker_threads: 10

  2、主节点启动测验:

启动nimbus# nohup ./bin/storm nimbus >/dev/null 2>&1 &启动 UI# nohup ./bin/storm ui >/dev/null 2>&1 &

  3、任务节点启动脚步

# cat supervisor_logviewer.shnohup ./bin/storm supervisor >/dev/null 2>&1 &nohup ./bin/storm logviewer >/dev/null 2>&1 &

  4、进程检测

# ps -ef|grep storm # netstat -ano |grep 8090 wKioL1j7QCmz-bBgAAEEFLYWMiA134.jpg-wh_50

  

转载于:https://www.cnblogs.com/sharesdk/p/8794461.html

你可能感兴趣的文章
《BI项目笔记》用Excel2013连接和浏览OLAP多维数据集
查看>>
C语言对mysql数据库的操作
查看>>
SQL Server 数据库备份
查看>>
INNO SETUP 获得命令行参数
查看>>
Charles抓取https请求
查看>>
LAMP环境搭建
查看>>
C语言的变量的内存分配
查看>>
clientcontainerThrift Types
查看>>
链接全局变量再说BSS段的清理
查看>>
hdu 1728 逃离迷宫
查看>>
HTML5与CSS3权威指南之CSS3学习记录
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>