一、 任务描述
本实验任务主要完成基于ubuntu环境的storm完全分布式部署。通过完成本实验任务,要求学生掌握storm完全分布式部署的来操作流程和配置内容,为学生真正使用storm进行数据处理做基础,也为从事大数据平台运维工程师、大数据技术支持工程师等岗位工作奠定夯实的技能基础。
二、 任务目标
掌握storm完全分布式部署的配置
三、 任务环境
本次环境是:Ubuntu16.04+apache-storm-1.1.1
四、 任务分析
Nimbus:Storm集群的Master节点,负责分发用户代码,指派给具体的Supervisor节点上的Worker节点,去运行Topology对应的组件(Spout/Bolt)的Task。
Superviso:Storm集群的从节点,负责管理运行在Supervisor节点上的每一个Worker进程的启动和终止。
ZooKeeper:存储客户端提供的topology任务信息,nimbus负责将任务分配信息写入Zookeeper,supervisor从Zookeeper上读取任务分配信息;存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态, 从而重启一些挂掉的worker;存储整个集群的所有状态信息和配置信息。
♥ 知识链接
Storm API
在Storm API中,定义了一个IComponent接口表示组件,用ISpout表示一个Spout,IBolt表示一个Bolt。IRichSpout接口分别继承了IComponent和ISpout接口,意味着这个接口的实现类,既是Spout,又是Topology的组件。
IRichBolt接口集成了IComponent接口和IBolt接口,表示这个接口的实现类即是Component,又是Bolt。
因此在开发中,我们通常只要实现IRichSpout和IRichBolt即可。由于IRichBolt和IRichSpout接口中定义的方法比较多。有些方法我们可能并不想实现,因此分别提供了一个实现类,BaseRichSpout和BaseRichBolt。把一些并不是一定要用户实现的方法,提供了一个默认的实现,来简化我们的开发,这实际上就适配器设计模式。
五、 任务实施
步骤1、主机映射配置
由于在实际环境中每次生成的主机名都不一致,为了命名的规范和简洁,需要修改每台虚拟机的主机名。在ip为192.168.0.2的虚拟机终端输入命令【vim /etc/hostname】,进入编辑页面输入“master”,编辑完成后保存退出。在终端输入命令【reboot】重启后,主机名就修改完成了。依次将其它两台虚拟机的主机名修改为slave1,slave2。如图1所示。
图1 修改主机名
修改每台电脑的hosts文件。hosts文件和windows上的功能是一样的。存储主机名和ip地址的映射。在每台linux上,【vim /etc/hosts】 编写hosts文件。将主机名和ip地址的映射填写进去。编辑完后,结果如图2所示:
图2 编辑hosts文件
配置完映射之后,可以通过ping命令进行测试是否能够连通,ping除了可以直接连接IP地址,也可以连接主机名,不过此时需要对配置文件hosts进行修改。“etc/hosts“文件是用来配置主机用的DNS服务器信息,是记载LAN内接各主机名称和IP地址,当用户在连接网络时,首先查找该文件,寻找对应的主机名和IP地址。这样就可以实现不同节点之间可以通过ip地址或主机名相互ping通。如图3所示
图3 测试机器之间的联通
完成以上操作即表示完成一个小的局域网络,为storm集群搭建准备好条件,由于每个节点之间需要相互配合,相互访问,为避免反复出现输入密码,此时需要对各个节点之间配置免密码配置。 无密码登陆,效果也就是在master上,通过 ssh master 或 ssh slave1 或 ssh slave2就可以登陆到对方计算机上。而且不用输入密码进入ssh目录。下面开始配置免密,进入.ssh目录并查看。如图4所示
图4 进入.ssh目录
使用命令【ssh-keygen -t rsa】,一路按回车就行了。刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。
打开~/.ssh 下面有三个文件
(1)authorized_keys,已认证的keys
(2)id_rsa,私钥
(3)id_rsa.pub,公钥三个文件。
下面就是关键的地方了,(下面的操作为ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)在master上将公钥放到authorized_keys里。命令:【 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys】。如图5所示
图5 生成公钥和私钥
如果有其他 slave 节点,也要执行将 master 公匙传输到 Slave 节点、在 slave 节点上加入授权这两步。这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验,如下图所示
将master上的公钥放到其他虚拟机的~/.ssh目录下,并测试免密是否成功。下面是放到对slave1的免密配置,依次完成slave2。如图6所示。注意:在进行文件传输时需要密码为“Simplexue123“。上述的操作过程只是单向的,即此时,ssh root@slave1和ssh root@slave2是不需要密码的。而ssh root@master等反向仍然是需要密码的。
图6 将公钥传给其他机器
步骤2、在master主节点上解压缩
执行命令:cd /simple/soft进入soft目录,如图7所示。
图片7 进入压缩包目录
执行命令:ls查看storm安装包,如图8所示
图片8 查看storm安装包
执行命令:tar -zxvf apache-storm-1.0.2.tar.gz -C /simple进行解压缩,如图9所示
图片9 解压缩
进入simple目录,执行命令:ls查看storm解压后的文件夹并修改为简称storm,如图10所示
图片10 重命名压缩文件
修改storm环境变量,在任意目录下执行命令:vim ~/.bashrc编辑配置文件,如图11所示
图片11 编辑环境变量
环境变量配置文件生效,执行命令:source ~/.bashrc,如图12所示
图片12 主节点环境变量配置文件生效
将环境变量配置文件复制给其它两个从节点,如图13所示
图片13 从节点环境变量配置文件生效
步骤3、配置storm
对storm安装目录下的/simple/storm/conf/storm.yaml文件进行配置修改,如图14所示
图片14 修改配置
将storm安装目录/simple/storm复制给其它两个从节点,如图15、16所示
图片15 拷贝storm文件
图片16 拷贝storm文件
步骤4、启动storm
进入每一台机器的zookeeper配置目录/simple/zookeeper/conf下执行命令:vim zoo.cfg,修改dataDir的路径,如图17所示
在每一台机器的/simple/zookeeper目录下执行命令:vim myid,新建myid文件,在master上的myid中填写数字0,在slave1上的myid中填写数字1,在slave2上的myid中填写数字2。
给每一台机器启动zookeeper服务,进入zookeeper安装目录下的bin目录:cd /simple/zookeeper/bin执行命令:./zkServer.sh start,如图18所示
图片18 启动zookeeper服务
在master主节点任一目录下执行命令:storm nimbus和storm ui启动Storm nimbus和web服务,如图19, 20所示
图19 启动Storm nimbus
图20 启动Storm ui服务
在slave1和slave2节点任一目录下执行命令:source ~/.bashrc刷新配置文件和执行命令:storm supervisor启动storm supervisor服务,如图21所示
图片21 启动storm supervisor服务
在master主节点上访问ui页面: http://master: 8080/,如图22所示
图片22 访问页面
步骤5、集群状态查看
再在master主节点打开一个终端,执行命令:jps查看启动的服务,如图23所示
图片23 查看从节点启动的服务
再在slave1(或slave2)节点打开一个终端,执行命令:jps查看启动的服务,如图24所示
图片24 查看从节点启动的服务