转载请注明出处:http://blog.csdn.net/l1028386804/article/details/78419484

一、机器规划

主机名 IP Zookeeper Nimbus Supbervisor
liuyazhuang161 192.168.209.161
liuyazhuang162 192.168.209.162
liuyazhuang163 192.168.209.163

二、搭建Java环境

1、下载JDK

可以到Oracle官网下载Linux版本的JDK,链接为:http://www.oracle.com/technetwork/java/javase/downloads/index.html 我下载的是jdk1.7.0_72

2、解压JDK

在命令行输入tar -zxvf jdk-7u72-linux-x64.tar.gz 进行解压

3、配置环境变量

在命令行输入vim /etc/profile打开profile文件,在文件末尾添加如下代码:

JAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH  

输入命令source /etc/profile使环境变量生效

4、拷贝文件

在命令行输入如下命令将JDK环境和/etc/profile文件拷贝到liuyazhuang1162和liuyazhuang163主机上。

scp -r /usr/local/jdk1.7.0_72 liuyazhuang162:/usr/local
scp -r /usr/local/jdk1.7.0_72 liuyazhuang163:/usr/local
scp /etc/profile liuyazhuang162:/etc/
scp /etc/profile liuyazhuang163:/etc/

同时,我们分别在liuyazhuang162和liuyazhuang163主机上执行命令source /etc/profile使环境变量生效
至此,JDK环境搭建完成。

三、搭建Zookeeper集群

1、下载Zookeeper

在Apache官网下载Zookeeper,链接为:http://www.apache.org/dyn/closer.cgi/zookeeper/我下载的是zookeeper-3.4.9

2、解压Zookeeper

在命令行输入tar -zxvf zookeeper-3.4.9.tar.gz对zookeeper进行解压。

3、Zookeeper集群搭建

切换到Zookeeper的conf目录下执行以下命令

cp zoo_sample.cfg zoo.cfg 

然后输入vim zoo.cfg命令 配置如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper-3.4.9/data
dataLogDir=/usr/local/zookeeper-3.4.9/datalog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# 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
server.1=liuyazhuang161:2888:3888
server.2=liuyazhuang162:2888:3888
server.3=liuyazhuang163:2888:3888

同时在Zookeeper目录下新建data和dataLog两个目录用来存放Zookeeper的myid文件和日志文件,

mkdir data
mkdir dataLog

将目录切换到zookeeper的data目录下
执行命令

vim myid

按下键盘i输入1后,按下esc键,再按下shift+; (也就是输入冒号:),再输入wq退出,此时就在zookeeper的data目录下创建了一个myid文件,这个myid的文件中的内容为1

4、配置Zookeeper环境变量

为操作方便,我们也将Zookeeper配置到环境变量中,加上之前配置的JDK,我们在profile的配置如下:

JAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.9
PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
export JAVA_HOME HADOOP_HOME CLASS_PATH PATH

5、拷贝文件

将Zookeeper环境和profile文件分别拷贝到liuyazhuang162和liuyazhuang163主机上。如下命令:

scp -r /usr/local/zookeeper-3.4.9 liuyazhuang162:/usr/local
scp -r /usr/local/zookeeper-3.4.9 liuyazhuang163:/usr/local
scp  /ect/profile liuyazhuang162:/etc/
scp  /ect/profile liuyazhuang163:/etc/

同时,我们分别在liuyazhuang162和liuyazhuang163主机上执行命令source /etc/profile使环境变量生效。

6、修改其他主机的myid文件

注:别忘了将liuyazhuang162主机上Zookeeper中myid文件内容修改为2  将liuyazhuang163主机上Zookeeper中myid文件内容修改为3
至此,Zookeeper集群环境搭建完毕

四、Storm集群搭建

1、下载Storm

Apache官方下载Storm链接为:http://storm.apache.org/downloads.html  ,我这里下载的版本为apache-storm-1.1.1.tar.gz

2、解压Storm

tar -zxvf apache-storm-1.1.1.tar.gz

3、修改storm.yaml

修改storm.yaml,主要是修改如下配置

storm.zookeeper.servers:- "192.168.209.161"- "192.168.209.162"- "192.168.209.163"storm.zookeeper.port: 2181
storm.local.dir: "/usr/local/apache-storm-1.1.1/data"
#
nimbus.seeds: ["192.168.209.161"]
supervisor.slots.ports:- 6700- 6701- 6702- 6703

其中storm.zookeeper.servers,表示Zookeeper集群地址。如果Zookeeper集群使用的不是默认端口,那么还需要配置storm.zookeeper.port。storm.local.dir用于配置Storm存储少量文件的路径。nimbus.seeds用于配置主控节点的地址,可以配置多个。

4、拷贝Storm

scp -r /usr/local/apache-storm-1.1.1/ liuyazhuang162:/usr/local/
scp -r /usr/local/apache-storm-1.1.1/ liuyazhuang163:/usr/local/

5、配置环境变量并拷贝

vim /etc/profileJAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
STORM_HOME=/usr/local/apache-storm-1.1.1
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.9
PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin:$PATH
export JAVA_HOME HADOOP_HOME CLASS_PATH PATH STORM_HOMEscp  /ect/profile liuyazhuang162:/etc/
scp  /ect/profile liuyazhuang163:/etc/

同时,我们分别在liuyazhuang162和liuyazhuang163主机上执行命令source /etc/profile使环境变量生效
6、启动Storm

192.168.209.161 后台运行 nimbus

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

192.168.209.162 192.168.209.163后台运行 supervisor

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

192.168.209.161 后台运行 storm ui
storm ui 得要在 nimbus 机子上运行,不能够在 supervisor 机子上运行

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

五、访问Storm UI

在浏览器中输入链接http://192.168.209.161:8080,如下图所示:

六、问题及解决方案

1、Failed to Sync Supervisor

16373 [Thread-10] ERROR o.a.s.d.s.ReadClusterState - Failed to Sync Supervisor
java.lang.RuntimeException: java.lang.InterruptedExceptionat org.apache.storm.utils.Utils.wrapInRuntime(Utils.java:1531) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.zookeeper.zookeeper.getChildren(zookeeper.java:265) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.cluster.ZKStateStorage.get_children(ZKStateStorage.java:174) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.cluster.StormClusterStateImpl.assignments(StormClusterStateImpl.java:153) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.daemon.supervisor.ReadClusterState.run(ReadClusterState.java:126) [storm-core-1.1.1.jar:1.1.1]at org.apache.storm.event.EventManagerImp$1.run(EventManagerImp.java:54) [storm-core-1.1.1.jar:1.1.1]
Caused by: java.lang.InterruptedExceptionat java.lang.Object.wait(Native Method) ~[?:1.8.0_91]at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_91]at org.apache.storm.shade.org.apache.zookeeper.ClientCnxn.submitRequest(ClientCnxn.java:1342) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1588) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1625) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:226) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:219) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:109) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.framework.imps.GetChildrenBuilderImpl.pathInForeground(GetChildrenBuilderImpl.java:216) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.framework.imps.GetChildrenBuilderImpl.forPath(GetChildrenBuilderImpl.java:207) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.shade.org.apache.curator.framework.imps.GetChildrenBuilderImpl.forPath(GetChildrenBuilderImpl.java:40) ~[storm-core-1.1.1.jar:1.1.1]at org.apache.storm.zookeeper.zookeeper.getChildren(zookeeper.java:260) ~[storm-core-1.1.1.jar:1.1.1]... 4 more

部署的 storm 服务器版本为 1.1.1,而提交给 storm 跑的 jar 包为:storm-starter-1.0.2.jar。版本不对应导致上面的问题。应该是 storm-core-1.1.1.jar 的代码与 storm-core-1.0.2.jar 相差较大,或者修改了通信的协议导致。将 storm 服务器版本修改为 1.0.0 即可解决问题

2、有多个 supervisor 但 storm ui 上只显示一个

具体现象就是启动了多个 supervisor,单在 ui 上只显示一个(也有可能是多个 supervisor 中的某几个看上去被“合并”了),kill 掉其中任意一个 supervisor,另一个就出现。
例如本例中有两个 supervisor,192.168.209.162 和 192.168.209.163,但是通过接口请求,每次都只会显示其中的一个,但是现实的机子是交替出现的:

解决方案:storm.yaml 文件中有配置 storm.local.dir: "/usr/local/apache-storm-1.1.1/data",local.dir 所指目录,重启即可解决问题。原因是由于部署时通过 linux scp 命令直接分发软件到其他机子,残留了 local.dir 的东西,而 storm 是根据 local.dir 中的某一个或一些文件计算出一个 supervisor id 的。删除 local.dir 后,会重新生成 id。

3、Could not find or load main class org.apache.storm.starter.ExclamationTopology

bin/storm jar /usr/local/apache-storm-1.1.1/storm-starter-1.0.2.jar org.apache.storm.starter.ExclamationTopology et
第一确保 storm-starter-1.0.2.jar 的路径是正确的;第二保证 packagename.ExclamationTopology,包名packagename 与 类名 ExclamationTopology 是正确的

Storm之——搭建Storm集群相关推荐

  1. CentOS下Storm 1.0.0集群安装详解

    本文环境如下: 操作系统:CentOS 6 32位 ZooKeeper版本:3.4.8 Storm版本:1.0.0 JDK版本:1.8.0_77 32位 python版本:2.6.6 集群情况:一个主 ...

  2. [Flink课程]---- 9.1 使用Ambari 搭建Flink 集群

    转自: https://blog.csdn.net/high2011/article/details/90272331 lee / ambari-flink-service: https://gite ...

  3. Magent搭建Memcached集群

    原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...

  4. hadoop集群_Ambari搭建hadoop集群

    Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...

  5. [k8s] 第二章 十分钟带你搭建k8s集群环境

    本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类:一主多从和多主多从. 一主多从:一台Master节点和多台Node节点,搭建简单,但是 ...

  6. 基于OSS存储搭建Hadoop集群

    简介 本文以Ubuntu操作系统为例,介绍基于Aliyun OSS的hadoop-3.0.0-beta1的集群环境搭建过程,示例的集群环境包括1个master和2个slave节点(slave1和sla ...

  7. 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇

    使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...

  8. docker redis集群搭建_Redis集群模式搭建

    前言 本文主要介绍如何搭建redis集群环境 原理简介 - Redis 集群是一个提供在多个Redis间节点间共享数据的程序集,集群节点共同构建了一个去中心化的网络,集群中的每个节点拥有平等的身份,节 ...

  9. 使用Docker搭建Elasticsearch集群环境

    本篇文章首发于头条号单机如何搭建Elasticsearch集群?使用容器技术快速构建集群环境,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_te ...

最新文章

  1. 语义分割--Pixel Deconvolutional Networks
  2. 阿里面试题——Java对象初始化
  3. c盘users的用户名怎么改_怎么修改iPhone备份文件夹路径 iPhone C盘路径修改教程【详解】...
  4. 用Java写数据到POST请求
  5. ssrs 级联参数_在SSRS中使用多值参数
  6. wps无法打印_wps官方下载最新版_wps办公软件官方下载[办公软件]
  7. Mac Book苹果电脑设置自定义壁纸文件夹Desktop Pictures
  8. 码农小汪-Hibernate学习6-hibernate中Annocation修饰属性
  9. 股票行情图的绘制,分时图和闪电图
  10. Excel中截取特殊字符之前、之间、之后的数据
  11. 微软输入法数字有间隔_Word 2016中使用微软拼音输入法,换行后输入数字、标点时会没有输入进去,需要再输入一次...
  12. Mysql 复制表结构
  13. 焊接知识与技能(嵌入式硬件篇)
  14. 键盘(键盘基础,按键消息)
  15. 原生js实现运维小姐姐的九宫格抽奖活动、心跳快了
  16. 当面试官问:JS中原始类型有哪些?
  17. 基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统
  18. npm 如何更新项目最新依赖包
  19. 取对数的作用(机器学习的推导公式经常取对数)
  20. dll是什么呢?dll丢失如何解决?

热门文章

  1. python(进阶篇)——自动化操作Excel(xlrd和xlwt)
  2. C++制作打字小游戏
  3. 动力电池产业剧变中,宁德时代拿什么保住“一哥”地位?
  4. 斜率、弧度、角度的转换
  5. 对残差网络resnet shortcut的解释
  6. 刹车防抱死系统(ABS)
  7. 修改历史git提交用户名和邮箱错误,解决没有小绿点
  8. mysql 对 GENERATED 字段更新时候报错
  9. Aggregation-Based Graph Convolutional Hashing forUnsupervised Cross-Modal Retrieval
  10. laravel validate 验证器