如果对流式计算概念,核心组件,编程模型不熟悉可以参考流式计算--storm1(storm概念初识)
1.环境:
机器配置:centos7 jdk8 storm 1.0 .6 zookeeper 3.4.13
1. 安装CentOS7注意:安装CentOs7,配置NAT网络,但是还没有网,没有IP地址
所以修改/etc/sysconfig/network-scripts/ifcfg-ens33 文件
查看防火墙状态:firewall-cmd --state
永久关闭防火墙:systemctl disable firewalld.service
2.创建普通用户
useradd storm
#为storm用户添加密码:
echo 123456| passwd --stdin storm
#将storm添加到sudoers,这是重新创建一个用户组,他有着自己的home/ storm目录
echo "storm ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ storm
chmod 0440 /etc/sudoers.d/ storm
#修改配置文件sudo vim /etc/sudoers
root ALL=(ALL) ALL
storm ALL=(ALL) ALL
给storm用户添加执行的权限然后强制保存
3.安装jdk
mkdir /export
mkdir /export/servers
sudo chmod -R 777 /export
export JAVA_HOME=/export/servers/jdk/jdk1.8.0_181
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
4.安装zookeeper:上传解压 配置文件
cd /export/servers/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
内容如下:
# The number of milliseconds of each tick
#基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
#此配置表示,允许 follower (相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间,
#它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
#此配置表示, leader 与 follower 之间发送消息,请求和应答时间长度。
#如果 follower 在设置的时间内不能与 leader 进行通信,那么此 follower 将被丢弃
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#数据目录. 可以是任意目录,其中的dataDir目录和dataLogDir需要提前建立好
#注意 应该谨慎地选择日志存放的位置,使用专用的日志存储设备能够大大地提高系统的性能,
#如果将日志存储在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。
dataDir=/export/servers/data/zookeeper
#log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置,其中的dataDir目录和dataLogDir需要提前建立好
#注意 应该谨慎地选择日志存放的位置,使用专用的日志存储设备能够大大地提高系统的性能,
#如果将日志存储在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。
dataLogDir=/export/servers/logs/zookeeper
# the port at which the clients will connect
#监听client连接的端口号.
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。
#此配置选项可以用来阻止某些类别的 Dos 攻击。
#将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。
maxClientCnxns=0
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#最小的会话超时时间以及最大的会话超时时间。
#其中,最小的会话超时时间默认情况下为 2 倍的 tickTme 时间
#最大的会话超时时间默认情况下为 20 倍的会话超时时间
minSessionTimeout=4000
maxSessionTimeout=10000
#server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址.
#B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
#在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server.
#该数字必须和zoo.cfg文件中的server.X中的X一一对应.
#2888是leader和follower通信的端口,3888是投票的端口
server.1=192.168.25.130:2888:3888
server.2=192.168.25.131:2888:3888
server.3=192.168.25.132:2888:3888
创建配置中的数据目录和日志目录:
mkdir -p /export/servers/data/zookeeper
mkdir -p /export/servers/logs/zookeeper
在上文中 /export/servers/data/zookeeper 的目录下,创建myid文件。
myid文件的内容,根据所属主机编号来编写。
解释:
创建数据目录,也就是在你zoo.cfg配置文件里dataDir指定的那个目录下创建myid文件,并且指定id,改id为你zoo.cfg文件中server.1=localhost:2887:3887中的1.只要在myid头部写入1即可.
配置环境变量:
export ZK_HOME=/export/servers/zk
export PATH=${ZK_HOME}/bin:$PATH
加载配置文件使其生效:source /etc/profile
5.安装storm
1.解压到指定目录:
tar -zxvf apache-storm-0.9.5.tar.gz -C /export/servers/
cd /export/servers/
ln -s apache-storm-0.9.5 storm
2.配置环境变量
vim /etc/profile
export STORM_HOME=/export/servers/storm
export PATH=$PATH:$STORM_HOME/bin
3.编辑storm核心配置文件
vim storm.yaml
#指定storm使用的zk集群
storm.zookeeper.servers:
- "storm01"
- " storm02"
- " storm03"
#指定storm集群中的nimbus节点所在的服务器
nimbus.host: " storm01"
#指定nimbus启动JVM最大可用内存大小
nimbus.childopts: "-Xmx1024m"
#指定supervisor启动JVM最大可用内存大小
supervisor.childopts: "-Xmx1024m"
#指定supervisor节点上,每个worker启动JVM最大可用内存大小
worker.childopts: "-Xmx768m"
#指定ui启动JVM最大可用内存大小,ui服务一般与nimbus同在一个节点上。
ui.childopts: "-Xmx768m"
#指定supervisor节点上,启动worker时对应的端口号,每个端口对应槽,每个槽位对应一个worker
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
4.修改hosts:
192.168.25.130 storm01 zk01
192.168.25.131 storm02 zk02
192.168.25.132 storm03 zk03
这儿很重要的一步是克隆三台机器,修改zookeeper的配置文件myid
5.修改虚拟机的名字
hostnamectl set-hostname
6.启动zookeeper集群:zkServer.sh start
查看集群的状态,没有问题./zkServer.sh status
6.启动storm
启动storm:
- 在nimbus.host所属的机器上启动 nimbus服务
cd /export/servers/storm/bin/
nohup ./storm nimbus &
- 在nimbus.host所属的机器上启动ui服务
cd /export/servers/storm/bin/
nohup ./storm ui &
- 在其它个点击上启动supervisor服务
cd /export/servers/storm/bin/
nohup ./storm supervisor &
7.查看集群
访问nimbus.host:/8080,即可看到storm的ui界面。
流式计算一般架构图
(下面会一步一步实现这个流程敬请期待。。。)
- 其中flume用来获取数据。
- Kafka用来临时保存数据。
- Strom用来计算数据。
- Redis是个内存数据库,用来保存数据。