Storm集群安装,基于版本1.0.1,

同时开启Kerberos安全认证,

使用apache-storm-1.0.1.tar.gz安装包。

1.安装规划

角色规划 IP/机器名 安装软件 运行进程
UI, nimbus zdh-237 storm core,nimbus
supervisor zdh-238 storm supervisor,worker,LogWriter
supervisor zdh-239 storm supervisor,worker,LogWriter

Storm集群有三台机器,各个角色的安装规划如上。

2.安装用户

storm/zdh1234

useradd -g hadoop -s /bin/bash -md /home/storm storm

3.安装依赖

1.JDK

2.Python

3.Zookeeper

4.Kerberos

4.主机名配置

vi /etc/hosts
10.43.159.237 zdh-237
10.43.159.238 zdh-238
10.43.159.239 zdh-239
10.43.159.240 zdh-240

5.JDK安装

可以使用root用户安装的公共jdk,要求JDK 6+,

为Storm用户配置JAVA_HOME:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

6.Python安装

确定系统自带的Python版本,如果是2.6.6+可以不用再安装。

python -V

如果版本不对,请参考以下文章安装或者升级Python:

Python升级至2.7方法

7.Zookeeper安装

请参考Zookeeper集群安装(开启kerberos)

这里使用的Zookeeper集群信息:

zookeeper集群 zookeeper/zdh1234

zdh-237,zdh-238,zdh-239 端口:12181

8.Kerberos安装

Kerberos安装方法请自行百度参考。

这里使用的Kerberos集群信息:

Kerberos服务器:

root/zdh1234

zdh-240

Kerberos客户端:

zdh-237,zdh-238,zdh-239

Kerberos是用于认证用户的,

Storm安装集群上要有keberos的客户端。

9.Storm安装

请自行从官网获取安装包:

apache-storm-1.0.1.tar.gz

将安装包上传到zdh-237的storm用户下,

解压安装包:

tar -zxvf apache-storm-1.0.1.tar.gz

配置环境变量和别名,方便操作:

export STORM_HOME=/home/storm/apache-storm-1.0.1
export PATH=$PATH:$STORM_HOME/bin
alias logs='cd $STORM_HOME/logs'
alias conf='cd $STORM_HOME/conf'

创建本地数据存放的目录:

mkdir /home/storm/apache-storm-1.0.1/data

10.配置storm.yaml文件

vi conf/storm.yaml

修改为如下配置,注意字符串需要加上引号,特别是包含**/**的值:

storm.zookeeper.servers:
- "zdh-237"
- "zdh-238"
- "zdh-239"
storm.zookeeper.port: 12181
storm.local.dir: "/home/storm/apache-storm-1.0.1/data"
nimbus.seeds: ["zdh-237", "zdh-238", "zdh-239"]
nimbus.thrift.port: 6627
ui.port: 18080
logviewer.port: 8000
drpc.port: 3772
drpc.invocations.port: 3773
drpc.http.port: 3774
ui.filter: "org.apache.hadoop.security.authentication.server.AuthenticationFilter"
ui.filter.params:
"type": "kerberos"
"kerberos.principal": "HTTP/zdh-237@ZDH.COM"
"kerberos.keytab": "/home/storm/apache-storm-1.0.1/conf/HTTP.keytab"
"kerberos.name.rules": "RULE:[2:$1/$2@$0](.*@ZDH.COM)s/.*/storm/"
ui.header.buffer.bytes: 65536
storm.thrift.transport: "org.apache.storm.security.auth.kerberos.KerberosSaslTransportPlugin"
java.security.auth.login.config: "/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
nimbus.childopts: "-Xmx1024m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
ui.childopts: "-Xmx768m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
supervisor.childopts: "-Xmx256m -Djava.security.auth.login.config=/home/storm/apache-storm-1.0.1/conf/storm-jaas.conf"
storm.principal.tolocal: "org.apache.storm.security.auth.KerberosPrincipalToLocal"
storm.zookeeper.superACL: "sasl:storm"
nimbus.impersonation.authorizer: "org.apache.storm.security.auth.authorizer.ImpersonationAuthorizer"
nimbus.impersonation.acl:
"storm/zdh-237@ZDH.COM":
"hosts":
["zdh-237"]
"groups":
["hadoop"]
"storm/zdh-238@ZDH.COM":
"hosts":
["zdh-238"]
"groups":
["hadoop"]
"storm/zdh-239@ZDH.COM":
"hosts":
["zdh-239"]
"groups":
["hadoop"]

请注意正确配置上面的每一个配置项,

有问题可以参加storm.yaml中对配置项的解释。

11.创建storm-jaas.conf文件

在/home/storm/apache-storm-1.0.1/conf目录下,

创建storm-jaas.conf文件内容如下:

StormServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
principal="storm/zdh-237@ZDH.COM";
};
StormClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
serviceName="storm"
principal="storm/zdh-237@ZDH.COM";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/storm/apache-storm-1.0.1/conf/storm.keytab"
storeKey=true
useTicketCache=false
principal="storm/zdh-237@ZDH.COM";
};

12.确定要访问的Zookeeper服务器名称

上面Client是Storm用来访问Zookeeper的,

如果未指定serviceName作为请求对象,

则默认是zookeeper@zdh-237@ZDH.COM。

StormClient是UI(core)用来访问nimbus的,

如果指定serviceName=“stormkrb”,

则访问的是stormkrb/zdh-237@ZDH.COM,

否则默认向TGTServer请求的服务器的

名字为storm/zdh-237@ZDH.COM,

即serviceName作用是指定要访问的AppServer服务器名称。

Storm使用Zookeeper的客户端访问

开启kerberos的zookeeper服务端时,

如果Zookeeper的服务端的安装用户不为zookeeper,

假设服务器名称是zookeeperkrb时,

则需要在storm中需要修改storm.yaml中nimbus的进程参数,

指明客户端需要访问的服务端的名称:

nimbus.childopts: "-Xmx1024m -Djava.security.auth.login.config=/home/stormkrb/apache-storm-1.0.1/conf/storm-jaas.conf -Dzookeeper.sasl.client.username=zookeeperkrb"

zookeeperkrb即为Storm的nimbus要访问的Zookeeper服务端的名称,

同时配合storm-jaas.conf的Client配置能够正确的工作。

Storm的supervisor也是需要访问zookeeper的,

同步进行修改如下:

supervisor.childopts: "-Xmx256m -Djava.security.auth.login.config=/home/stormkrb/apache-storm-1.0.1/conf/storm-jaas.conf -Dzookeeper.sasl.client.username=zookeeperkrb"

13.创建Storm和HTTP的principal

操作机器:

在zdh-240 Kerberos服务器,

使用root用户,切换到/root/keytabs目录,

执行如下操作命令:

kadmin.local
addprinc -randkey storm/zdh-237@ZDH.COM
addprinc -randkey storm/zdh-238@ZDH.COM
addprinc -randkey storm/zdh-239@ZDH.COM
xst -k storm.keytab storm/zdh-237@ZDH.COM
xst -k storm.keytab storm/zdh-238@ZDH.COM
xst -k storm.keytab storm/zdh-239@ZDH.COM addprinc -randkey HTTP/zdh-237@ZDH.COM
addprinc -randkey HTTP/zdh-238@ZDH.COM
addprinc -randkey HTTP/zdh-239@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-237@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-238@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-239@ZDH.COM
exit

把storm.keytab和HTTP.keytab拷贝到storm的conf目录下:

scp storm.keytab storm@zdh-237:/home/storm/apache-storm-1.0.1/conf
scp HTTP.keytab storm@zdh-237:/home/storm/apache-storm-1.0.1/conf

storm.keytab:

用于UI访问Nimbus,以及Strom访问Zookeeper时Kerberos鉴权。

HTTP.keytab:

用于UI对外提供Rest查询管理等服务。

14.拷贝Storm到集群其他机器

zdh-237的stom复制到zdh-238节点的storm用户下:

scp -r storm@zdh-237:/home/storm/apache-storm-1.0.1 .

修改storm.yaml文件,替换zdh-237为zdh-238,

注意不要把storm.zookeeper.servers和nimbus.seeds里面数组替换掉了。

修改storm-jaas.conf文件,替换zdh-237为zdh-238:

%s/zdh-237/zdh-238/g

对zdh-239节点操作类似。

如果后面又修改了配置,可以仅拷贝同步配置文件:

scp storm@zdh-237:/home/storm/apache-storm-1.0.1/conf/storm.yaml .

15.启动Storm

启动之前请确保ZooKeeper,Kerberos等已正常启动

15.1.nimbus节点启动(无日志)

bin/storm nimbus >/dev/null 2>&1 &

bin/storm ui >/dev/null 2>&1 &

supervisor节点启动:

bin/storm supervisor >/dev/null 2>&1 &

15.2.nimbus节点启动(有日志):

storm nimbus >nimbusInit.log 2>&1 &

storm ui >uiCoreInit.log 2>&1 &

supervisor节点启动:

storm supervisor > superInit.log 2>&1 &

15.3.Storm启动后相关进程

nimbus启动后相应会产生如下进程:

core(对应Storm UI)

nimbus

supervisor启动后相应会产生如下进程:

supervisor

提交storm任务后还会生成:

worker,LogWriter

15.4.Storm重启

Storm没有提高停止节点的命令,

需要先使用jps或者ps找到Storm所有进程,

再kill掉相应进程,重新启动。

16.登陆Web管理页面

需要使用具有Kerberos客户端的Lunix环境上面的浏览器,

例如zdh-237上面的firefox:

10.43.159.41:18080 (不能用,开启kerberos就无法访问)

zdh-237:18080 (能用)

关于如何使用Lunix上面的firefox,请参考:

MobaXterm远程连接Linux图形用户界面

Xstart远程连接Linux图形用户界面

VNC的安装和使用

17.提交topo任务

运行自带测试用例

cd /home/storm/apache-storm-1.0.1/examples/storm-starter/

storm jar storm-starter-topologies-1.0.1.jar storm.starter.StatefulTopology topoNewTest1

18.查询提交的topo任务

18.1.后台命令查看topo信息

storm list

18.2.模拟http请求topo信息

查看crul的特性Features,需要支持GSS-Negotiate:

curl -V

先使用kinit获取票据:

kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM

注意需要使用域名zdh-237,而不能用真实的IP,

而且curl向TGTServer请求访问的Server是HTTP/zdh-237@ZDH.COM:

curl -u : --negotiate http://zdh-237:18080/api/v1/topology/summary

如果没有响应,使用下面的进行调试:

curl -v -i -u : --negotiate http://zdh-237:18080/api/v1/topology/summary

下面这种使用IP的是无法成功的:

curl -i --negotiate -u : http://10.43.159.237:18080/api/v1/topology/summary

18.3.使用浏览器查看topo信息

使用vncview登陆zdh-237的可视化界面:

10.43.159.237:1

使用storm/zdh1234用户登陆

Firefox地址栏输入:

about:config

搜索配置项network.negotiate-auth.trusted-uris

双击添加变量值 “http://zdh-237:18080

然后在firefox里面输入:

http://zdh-237:18080

如果登陆失败,在命令行使用kinit获取票据:

kinit -kt /home/storm/apache-storm-1.0.1/conf/storm.keytab storm/zdh-237@ZDH.COM

再次输入地址即可访问stormUI

19.问题总结

19.1

storm.zookeeper.superACL: "sasl:storm"如果未配置,会导致worker进程无法启动

19.2

不要在业务启动之前运行kinit,业务启动是发现kerberos鉴权不过,

则删除tmp目录下storm创建的类似/tmp/kbr5cc_[UID]的文件

NOT to run kinit before starting the app.

rm krb5cc_521

19.3

删除原有zookeeper上面的storm集群信息

deleteall /storm

如果/storm被加密无法删除,需要使用zookeeper的超级账户删除,

请参考Zookeeper使用超级用户删除带权限的节点

或者清除zookeeper下面的dataDir,相当于初始化zookeeper。

19.4

其他问题,请参考Storm集群安装Version1.0.1

建议安装普通Storm集群,可以正常运行之后,再来开启Kerberos。

Storm集群安装Version1.0.1开启Kerberos的更多相关文章

  1. Storm集群安装Version1.0.1

    Storm集群安装,基于版本1.0.1, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 nimbus zdh-237 sto ...

  2. Kafka集群安装Version1.0.1(自带Zookeeper)

    1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...

  3. Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...

  4. Storm集群安装部署步骤【详细版】

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...

  5. Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境

    一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...

  6. Storm集群安装部署步骤

    本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...

  7. Storm 集群安装

    http://archive.apache.org/dist/storm/  版本都在这 本人安装的是 其他版本的自行安装吧,估计都差不多 sudo mkdir /export/serverssudo ...

  8. storm集群安装部署

    安装步骤: 搭建Zookeeper集群: 安装Storm依赖库: 下载并解压Storm发布版本: 修改storm.yaml配置文件: 启动Storm各个后台进程. 1. 搭建Zookeeper集群 这 ...

  9. Hbase集群安装Version1.1.5

    Hbase集群安装,基于版本1.1.5, 使用hbase-1.1.5.tar.gz安装包. 1.安装说明 使用外部Zookeeper集群而非Hbase自带zookeeper, 使用Hadoop文件系统 ...

随机推荐

  1. canal安装与使用

    安装 alpha的版本不是稳定的版本 wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deploye ...

  2. maven高级学习

    上一篇<maven是什么>介绍了最初级的maven学习,今天就趁着周末的大好时光一起学习下maven的高级知识吧. 1.maven工程要导入jar包的坐标,就必须要考虑解决jar冲突 1) ...

  3. JSP常用内置对象

    1.request 1.1getAttribute(String name) 2.getAttributeName() 3.getCookies() 4.getCharacterEncoding() ...

  4. WebDriver驱动下载地址

    chrome的webdriver: http://chromedriver.storage.googleapis.com/index.html Firefox驱动下载地址为:https://githu ...

  5. 严重危害警告!Log4j 执行漏洞被公开!

    12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重. Log4j2 是一个基于 Java 的日志记录工具.它重写了 Log4j 框架,引入 ...

  6. [BUUCTF]REVERSE——xor

    xor 附件 步骤: 附件很小,直接用ida打开,根据检索得到的字符串,找到程序关键函数 程序很简单,一开始让我们输入一个长度为33的字符串给v6,然后v6从第二个字符开始与前一个字符做异或运算,得到 ...

  7. Indirect函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  8. oracle11gR2、client及plsql完整安装与配置

    本文主要介绍Oracle11g,client及PLSQL的安装过程 一,oracle安装 安装环境:虚拟机win7 64 1.点击目录中 setup.exe文件 2.配置安全更新中,取消通过my or ...

  9. CF1265B Beautiful Numbers 题解

    Content 给定一个 \(1\sim n\) 的排列,请求出对于 \(1\leqslant m\leqslant n\),是否存在一个区间满足这个区间是一个 \(1\sim m\) 的排列. 数据 ...

  10. CF102B Sum of Digits 题解

    Content 给定一个数 \(n\),每次操作可以将 \(n\) 变成 \(n\) 各位数之和.问你几次操作之后可以将 \(n\) 变为一位数. 数据范围:\(1\leqslant n\leqsla ...