题外:算法中的一种排序方式 拓扑排序
一:Strom在虚拟机的安装
Strom配置
1:下载解压安装包
2:修改配置文件
(Strom的配置文件在/root/apps/storm-1.2.2/conf/storm.yaml)
storm.zookeeper.servers:
- "hdp-1"
- "hdp-2"
- "hdp-3"
storm.local.dir: "/root/stormdata"
nimbus.seeds: ["hdp-1"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
配置环境变量:cd /etc/profile 加入STROM_HOME 和strom的bin路径
export KAFKA_HOME=/root/apps/kafka_2.12-2.2.0
export PATH=$PATH:$STORM_HOME/bin
要注意配置完环境变量,需要更新文件 指令是:source /etc/profile
3把配置分发到其它机器(这里是以脚本方式,把环境变量发送到其他机器并且创建stromdata文件用来存放Strom产生的数据)
脚本创建stromdata
创建脚本 test 加入以下代码 增加可执行权限 chmod 777 test或者是chmod +x test
#!/bin/bash
for host in hdp-2 hdp-3 hdp-4
do
ssh ${host} "mkdir /root/stormdata"
done
脚本发送profile
#!/bin/bash
for host in hdp-2 hdp-3 hdp-4
do
scp /etc/profile ${host}:/etc
done
把配置好的Strom拷贝到其他机器:例把strom 从hdp-1拷贝到hdp-4的apps下
scp -r strom hdp-4:apps
Storm在集群的运行(要注意的是Strom和kafka一样,都依赖于zookeeper,所以在启动Strom前,要先启动zookeeper)
##启动nimbus
storm nimbus >/dev/null 2>&1 &
##启动supervisor
storm supervisor >/dev/null 2>&1 &
##启动core
storm ui &
##成功标志 输入jps查询
[root@hdp-1 bin]# jps
1760 core
1462 QuorumPeerMain
1656 Supervisor
1867 Jps
1500 nimbus
##注意为什么是 core不显示启动语句中的ui 是因为版本太低
在网页上输入hdp-1:8080 出现以下页面
Strom中的一些组件概念
Nimbus:Strom的Master,负责资源分配和任务调度。一个集群只有一个Nimbus
Supervisor:Strom的Slave,负责接收Nimbus分配的任务,管理所有Workers(工作进程),一个Supervisor节点中可以包含多个worker进程
Worker:工作进程,每个工作进程中都有多个Task(任务)
Task:任务,在Strom集群中每个Spout和Bolt都有若干个任务(Tasks)来执行。每个任务都与一个执行线程相对应。
parallelism:拓扑的并行度
Topology:计算拓扑(可提前理解一下拓扑算法)
Storm的拓扑是对实时计算计算应用逻辑的封装,作用与MapReduce的任务(job)相似,区别在于MapReduce的一个job在得到结果之后总会结束,而拓扑会一直在集群中运行,直到手动去终止它。另外一种理解是由一系列通过数据流(Stream Grouping)相互关联的Spout和Bolt组成的拓扑结构
未完