当前位置: 首页 > 科技观察

Storm入门第3章Storm安装部署步骤

时间:2023-03-18 17:06:24 科技观察

3.1Storm集群组件Storm集群包含两类节点:MasterNode和WorkNode。它们对应的作用如下:1.在master节点上运行一个名为Nimbus的后台程序,负责在Storm集群中分发代码,为worker机器分配任务,监控集群的运行状态。Nimbus的作用类似于Hadoop中的JobTracker的作用。2.在每个工作节点上运行一个名为Supervisor的后台程序。Supervisor负责监控Nimbus分配给它的任务,并据此启动或停止执行任务的工作进程。每个工作进程执行拓扑的一个子集;一个正在运行的拓扑由分布在不同工作节点上的多个工作进程组成。Storm集群组件Nimbus和Supervisor节点之间的所有协调都是通过Zookeeper集群实现的。此外,Nimbus和Supervisor进程都是快速失败和无状态的;Storm集群的所有状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着您可以使用kill-9终止Nimbus和Supervisor进程,它们将在重启后继续工作。这种设计使Storm集群非常稳定。3.2安装Storm集群本章将详细介绍如何搭建Storm集群。以下是需要依次完成的安装步骤:1.搭建Zookeeper集群;2、安装Storm依赖库;3、下载并解压Storm发布版;4.修改storm.yaml配置文件;5.启动Storm的各个后台进程。3.2.1搭建Zookeeper集群Storm使用Zookeeper来协调集群。由于Zookeeper不用于消息传输,因此Storm给Zookeeper带来的压力是相当低的。大多数情况下单节点的Zookeeper集群就足够了,但是为了保证故障恢复或者部署大规模的Storm集群,可能需要更大规模的节点Zookeeper集群(对于Zookeeper集群,官方推荐的最小数量节点数为3)。在Zookeeper集群中的每台机器上完成如下安装部署步骤:1.下载并安装JavaJDK,官方下载链接为http://java.sun.com/javase/downloads/index.jsp,JDK版本是JDK6或以上。2、根据Zookeeper集群的负载情况,合理设置Java堆大小,尽量避免swap,swap会导致Zookeeper性能下降。保守一点,4GB内存的机器可以给Zookeeper分配3GB***堆空间。3、下载后解压并安装Zookeeper包。官方下载链接为http://hadoop.apache.org/zookeeper/releases.html。4、根据Zookeeper集群节点情况,在conf目录下创建Zookeeper配置文件zoo.cfg:tickTime=2000dataDir=/var/zookeeper/clientPort=2181initLimit=5syncLimit=2server.1=zoo1:2888:3888server。2=zoo2:2888:3888server.3=zoo3:2888:3888其中dataDir指定Zookeeper的数据文件目录;其中,server.id=host:port:port,id是每个Zookeeper节点的编号,存放在dataDir目录下的myid文件中,zoo1~zoo3代表每个Zookeeper节点的hostname,第一个端口是用于连接领导者的端口,第二个端口是用于领导者选举的端口。5.在dataDir目录下创建一个myid文件。该文件只有一行,内容为节点对应的server.id中的id号。6、启动Zookeeper服务:java-cpzookeeper.jar:lib/log4j-1.2.15.jar:conf\org.apache.zookeeper.server.quorum.QuorumPeerMainzoo.cfg或bin/zkServer.shstart7。通过Zookeeper客户端测试服务可用:java-cpzookeeper.jar:src/java/lib/log4j-1.2.15.jar:conf:src/java/lib/jline-0.9.94.jar\org.apache.zookeeper.ZooKeeperMain-server127.0.0.1:2181或bin/zkCli.sh-server127.0.0.1:2181注意:由于Zookeeper是快速失败的,并且遇到任何错误情况,进程将退出,因此,***Zookeeper可以通过监控程序进行管理,保证Zookeeper退出后可以自动重启。有关详细信息,请参见此处。Zookeeper在运行过程中,会在dataDir目录下产生大量的日志和快照文件,而Zookeeper的运行过程又不负责定期清理和合并这些文件,造成大量的磁盘空间占用。因此,需要定期通过cron等方法清除无用的日志和快照文件。有关详细信息,请参见此处。具体命令格式如下:java-cpzookeeper.jar:log4j.jar:conforg.apache.zookeeper.server.PurgeTxnLog-n#p#3.2.2安装Storm依赖库接下来需要在Nimbus和Supervisor机器上安装Storm的依赖库,如下:1.ZeroMQ2.1.7–不要使用2.1.10版本,因为这个版本的一些严重bug会导致Storm运行时出现奇怪的问题集群正在运行。少数用户在2.1.7版本会遇到“IllegalArgumentException”,降级到2.1.4版本可以解决这个问题。2.JZMQ3。Java64。Python2.6.65。上面unzip依赖库的版本已经过Storm测试,Storm不能保证在其他版本的Java或Python库下也能运行。3.2.2.1安装ZMQ2.1.7下载后编译安装ZMQ:注意:如果安装过程报错找不到uuid,通过以下包安装uuid库:sudoyuminstalle2fsprogslsudoyuminstalle2fsprogs-devel3.2.2.2安装JZMQ下载后编译安装JZMQ:gitclonehttps://github.com/nathanmarz/jzmq.gitcdjzmq./autogen.sh./configuremakesudomakeinstall为了保证JZMQ正常工作,您可能需要完成以下配置:正确设置JAVA_HOME环境变量安装Java开发包升级autoconf如果您是MacOSX,请参考这里的注意事项:如果您在运行./configure命令时遇到问题,请参考这里。3.2.2.3安装Java61下载并安装JDK6,参考这里;2、配置JAVA_HOME环境变量;3、运行java、javac命令测试java安装是否正常。3.2.2.4安装Python2.6.61。下载Python2.6.6:wgethttp://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz22.编译安装Python2.6.6:tar–jxvfPython-2.6.6.tar.bz2cdPython-2.6.6./configuremakemakeinstall3.测试Python2.6.6:python-VPython2.6.63.2.2.5安装unzip1。如果您使用RedHat系列Linux系统,执行以下命令安装unzip:yuminstallunzip2.如果您使用Debian系列Linux系统,执行以下命令安装unzip:apt-getinstallunzip3.2.3下载并解压Storm发行版接下来,您需要在Nimbus和Supervisor机器上安装Storm发行版。1、下载Storm发行版,推荐Storm0.8.1:wgethttps://github.com/downloads/nathanmarz/storm/storm-0.8.1.zip2、解压到安装目录:unzipstorm-0.8.1.zip#p#3.2.4修改storm.yaml配置文件Storm发行版的解压目录下有一个conf/storm.yaml文件,用于配置Storm。可以在此处查看默认配置。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。conf/storm.yaml中必须配置如下配置选项:1)storm.zookeeper.servers:Storm集群使用的Zookeeper集群地址,格式如下:storm.zookeeper.servers:-"111.222.333.444″-"555.666.777.888″如果Zookeeper集群使用非默认端口,则还需要storm.zookeeper.port选项。2)storm.local.dir:Nimbus和Supervisor进程用来存放少量的状态,比如jars、confs等本地磁盘目录。该目录需要提前创建并赋予足够的访问权限。然后在storm.yaml中配置目录,如:storm.local.dir:"/home/admin/storm/workdir"3)java.library.path:Storm使用的本地库(ZMQ和JZMQ)加载路径,默认是“/usr/local/lib:/opt/local/lib:/usr/lib”。一般来说,ZMQ和JZMQ默认安装在/usr/local/lib下,不需要配置。4)nimbus.host:Nimbus机器在Storm集群中的地址。每个Supervisor工作节点都需要知道哪台机器是Nimbus,以便下载jars、confs等Topology文件,如:nimbus.host:"111.222.333.444"5)supervisor.slots。ports:对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口来接收消息,这个配置选项用来定义哪些端口可以被worker使用。默认情况下,每个节点可以分别在6700、6701、6702、6703端口运行4个worker,如:supervisor.slots.ports:-6700-6701-6702-67033.2.5启动Storm的各个后台进程***The第一步是启动Storm的所有后台进程。与Zookeeper一样,Storm也是一个fail-fast系统,这样Storm可以随时停止,并在进程重新启动时正确恢复执行。这就是Storm不保存进程中状态的原因。即使重启Nimbus或Supervisors,也不会影响正在运行的Topology。下面是Storm各个后台进程的启动方式:Nimbus:在Storm主节点上运行“bin/stormnimbus>/dev/null2>&1&”启动Nimbus后台程序,放到后台执行;Supervisor:在每个Storm工作节点上运行“bin/stormsupervisor>/dev/null2>&1&”启动Supervisor后台程序,放到后台执行;UI:在Storm主节点运行“bin/stormui>/dev/null2>&1&”启动UI后台程序,在后台执行,启动后可以观察到worker的使用情况等信息通过http://{nimbushost}:8080查看集群资源和Topology运行状态注意:启动Storm后台进程时,需要对conf/中设置的storm.local.dir目录有写入权限storm.yaml配置文件,Storm后台进程启动后,会在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件,经测试,StormUI必须和StormNimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否有Nimbus链接,为了方便可以在系统环境变量中添加bin/storm,至此Storm集群已经部署配置完毕,拓扑可以是s提交到集群运行。3.3向集群提交任务1.启动StormTopology:stormjarallmycode.jarorg.me.MyTopologyarg1arg2arg3其中allmycode.jar是包含Topology实现代码的jar包,是org.me的main方法。MyTopology是Topology的入口,arg1、arg2、arg3是执行org.me.MyTopology时需要传入的参数。2.停止StormTopology:stormkill{toponame}其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。3.4参考资料1.https://github.com/nathanmarz/storm/wiki/Tutorial2。https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster原文链接:http://blog.linezing.com/2013/01/how-to-install-and-deploy-风暴集群?spm=0.0.0.0.b81yAC