Apache Storm
==流计算==:将大规模流动数据在不断变化的运动过程中实现数据的实时分析,捕捉到可能有用的信息,并把结果发送到下一计算节点。
流计算框架
-
Kafka Streaming (轻)只是一套jar包,结合kafka消息队列实现的轻量级别计算框架.
-
==Apache Storm==:是一款名副其实实时流计算服务(早期 阿里巴巴 )
-
Spark Streaming:是基于Spark 离散 RDD 的小批量内存计算,因为计算速度比较快,被认定为实时
流
|批
处理. -
Apache Flink:Stateful Computations over Data Streams,Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。
什么是Apache Storm?
Apache Storm提供了一种基于Topology
流计算概念,该概念等价于hadoop的mapreduce
计算,但是不同于MapReduce
计算因为MR计算会最终终止,但是Topology
计算会一直运行下去,除非用户执行storm kill
指令该计算才会终止.
Storm提供了高可靠/可扩展/高度容错的流计算服务 ,该服务可以保证数据|Tuple
可靠性处理(至少一次|精确1次)处理机制.可以方便的和现用户的服务进行集成,例如:HDFS/Kafka/Hbase/Redis/Memcached/Yarn等服务集成.Storm的单个阶段每秒钟可以处理100万条数据|Tuple
Storm 架构
nimbus
:计算任务的主节点,负责分发代码/分配任务/故障检测 Supervisor任务执行.
supervisor
:接受来自Nimbus的任务分配,启动Worker进程执行计算任务.
zookeeper
:负责Nimbus和Supervisor协调,会使用zk存储nimbus和supervisor进程状态信息,这就导致了Nimbus和Supervisor是无状态的可以实现任务快速回复,即而让流计算达到难以置信的稳定.
Worker
:是Supervisor专门为某一个Topology任务启动的一个Java 进程,Worker进程通过执行Executors(线程池)计算任务,每个任务是同Task执行,一个Task就代表一个线程.一旦Topology被kill,该Topology下的所有worker进程退出.
搭建Storm单机
-
安装JDK,要求1.8+,配置JAVA_HOME(省略)
-
搭建zookeeper环境(单机)(省略)
-
配置主机名和IP映射关系(略)
-
关闭防火墙(略)(省略)
-
安装配置Storm(省略)
-
启动zookeeper
-
[root@CentOS ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh start zoo.cfg JMX enabled by default Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@CentOS ~]# jps 1400 QuorumPeerMain 1417 Jps
上传文件apache-storm-1.2.2.tar.gz并解压
-
[root@CentOS ~]# yum install lrzsz -y #插件 [root@CentOS ~]# rz #上传 [root@CentOS ~]# tar -zxf apache-storm-1.2.2.tar.gz -C /usr/ [root@CentOS ~]# ls /usr/apache-storm-1.2.2/ bin external lib NOTICE RELEASE conf extlib LICENSE public SECURITY.md examples extlib-daemon log4j2 README.markdown toollib [root@CentOS ~]# vi .bashrc STORM_HOME=/usr/apache-storm-1.2.2 HBASE_MANAGES_ZK=false HBASE_HOME=/usr/hbase-1.2.4 HADOOP_HOME=/usr/hadoop-2.6.0 HADOOP_CLASSPATH=/root/mysql-connector-java-5.1.44.jar JAVA_HOME=/usr/java/latest PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$STORM_HOME/bin CLASSPATH=. export JAVA_HOME export PATH export CLASSPATH export HADOOP_HOME export HADOOP_CLASSPATH export HBASE_HOME export HBASE_MANAGES_ZK export STORM_HOME [root@CentOS ~]# source .bashrc #从新加载配置文件 [root@CentOS ~]# vi /usr/apache-storm-1.2.2/conf/storm.yaml storm.zookeeper.servers: - "CentOS" storm.local.dir: "/usr/apache-storm-1.2.2/storm-stage" nimbus.seeds: ["CentOS"] supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
启动Storm
-
[root@CentOS ~]# nohup storm nimbus >/dev/null 2>&1 & 后台启动 [root@CentOS ~]# nohup storm supervisor >/dev/null 2>&1 & [root@CentOS ~]# nohup storm ui >/dev/null 2>&1 & --启动web界面,管理Topology
检测启动成功
-
[root@CentOS ~]# jps 13488 Supervisor 30648 QuorumPeerMain 13371 nimbus 13598 core [root@CentOS ~]#