原料:
VMware虚拟机(VMware Workstation Pro),CentOS镜像(CentOS-6.5-x86_64-bin-DVD1.ios),
Notepad++(npp.7.6.6.Installer.exe),intellij idea(ideaIU-2018.2.8.exe),jdk1.8.0_162.tar.gz,hadoop-2.9.2-src.tar.gz,
Python-2.7.15.tgz(官网下载:https://www.python.org/ftp/python/2.7.15/ ),apache-storm-0.9.2-incubating.tar.gz,
SecureCRT8.1
Notepad++的安装:傻瓜式安装
节点名称 | Ip | 节点角色 | 备注 |
storm01 | 192.168.189.240 | nimbus/zookeeper | 主节点/ZK 节点 |
storm02 | 192.168.189.241 | supervisor/zookeeper | 工作节点/ZK 节点 |
storm03 | 192.168.189.242 | supervisor/zookeeper | 工作节点/ZK 节点 |
准备工作:
①打开VMware虚拟机
②点击菜单栏 文件-->新建虚拟机
选择CentOS的镜像
设置名称,密码
等待……
选择other Username: root password:storm
打开后的界面:
③设置网关
点击菜单栏:编辑-->虚拟网络编辑器
选中VMnet8,并选择NAT模式
点击NAT设置,查看并记住网关IP
点击DHCP,查看其实IP地址和结束IP地址
点击桌面右上角的 两台电脑的小图标,VPN connections-->configure VPN
选中第一条选项,Edit
点击IPv4 Settings ,选择Manual, Add,填写信息,Apply
右击桌面,打开终端,输入命令重启网关,试一下是否能上网,出现以下界面则OK
用相同方法新建另外两台虚拟机storm02、storm03:
密码都为:storm
配置网关:
storm02: 192.168.189.241 255.255.255.0 192.168.189.2(不太确定,可以自行查看,方法见前面)
8.8.8.8 4.4.4.4
storm03: 192.168.189.242 255.255.255.0 192.168.189.2(不太确定,可以自行查看,方法见前面)
8.8.8.8 4.4.4.4
设置时间(保证三台虚拟机的时间一致)
打开CRT8.1(SecureCRT8.1的安装方法见https://blog.csdn.net/zytmaster/article/details/100588387),连接上三台虚拟机storm01,storm02,storm03对三台虚拟机都执行如下命令:
1、设置ssh免密(方便后面操作时不用输入密码):
输入命令:ssh-keygen -t rsa之后三次回车
输入命令:ssh-copy-id 192.168.189.240 (这是在storm01中输入)
ssh-copy-id 192.168.189.241 (这是在storm02中输入)
ssh-copy-id 192.168.189.242 (这是在storm03中输入)
2、关闭防火墙:chkconfig iptables off
vim /etc/sysconfig/selinux(#进入文档后修改SELINUX=disabled)
3、设置主机名:vim /etc/sysconfig/network(#进入文档后三台虚拟机分别对应修改HOSTNAME=storm01,HOSTNAME=storm02,HOSTNAME=storm03)
4、设置主机与IP的对应关系:vim /etc/hosts
(#进入文档后三台虚拟机都在末尾添加三行相同的信息(建议不要复制,自己输入时空开的地方只需要点击一次tab键):
192.168.189.240 storm01
192.168.189.241 storm02
192.168.189.242 storm03
)
5、reboot (#重启虚拟机)
三台虚拟机都重启完成后,用CRT8.1重新连接,在三台虚拟机中都执行以下命令来测试节点的连通性:
ping storm01
ping storm02
ping storm03
如果都能成功ping同,则OK!
接下来配置java环境:
#先创建一些文件夹,方便管理:
[root@storm01 ~]# cd /home/ [root@storm01 home]# ls storm [root@storm01 home]# rm -rf storm [root@storm01 home]# mkdir data [root@storm01 home]# mkdir softwares [root@storm01 home]# mkdir tools [root@storm01 home]# cd softwares/ [root@storm01 softwares]# mkdir java8 [root@storm01 softwares]# cd ../tools/
#安装上传工具
[root@storm01 tools]# yum -y install lrzsz
#安装完后上传jdk1.8.0_162.tar.gz文件
[root@storm01 tools]# rz
#上传后将其解压到 /home/softwres/java8/ 中
[root@storm01 tools]# tar -zxf jdk1.8.0_162.tar.gz -C ../softwares/java8/
#获取以下路径,用于配置java环境
[root@storm01 tools]# cd ../softwares/java8 [root@storm01 java8]# pwd /home/softwares/java8
#打开环境配置文档
[root@storm01 java8]# vim /etc/profile
#在文档末尾添加内容如下:
export JAVA_HOME=/home/softwares/java8 export PATH=$PATH:$JAVA_HOME/bin
#刷新环境配置文档
[root@storm01 java8]# source /etc/profile
#检查java版本,出现以下情况则配置成功!!!
[root@storm01 java8]# java -version java version "1.8.0_162" ……(后面内容省略) [root@storm01 java8]# javac -version javac 1.8.0_162
对另外两台虚拟机storm02、storm03进行以上相同操作,配置好java环境
安装storm集群的前提是安装并升级Python2.7或以上!!!如果系统自带的是2.7版本以下的,以下是升级方法!
#上传Python-2.7.15.tgz文件到 /home/tools/ 中
[root@storm01 home]# cd tools/ [root@storm01 tools]# rz
#上传完后将其解压到 /home/softwares/ 中
[root@storm01 tools]# tar -zxf Python-2.7.15.tgz -C ../softwares/ [root@storm01 tools]# cd /home/softwares/Python-2.7.15/
#接着进行配置阶段
[root@storm01 Python-2.7.15]# ./configure
#执行成功之后,进行编译和安装阶段
[root@storm01 Python-2.7.15]# make && make install
#等待一会的时间即可,如果编译时可能会出现没有gcc,gcc-c++编译器,需要安装以下
[root@storm01 Python-2.7.15]# yum install gcc [root@storm01 Python-2.7.15]# yum install gcc-c++
#安装好python2.7.15后,然后将原来默认版本python2.6备份起来,并且将yum配置进行修改,否则执行yum命令时候会出现问题,操作如下:
[root@storm01 Python-2.7.15]# mv /usr/bin/python /usr/bin/python2.6.6 [root@storm01 Python-2.7.15]# ln -s /usr/local/bin/python2.7 /usr/bin/python [root@storm01 Python-2.7.15]# vim /usr/bin/yum
#进入文档后,将第一行#!/usr/bin/python2.6改为#!/usr/bin/python2.6.6
以上步骤操作完后,就可以查看当前python的版本了:
输入命令python -V或者python --version
!!!若出现错误,再进行以下步骤(若正常跳过此步骤)
vim /etc/ld.so.conf,添加新的一行内容/usr/local/lib 然后保存退出
/sbin/ldconfig
/sbin/ldconfig -V
最后可以执行python,是否正常进入交互
这样就升级成功!!!
准备工作结束!!!
部署Storm集群主要步骤:
下面是搭建一个 Storm 集群需要依次完成的安装步骤:
- 搭建 Zookeeper 集群
- 在主控节点和工作节点服务器上安装 Storm 依赖软件
- 在主控节点和工作节点服务器上安装 Storm
- 修改 storm.yaml 配置文件
启动 Storm 各后台进程
搭建zookeeper集群,对于三台虚拟机storm01、storm02、storm03都进行如下操作(除了特殊说明外,内容都一样)
#上传zookeeper-3.4.13.tar.gz文件到 /home/tools/ 中
[root@storm01 home]# cd tools/ [root@storm01 tools]# rz
#上传完后将其解压到 /home/softwares/ 中
[root@storm01 tools]# tar -zxf zookeeper-3.4.13.tar.gz -C ../softwares/ [root@storm01 tools]# cd /home/softwares/zookeeper-3.4.13/
#创建几个文件夹,后面配置环境时需要
[root@storm01 zookeeper-3.4.13]# mkdir zkdata [root@storm01 zookeeper-3.4.13]# mkdir logs
#获取以下文件夹的路径,用于后面的配置文件的修改
[root@storm01 zookeeper-3.4.13]# cd conf
#将其中的文件zoo_sample.cfg复制为文件zoo.cfg
[root@storm01 conf]# cp zoo_sample.cfg zoo.cfg
#修改配置文件zoo.cfg
[root@storm01 conf]# vim zoo.cfg
#打开文档后,修改并添加以下红框中的内容:
【说明】:dataDir 指定 Zookeeper 的数据文件目录 server.id=host:port:port,id 是为每个 Zookeeper 节点的编号,保存在 dataDir 目录下的 myid 文件中,storm01、storm02、storm03表示各个 Zookeeper 节点的 hostname,第一个 port 是用于连接 leader 的端口,第二个 port 是用于 leader 选举的端口。
#根据zoo.cfg三台虚拟机分别创建创建myid
storm01(1号节点):
storm02(2号节点):
storm03(3号节点):
【说明】:conf/zoo.cfg 文件中的 dataDir 参数指定目录下创建 myid 文件,里面内容为一个数字,用来 标识当前主机,conf/zoo.cfg 文件中配置的 server.X 中 X 是什么数字,则 myid 文件中就输入 这个数字
#配置zookeeper环境变量
#获取以下文件夹的路径,用于环境变量的配置
[root@storm01 zookeeper-3.4.13]# pwd /home/softwares/zookeeper-3.4.13 [root@storm01 zookeeper-3.4.13]# vim /etc/profile
#打开文档后,在末尾添加如下内容:
export ZOOKEEPER_HOME=/home/softwares/zookeeper-3.4.13 export PATH=$PATH:$ZOOKEEPER_HOME/bin
#刷新文档
[root@storm01 zookeeper-3.4.13]# source /etc/profile
#启动zookeeper服务,命令为:zkServer.sh start
#查看启动后的状态属性,命令为:zkServer.sh status
!!!注意:可以输入命令jps查看进程
停止服务的命令为:zkServer.sh stop
搭建storm集群,对于三台虚拟机storm01、storm02、storm03都进行如下操作(除了特殊说明外,内容都一样)
#上传apache-storm-0.9.2-incubating.tar.gz文件到 /home/tools/ 中
[root@storm01 home]# cd tools/ [root@storm01 tools]# rz
#上传完后将其解压到 /home/softwares/ 中
[root@storm01 tools]# tar -zxf apache-storm-0.9.2-incubating.tar.gz -C ../softwares/ [root@storm01 tools]# cd /home/softwares/apache-storm-0.9.2-incubating/
#获取以下文件夹的路径,用于环境变量的配置
[root@storm01 apache-storm-0.9.2-incubating]# pwd /home/softwares/apache-storm-0.9.2-incubating/
#打开环境变量配置文件
[root@storm01 apache-storm-0.9.2-incubating]# vim /etc/profile
#在文档末尾添加如下内容:
export STORM_HOME=/home/softwares/apache-storm-0.9.2-incubating export PATH=$PATN:$STORM_HOME/bin
#刷新文档
[root@storm01 apache-storm-0.9.2-incubating]# source /etc/profile
#新建存储状态文件夹,用于后面的配置
[root@storm01 apache-storm-0.9.2-incubating]# mkdir status
#获取其路径
[root@storm01 status]# pwd /home/softwares/apache-storm-0.9.2-incubating/status
#修改storm的配置文件storm.yaml,
打开文件方法有两种:
①直接命令打开
vim /home/softwares/apache-storm-0.9.2-incubating/conf/storm.yaml
②用Notepad++连接需要操作的虚拟机,在右边的文件目录中找到storm.yaml文件,打开(这种方法,编辑时更加方便,不容易误删信息)
打开后,需要修改添加的内容如下:(!!!注意:开头空一格,没有顶格写)
storm.zookeeper.servers: - "storm01" - "storm02" - "storm03" nimbus.host: "storm01" storm.local.dir: "/home/softwares/apache-storm-0.9.2-incubating/status" supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
【说明】:
storm.zookeeper.servers: Storm 集群使用的 Zookeeper 集群地址。 storm.local.dir: Nimbus 和 Supervisor 进程用于存储少量状态,如 jars、confs 等的本地磁盘目 录,需要提前创建该目录并给以足够的访问权限。然后在 storm.yaml 中配置该目录。 nimbus.host: Storm 集群 Nimbus 机器地址,各个 Supervisor 工作节点需要知道哪个机器是 Nimbus,以便下载 Topologies 的 jars、confs 等文件。 supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker 数量。每个 worker 占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是 可被 worker 使用的。默认情况下,每个节点上可运行 4 个 workers,分别在 6700、6701、 6702 和 6703 端口。
启动storm,执行如下命令,storm03命令同storm02
#三台虚拟机都完成了以上操作后,启动storm集群并检查相应进程:jps
#通过浏览器登录监控UI页面,查看监控属性(http://{nimbus host}:8080),观察集群的 worker 资源使用情况、 Topologies 的运行状态等信息。
至此,storm集群搭建完成!
storm集群的常用操作命令:
列出 Storm Topology:storm list
停止 Storm Topology:storm kill {topologyname}
提交 Storm Topology:storm jar mycode.jar storm.MyTopology arg1 arg2 ... mycode.jar:包含 Topology 实现代码的 jar 包
storm.MyTopology:main 方法的入口,即 main 方法所在类名
arg1、arg2 等为 main 方法参数
Storm集群上的一个运行实例见https://blog.csdn.net/zytmaster/article/details/101316648