首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

全链路监控扩展篇:storm从1.0.2 升级到 1.2.2全流程-上

在全链路分析中,使用了storm进行流式分析,本文主要介绍storm集群环境的升级流程。

背景声明

我们的storm集群,数据主要来源于kafka,而部门的kafka集群从版本0.8.* 升级到了 0.11已经有一段时间了。从kafka-0.9之后的版本,kafka陆续提供了许多新的功能,例如,新的消费者API、消费者不依赖于Zookeeper、消息压缩等等。所以业务系统中大部分的kafka 生产者和消费者,都一并进行了升级。

而我们的在线storm集群,一直使用的版本是 1.0.2,这个版本的storm消费kafka消息依然使用老方式,即需要依赖Zookeeper得到broker地址,并且offset也是保存到Zookeeper上,这就导致了新老版本消费者并存的情况。

新老版本并存,有时会有一些问题,例如无法启用kakfa的消息压缩功能等。为了保持kafka消费者版本的一致性,故计划对storm集群进行升级。

storm 从1.0.6版本后,开始支持新的消费者API,而目前最新的release版本是 1.2.2,所以我们决定采用1.2.2版本。storm 从1.0.2升级到1.2.2,需要升级两个部分:

storm集群环境升级;

业务代码升级(主要涉及kafka消费代码);

Storm集群环境升级

由于storm主要用于流式计算,本身并不存储数据,可以将其理解为是无状态的,所以有两种升级方案可以参考:

(1)如果机器富裕,新搭建一套集群,然后把业务迁过去就行了;

(2)原有机器上升级。

我们机器资源并不充裕,所以选择的方案是在原有机器上升级storm集群,这种方法其实更简单、方便。在升级前,我们先回顾下storm集群的搭建过程(1.*版本的搭建、配置基本相同)。

storm集群的搭建过程

步骤1:规划

在x.x.x.210、x.x.x.213、x.x.x.214 三台机器上部署storm集群,相关zookeeper、nimbus和supervisor、UI规划如下:

注:在storm0.10.x以后,storm集群可以支持多个nimbus节点,实现了高可用,其中有一个为leader,负责调度。

为了便于后续维护管理,规划host 配置

步骤2:搭建准备

3台机器安装JDK + Python,我们这里用的是JDK8 和 Python2.7

步骤3:修改3台机器的hosts

配置以下内容:

步骤4:ZooKeeper搭建

分别在3台机器上部署zookeeper,组成zookeeper集群,具体安装忽略。

步骤5:下载解压storm到指定目录

步骤6:调整storm配置文件

分别调整3台机器上的storm配置文件 conf/storm.yaml

说明

配置项

说明

步骤7:启动

进入apache-storm-1.*/bin 中

机器

配置项

说明

集群搭建完成,通过UI 就可以看到storm集群情况了。

微调结构,便于后续维护

步骤1

为了后续升级方便,在home下新建 storm文件夹,并通过软连接,指向storm工程,效果:

步骤2

新建 /home/stormInstance/ ,用于启动storm集群,共包括4个文件夹及文件

文件夹

功能

storm.sh脚本内容:

步骤3

调整后的集群启动方式

进入 /home/stormInstance/bin ,通过命令启动nimbus、supervisor 、ui :

至此,调整完成,后续配置、集群集群,都不在原始的 /home/apache-storm-1.0.2 目录中,而是在新建的 /home/stormInstance 中;

storm集群从1.0.2升级到1.2.2

步骤1:下载解压1.2.2到 /home

步骤2:更新/home/storm 软连接地址

删除旧的软连接:

新建 新的软连接:

效果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180907G0XL4900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券