Storm简介
Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。
Storm框架主要由7部分组成
Topology:一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapReduce任务相似。
Spout:Storm中的消息源,用于为Topology生产消息(数据),一般是从外部数据源(如Message Queue、RDBMS、NoSQL、Realtime Log)不间断地读取数据并发送给Topology消息(tuple元组)。
Bolt:Storm中的消息处理者,用于为Topology进行消息的处理,Bolt可以执行过滤,聚合, 查询数据库等操作,而且可以一级一级的进行处理。
Stream:产生的数据(tuple元组)。
Stream grouping:在Bolt任务中定义的Stream进行区分。
Task:每个Spout或者Bolt在集群执行许多任务。
Worker:Topology跨一个或多个Worker节点的进程执行。
Window开发环境安装
1、安装JDK
下载最新的JDK1.8安装,这里不详述
配置环境变量
新建系统变量:JAVA_HOME 、CLASSPATH 和Path
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.8.0_144
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注意: 变量名JAVA_HOME 的变量值是要根据你自己安装jdk的文件目录,因此如果你更改了安装文件目录,就可能和我所给出的不一样;
查看是否安装成功
2、安装Maven
下载最新版本的Maven
http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
解压到指定文件夹,如:D:\Program Files\apache-maven-3.5.0
配置环境变量
新建系统变量
变量名:MAVEN_HOME
变量值:D:\Program Files\apache-maven-3.5.0
变量名:M2_HOME
变量值:D:\Program Files\apache-maven-3.5.0
变量名:Path
变量值:%MAVEN_HOME%\bin;%M2_HOME%\bin;
查看Maven是否安装成功
3、安装Eclipse
下载Mars以上版本的(因为Mars以上自带maven插件),这里下载Neon版本
http://www.eclipse.org/downloads/packages/release/Neon/3
你可以下载Eclipse IDE for Java Developers,或者Eclipse IDE for Java EE Developers
主要区别是Java EE多一些Java Web开发相关组件
下载后解压到指定目录即可
Eclipse配置Maven
首先修改Maven配置:
D:\Program Files\apache-maven-3.5.0\conf\settings.xml
E:\Java\Maven\repository
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
Eclipse打开 Window-->Preferences-->Maven
配置maven安装目录
配置User Settings
注:点击Update Settings按钮,点击Apply
新建项目
配置pom.xml
注:下方可切换到代码模式
添加storm依赖
org.apache.storm
storm-core
1.0.4
配置完成,这时Maven已为你自动下载storm相关的jar包
到此,我们的项目已配置完成,可以进行Storm入门开发了。
有同学可能会疑问,为什么没有安装storm?
同学别急,这时因为我们使用Maven配置,Maven已为我们自动下载Storm相关的依赖包,在Eclipse已经可以正常运行。
如果你不是使用Maven,那么需要下载Storm安装,并需在Eclipse自行添加依赖包,如Storm依赖包可能在这个目录:
D:\Program Files\apache-storm-1.0.4\lib
我们这里使用Maven,所以不用这么麻烦。
当然,如果你开发完成,需要真实发布你的jar包,那么才需要安装Storm进行测试。
下一节我们详细讲解一个入门实例