Hadoop集群
start-all.sh 启动全部进程
stop-all.sh停止
如果用cdh版本+cloudera manager界面化管理的话,直接在界面上点击按钮即可
原理:通果ssh执行远程shell脚本
storm停止进程
Kill -9
shell脚本开头:
#!/bin/bash
./etc/profile
以前就是直接去ui看executor下面是哪个host和port端口,比如slaves:6706,这里的host就是那些分发任务的supervisor
就直接ssh slaves
which storm
cd storm/logs
tail -20 worker-6706.log这样去查看
但是一个作业有可能分发到多台机器上去执行,这样一个个来效率很低。
0.9.0版本开始storm增加了一个很给力的特性logviewer,在早期的版本中,查看worker节点的日志决定worker节点的位置(host/port),典型是通过storm的UI,然后ssh链接到那个主机查看主机上worker的日志文件。
在最新的日志查看机制里,现在可以很容易的去访问一个指定woker节点的日志,只需要在浏览器中的stormUI里点击worker的port就可以了
新的logview进程与supervisor是相对独立的进程,如果要在新的storm里启动它,你只需要在集群的supervisor节点执行如下命令:storm logviewer
另外,0.9以后的storm新版本里面大量使用slf4j的api,而有些storm的依赖库或storm的使用者则依赖于log4j的API,所以现在storm改为依赖于log4j-over-slf4j,它可以在log4j与slf4j之间架起一座桥梁。。
首先我们在stormUI的supervisor summary中的host栏有发现有一个是slave1,一个是master
我们到对应的主机上都启起来
这些机器都nohup挂到后台nohup storm logviewer &
我们还是打开刚才的bolt,在executors一栏我们点击port号就可以进去了。
当然还有一个前提,就是把master和slave1配置到本机的host文件里面,c:\\windows\system\drivers\etc\host
这样我们就能在浏览器中直接看到日志,非常方便
设置无密码访问
1,在每台节点上执行ssh-keygen -t rsa,每台机器都生成自己的密匙
#建立ssh目录,一路敲回车,生成的密匙对id_rsa,id_rsa.pub
默认存储在~/.ssh目录下
chmod 755 .ssh #赋予755权限
cd .ssh
#ls -l
id_rsa id_rsa.pub
2,cat ~/.ssh/id_rsa.pub >> ~/.ssh/autorized_keys
#把公共密钥添加到authorized_keys文件中(此文件最后一定要赋予644权限)
#把slave1中的公式也输入到master的authorized_keys里边,这条命令是在master上运行的。
ssh slave1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#上面条命令是把其他slave节点的公钥拷贝到master节点中的authorized_keys
#有几个slave节点就需要运行几次命令,slave1是节点的名称
chmod 644 authorized_keys
scp ~/.ssh/authorized_keys slave1:~/.ssh/authorized_keys
#把authorized_keys文件拷贝回每一个节点,slave1是节点名称
在storm/bin目录下面
touch start-all.sh
touch stop-all.sh
touch supervisor-hosts
===
#在master节点上
vim start-supervisor.sh
#!/bin/bash
./etc/profile
nohup storm supervisor &
===
#把这个start-supervisor.sh scp到每个工作节点上
scp ./start-supervisor.sh slave1:/opt/soft/storm-0.9/bin/
===
vim supervisor-hosts //这里面就是存放主机名
master
slave1
===
vim start-all.sh
#!/bin/bash
./etc/profile
#假设每台supervisor上都有start-supervisor.sh这样一条命令,其实这条命令就是storm supervisor的一个封装
bin=/opt/soft/storm-0.9/bin
supervisors=/opt/soft/storm-0.9/bin/supervisor-hosts
#把主节点启起来
nohup storm nimbus &
#读这个文件做一个循环就可以了
#cat $supervisors | while read supervisor #意思就是读这个文件,读出每一行,supervisor代表的是每一行
cat $supervisors | while read supervisor
#do 开始 done结束
do
echo $supervisor
ssh $supervisor $bin/start-supervisor.sh
done
#ssh slave1 $bin/start-supervisor.sh &
==
ps -ef |grep storm 查看storm进程
停止storm进程只有一种方式,就是kill
所以我们要查看进程号:
ps -ef|grep nimbus| awk '{print $2}'
如果是kill的话,在前面加上kill -9就可以了
kill -9 'ps -ef|grep nimbus| awk '{print $2}' ‘
所以stop-all.sh的脚本应该是这样写
===
vim stop-all.sh
#!/bin/bash
./ect/profile
bin=/opt/soft/storm-0.9/bin
supervisors=/opt/soft/storm-0.9/bin/supervisor-hosts
#把nimbus相关的进程都给他杀掉
kill -9 'ps -ef|grep daemon.nimbus| awk '{print $2}' '
cat $supervisors | while read supervisor
do
#假设每个节点上都有一个stop-supervisor.sh
echo $supervisor
ssh $supervisor $bin/stop-supervisor.sh &
done
===
#在storm-0.9的bin目录下,touch stop-supervisor.sh
===
vim stop-supervisor.sh
#!/bin/bash
./etc/profile
kill -9 'ps -ef|grep daemon.supervisor|awk '{print $2}' '
===
然后把stop-supervisor.sh传到其他节点上去
scp ./stop-supervisor.sh slave1:/opt/soft/storm-0.9/bin/