Storm简介、环境搭建 怼烎@ 2022-05-26 13:54 322阅读 0赞 一、简介 * Storm是Twitter开源的一个分布式的实时计算系统,用于数据的实时分析,持续计算,分布式RPC等等。 * 实时计算需要解决一些什么问题? 1)、最显而易见的就是实时推荐系统,比如我们在淘宝等电商网站去买东西,我们会在网页旁边或者底端看到与自己所需要商品相关的系列产品。这就是使用类似storm实时计算去做的,我们非常熟悉的Hadoop只是做离线的数据分析,无法做到实时。 2)、比如车流量实时的计算,每天我们北京市的交通情况非常的拥挤,我们可以利用storm为我们实时计算每个路段的拥挤程度等相关路况信息。 3)、再比如我们非常熟悉的股票,那么股票系统也是一种实时计算的机制,利用storm完全可以实现。 * 实现一个实时计算系统 1)、低延迟:都说了是实时计算系统,延迟是一定要低的。 2)、高性能:可以使用几台普通的服务器建立环境,结约成本。 3)、分布式:storm非常适合于分布式场景,大数据的实时计算:你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。 4)、可扩展:伴随着业务的发展,我们数据量、计算量可能会越来越大,所以希望这个系统可扩展。 5)、容错:这是分布式系统中通用问题,一个节点挂了不能影响我的应用,storm可以轻松做到在节点挂了的时候实现任务转移,并且在节点重启的时候,也就是重新投入生产环境,自动平衡任务。 6)、可靠性:可靠的消息处理。storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。 7)、快速:系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。 8)、本地模式:storm有一个“本地模式”,可以在处理过程中完全模拟storm集群,让你可以快速进行开发和单元测试。 * Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意程序语言来开发应用。 ![这里写图片描述][70] * Storm体系结构 1)、Nimbus主节点:主节点通常运行一个后台程序——Nimbus,用于响应分布在集群中的节点,分配任务和检测故障。这个很类似于Hadoop中的Job Tracker。 2)、Supervisor工作节点:工作节点同样会运行一个后台程序——Supervisor,用于收听工作指派开机与要求运行工作过程。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。 3)、Zookeeper:是完成Supervisor和Nimbus之间协调的服务。而应用程序实现实时的逻辑则被封装到Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。下面对出现的术语进行深刻解析。 4)、Topology(拓扑):storm中运行的一个实时应用程序,因为各个组件的消息流动形成逻辑上的一个拓扑结构。一个topology是spouts和bolts组成的图,通过stream groupings将图中的spouts和bolts连接起来。 ![这里写图片描述][70 1] 二、集群环境搭建 1. 关闭防火墙,修改/etc/hosts配置(三台机器的IP可以相互通信); 2. 下载并安装JDK7(1.6以上版本),配置JAVA\_HOME,CLASSPATH; 3. 搭建Zookeeper集群(保证3台机器的zookeeper都可调用); 4. 安装python(最好2.6.6版本以上): 4.1)、地址:`wget https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz` 4.2)、解压:`tar -zxvf Python-2.6.6.tgz` 4.3)、进入:`cd Python-2.6.6` 4.4)、命令1:`./configure --prefix=/usr/local/Python2.6.6` 4.5)、命令2:`make` 4.6)、命令3:`sudo make install` ***\*\**** 环境准备工作 5. 下载:`wget http://mirror.bit.edu.cn/apache/incubator/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz` 并解压:`tar -zxvf apache-storm-0.9.2-incubating.tar.gz -C /usr/local/`; 6. 修改storm.yaml配置文件; ![这里写图片描述][70 2] 1)、storm.zookeeper.servers:(设置3台zookeeper地址) 2)、nimbus.host:(配置nimbus主节点IP地址) 3)、配置storm数据文件夹和 ui.port:18080 4)、配置supervisor的工作进程(solt槽) 5)、建立文件夹:mkdir /usr/local/apache-storm-0.9.2/data 6)、把apache-storm-0.9.2使用scp命令,到集群的各个服务器中去 7)、分别配置以下/etc/profile的Storm环境变量: export JAVA_HOME=/usr/local/jdk1.7 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5 export STORM_HOME=/usr/local/apache-storm-0.9.2 export PATH=.;$JAVA_HOME/bin;$ZOOKEEPER_HOME/bin;$STORM_HOME/bin;$PATH 8)、最后分别进行:source /etc/profile 9)、先启动zookeeper集群,然后分别启动运行storm: 主机器(nimbus运行)storm nimbus & 从机器(supervisor运行)storm supervisor & 主机器(ui运行)storm ui & (查看ui) 主机器(logviewer运行)storm logviewer & (查看工作日志) 然后再浏览器输入主机器的ip,端口默认8080,这样可以看到storm的一些集群配置 1. 启动Storm各个后台进程。 8.Storm Hello World * 首先编写我们的数据源类:Spout,可以使用两种方式: A、继承BaseRichSpout类 B、实现IRichSpout接口 \*、重点需要几个方法进行重写或实现:open、next Tuple、declareOutputFields * 继续编写我们数据处理类:Bolt,可以使用两种方法: A、继承BaseBasicBolt类 B、实现IRichBolt接口 \*、重点需要几个方法进行重写或实现:execute、declareOutputFields * 最后编写主函数(Topology)进行提交任务: A、在使用Topology的时候,Storm框架为我们提供了两种模式:本地模式和集群模式 B、本地模式:(无需Storm集群,直接在java中即可运行,一般用于测试和开发阶段)执行运行main函数即可 C、集群模式:(需要Storm集群,把实现Java程序打包,然后Topology进行提交)需要把应用打成jar,使用storm命令把Topology提交到集群上。 提交topology命令:`storm jar storm01.jar bhz.topoloty.PWTopology1` 查看任务命令:`storm list` 另外俩个supervisor节点`jps`显示 [70]: /images/20220526/cd47220d06684c88a55d1d54ef8e8111.png [70 1]: /images/20220526/bc6341bafe134c8da886ae1b175c6ec4.png [70 2]: /images/20220526/b41b962284d04d11aaae559a2830ab15.png
还没有评论,来说两句吧...