美文网首页
垦荒记|Storm集群搭建

垦荒记|Storm集群搭建

作者: 翱翔云端 | 来源:发表于2018-02-03 16:38 被阅读0次
Storm集群一览

最近做个项目,出差到现场后,发现只有裸机,一堆机器裸奔,连个内裤都没穿!哥只能从给它们穿衣服开始,这是名副其实的垦荒啊。垦荒记系列就写写那些垦荒的经历吧。
怎么给机器穿衣服这事这里不讨论了,今天来聊一聊怎么从零开始搭建自己的Storm集群。
一提到搭环境,相信很多朋友都有一把心酸泪啊,所以我称为垦荒。的确,搭环境就像垦荒地,满地荆棘丛生,遍地是坑。可喜的是,像Storm这样站在Hadoop肩膀上成长起来的大数据计算框架,做得简单清爽、玲珑剔透,搭建集群也简单易行。然而,要搭个生产环境中使用的Hadoop集群,难度系数比Storm不知道大多少倍。这主要是由于Storm的复杂性远远比不上Hadoop。
Storm集群的图纸我已经在上图给出,由图可知,搭建Storm集群分两步走即可。

01 搭建Zookeeper集群

Storm集群依靠Zookeeper集群来进行集群管理,因此首先需要搭个Zookeeper集群。Storm集群对Zookeeper集群的压力非常小,因此搭个三台机器组成的集群足够了。
下面是搭Zookeeper集群的基本步骤。
1.官网下载相应版本的压缩包。本文使用zookeeper-3.4.6.tar.gz。
以下步骤在每台机器上执行。那问题来了,我们要依次在不同的机器上去敲相同的命令吗?这样太乏味了,这种体力活,几台机器还好,万一搭个成千上万台机器的集群,估计要疯了!这里有个小技巧,使用一个远程工具,我用的是Xshell,输入一条命令,然后同时发射到各台机器上去执行。具体做法很简单,不会就百度下。
2.新增个用户,就叫zookeeper吧,方便以后对zookeeper进行管理。
执行以下命令需要root权限。

# useradd zookeeper    #新增用户zookeeper
 #修改zookeeper用户密码,回车后输入你想设置的密码即可,光标是不会动的,你直接输入即可
# passwd zookeeper   

3.注销root用户,使用zookeeper用户登录。
4.将下载下来的压缩包上传到zookeeper家目录/home/zookeeper下。
5.解压。

#此处执行这条命令即可,不推荐重命名解压后的文件夹
$ tar -zxvf zookeeper-3.4.6.tar.gz

6.配置集群信息。

#到zookeeper配置文件目录
$ cd zookeeper-3.4.6/conf/
#看看该目录下的文件列表
$ ll
#这时你应该看到有一个叫zoo_sample.cfg的文件
#把zoo_sample.cfg复制一份,叫zoo.cfg,它就是zookeeper集群配置文件
$ cp zoo_sample.cfg zoo.cfg
#看看zoo.cfg文件内容
$ cat 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=/tmp/zookeeper
# 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

#以上这些配置项写得很直白,如果看不懂,这里有详细说明:
#  https://www.cnblogs.com/yangsy0915/p/5932756.html

接下来,我们要修改zoo.cfg,定制我们的配置。
首先是dataDir这个配置项。这是存放zookeeper运行时数据的目录,如果没有日志存放目录配置dataLogDir,zookeeper运行日志也会到这个目录下。我推荐把dataLogDir也配置上,方便后期维护。
然后是autopurge.snapRetainCount和autopurge.purgeInterval这两个配置项。这两个配置项的含义看看注释就懂,如果你不想手动去清理zookeeper运行时产生的数据,最好配上,让它自己去清理。
最后是集群信息配置,就是告诉zookeeper集群中各机器的地址。这个配置项长这样。

server.x=hostname:port1:port2
# x是机器编号,从1开始递增,要在dataDir下新建一个文件myid,里面只有一个数字,就是这里的x
# hostname是机器的主机名
# port1是zookeeper集群Leader和Follower之间进行数据同步的通信端口
# port2是zookeeper集群进行Leader选择的通信端口

对zoo.cfg进行以上修改就可以了,其他配置默认就好。参考配置如下。

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/zookeeper/zookeeper-3.4.6/data
dataLogDir=/home/zookeeper/zookeeper-3.4.6/log
# 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=6
#the zookeeper cluster information
server.1=zookeeper01:2888:3888
server.2=zookeeper02:2888:3888
server.3=zookeeper03:2888:3888

最后别忘记在各机器的dataDir下新建一个文件myid,里面写上给该机器分配的编号。
7.启动zookeeper集群。
控制zookeeper运行状态的操作都在bin/zkServer.sh这个脚本中。

$ cd zookeeper-3.4.6/bin/
#启动zookeeper,作为后台进程运行
$ sh zkServer.sh start &

网上有些人的博客,在执行zookeeper启动命令时,把输出全部扔到Linux黑洞(null)里面,这是我强烈反对的,zookeeper运行时的输出对我们是有用的,初学者在启动zookeeper报错时就可以看它的输出来获得解决办法。
执行zookeeper启动命令后,可以在bin目录下的zookeeper.out文件中看看运行日志,如果没有ERROR,说明正常,有错误就根据提示解决。
zookeeper常用控制命令。

#启动zookeeper服务   
$ sh zkServer.sh start
#查看zookeeper服务状态     
$ sh zkServer.sh status
#停止zookeeper服务
$ sh zkServer.sh stop
#重启zookeeper服务
$ sh zkServer.sh restart

02 搭建Storm集群

有了Zookeeper集群,再来搭Storm就简单了。
1.Storm官网下载相应版本的压缩包。本文使用apache-storm-1.0.0.tar.gz。
以下步骤在每台机器上执行。
2.新建storm用户,方便以后对storm进行管理。
3.使用storm用户登录Linux服务器。
4.将storm压缩包上传到storm家目录/home/storm下。
5.解压。

#此处执行这条命令即可,不推荐重命名解压后的文件夹
$ tar -zxvf apache-storm-1.0.0.tar.gz

6.配置storm集群信息。

#到storm配置文件目录
$ cd apache-storm-1.0.0/conf/
#看看该目录下的文件列表
$ ll

这时你可以看到有一个叫storm.yaml的文件,在该文件中加入集群信息即可完成配置。

#查看storm.yaml文件内容
$ cat storm.yaml
#这时你应该看到以下内容

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

########### These MUST be filled in for a storm configuration
# storm.zookeeper.servers:
#     - "server1"
#     - "server2"
# 
# nimbus.seeds: ["host1", "host2", "host3"]
# 
# 
# ##### These may optionally be filled in:
#    
## List of custom serializations
# topology.kryo.register:
#     - org.mycompany.MyType
#     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
#     - org.mycompany.MyDecorator
#
## Locations of the drpc servers
# drpc.servers:
#     - "server1"
#     - "server2"

## Metrics Consumers
# topology.metrics.consumer.register:
#   - class: "org.apache.storm.metric.LoggingMetricsConsumer"
#     parallelism.hint: 1
#   - class: "org.mycompany.MyMetricsConsumer"
#     parallelism.hint: 1
#     argument:
#       - endpoint: "metrics-collector.mycompany.org"

在storm.yaml文件中,我们修改两个配置项即可。首先是storm.zookeeper.servers这个配置项,它告诉storm Zookeeper服务器的地址。其次是nimbus.seeds这个配置项,它告诉storm Nimbus节点的地址。这两个地址可以直接写ip地址,也可以写主机名,推荐写主机名。还有一个叫supervisor.slots.ports配置项,他是supervisor守护进程工作的端口号,一个supervisor守护进程工作在一个端口上。storm默认配置了4个supervisor守护进程工作端口号,分别是6700、6701、6702和6703。如果你需要起超过四个supervisor进程,在配置文件中加入该配置项即可。本文的storm配置信息如下。

 storm.zookeeper.servers:
     - "zookeeper01"
     - "zookeeper02" 
     - "zookeeper03" 
 nimbus.seeds: ["storm01", "storm02"]

7.启动storm守护进程。
控制storm各守护进程运行的都是$STORM_HOME/bin下的storm.sh脚本。

#启动nimbus,作为后台进程运行
#在各nimbus节点执行
$ sh storm.sh nimbus &

#启动supervisor,作为后台进程运行
#在各supervisor节点执行
$ sh storm.sh supervisor &

#启动storm UI,作为后台进程运行
#在nimbus节点执行
$ sh storm.sh ui &

注意输出,如果有报错,根据错误提示去寻找解决办法,如果没有报错,你可以浏览器访问storm UI了,http://{nimbus_host}:8080。
至此,storm集群搭好了,可以喝杯茶歇歇了!

相关文章

  • 垦荒记|Storm集群搭建

    最近做个项目,出差到现场后,发现只有裸机,一堆机器裸奔,连个内裤都没穿!哥只能从给它们穿衣服开始,这是名副其实的垦...

  • 34 如何将代码打包部署到storm 集群运行

    上一篇 storm 集群搭建, 主要讲解storm 集群搭建,本篇结合上一篇如何将代码打包部署到storm 集群运...

  • Storm集群搭建

    Storm集群搭建 1、下载StormApache官方下载Storm链接为:http://storm.apache...

  • 大数据基础知识学习-----Storm学习笔记(三)Storm集

    Storm集群搭建 环境准备 jar包下载 安装集群步骤:http://storm.apache.org/rele...

  • 垦荒记|Spark集群搭建

    搭建Spark集群 1.准备工作(1)主机规划。基本规划如表所示,根据自己的需求来,可以加Worker节点。(2)...

  • Zookeeper+Storm集群搭建

    基础集群环境参考上一篇文章:集群基础环境搭建 Storm集群架构 Storm是Master-Slaves 主从架构...

  • storm集群搭建

    要搭建storm集群,需要准备一下软件。 1、JDK1.7 2、Zookeeper3.4.5 3、Storm0.9...

  • Storm集群搭建

    近来公司项目步入大数据的范畴,需要Spark、Storm方面的知识储备。在学习了Scala之后,进入正式的开发准备...

  • 2. 搭建 CentOS 集群 - 介绍

    搭建一个4个节点的 CentOS 集群,支撑接下来演示环境中 Redis 集群、Storm 集群、Nginx、To...

  • 启动/停止集群脚本

    启动zookeeper集群脚本 停止zookeeper集群脚本 启动Storm集群脚本 停止Storm集群脚本 提...

网友评论

      本文标题:垦荒记|Storm集群搭建

      本文链接:https://www.haomeiwen.com/subject/vdqeaxtx.html