用两台物理机搭建storm集群

    xiaoxiao2021-03-26  25

    1 安装zookeeper

        zookeeper是一个分布式协作的Apache hadoop项目,它提供了分布式同步,选举leader等功能,解决了分布式应用中的数据管理问题。

    下载zookeeper-3.4.9     下载zookeeper-3.4.9.tar.gz,解压到/opt/。 sudo tar -C /opt -zxvf zookeeper-3.4.9.tar.gz 在/etc/profile新建环境变量 export ZK_HOME=/opt/zookeeper-3.4.9 export PATH=$ZK_HOME/bin:$JAVA_HOME/bin:$MYSQL_HOME/bin:$TOMCAT_HOME/bin:$SQLITE_HOME/bin:$M2_HOME/bin:$PATH

        要使得该环境变量生效,则必须在当前终端下运行

    source /etc/profile 修改zookeeper的配置文件     zookeeper的默认配置文件是$ZK_HOME/conf/zoo.cfg。但是tarball只提供了zoo_sample.cfg的样例,我们必须添加这个配置文件。 cd $ZK_HOME/conf sudo cp zoo_sample.cfg zoo.cfg

        我们当然可以使用上面的默认配置,而且该配置就足够了。我个人修改zoo.cfg的dataDir,读者可以根据自己的喜好修改。

    dataDir=/var/zookeeper

        这时就要创建该目录,而且要修改权限,使得当前用户能够在该目录下创建文件。

    sudo mkdir /var/zookeeper sudo chmod a+w /var/zookeeper

        注意,这里a不能省略,否则other可能仍然没有写权限。

    启动和停止zookeeper zkServer.sh start zkServer.sh stop

    2 安装storm

        nimbus和supervisor上都必须安装storm依赖库,然后再安装storm。zeromq提供分布式环境下的传输层的通信机制,是一个网络库。但是0.9的storm使用了Netty。jzmq是zeromq的Java绑定。

    2.1 安装依赖库

    安装zeromq     下载zeromq-4.0.3.tar.gz。解压到/tmp,并安装。 tar -C /tmp -zxvf zeromq-4.0.3.tar.gz cd /tmp/zeromq-4.0.3 ./configure make sudo make install

        如果make出错,可能要创建一些文件。同时还要安装一些工具,如libtool。

    安装jzmq     安装过程和上述类似。下载jzmq.tgz。 tar -C /tmp -zxvf jzmq.tgz cd /tmp/jzmq ./autogen.sh ./configure make sudo make install

    2.2 安装storm

        storm的安装与zookeeper的安装十分类似。storm是一个实时大数据处理框架,具有容错性,易于扩展等优点。它支持本地模式和远程模式,在本地模式下可以进行开发和测试,而远程模式是生产模式,将拓扑提交到storm集群中。但它只有一个nimbus节点(主节点,守护进程),支持多个supervisor节点(工作节点,守护进程),中间通过多个zookeeper节点来保存分布式的信息。一个supervisor节点可以可能有4个work节点,而一个worker节点是一个java进程,里面将执行多个executor线程,也就是task,一般是spout或者bolt。

    下载apache-storm-0.9.5.tar.gz     解压到/opt sudo tar -C /opt -zxvf apache-storm-0.9.5.tar.gz 在/etc/profile新建环境变量 export STORM_HOME=/opt/apache-storm-0.9.5 export PATH=$STORM_HOME/bin:$ZK_HOME/bin:$JAVA_HOME/bin:$MYSQL_HOME/bin:$TOMCAT_HOME/bin:$SQLITE_HOME/bin:$M2_HOME/bin:$PATH

        要使得该环境变量生效,则必须在当前终端下运行

    source /etc/profile 修改配置文件storm.yaml     在$STORM_HOME/conf/storm.yaml最后添加一行 storm.local.dir: "/var/stormData"

        创建/var/stormData

    sudo mkdir /var/stormData sudo chmod a+w /var/stormData

        其他设置将使用/opt/apache-storm-0.9.5/lib/storm-core.0.9.5.jar下的defaults.yaml的配置,也就是默认的库在/usr/local/lib/,我们手动make的zeromq和jzmq都在这个里面。这样配置只能以nimbus启动,而且zookeeper也在这台机器上运行(监听2181端口)。而要以supervisor启动,则其storm.yaml必须指定nimbus和zookeeper的IP。默认supervisor有4个worker,端口分别是6700 ~ 6703。

    # 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: - "192.168.43.209" #指定zookeeper的IP # - "server2" # nimbus.host: "192.168.43.209"#指定nimbus的IP # # # ##### 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: "backtype.storm.metric.LoggingMetricsConsumer" # parallelism.hint: 1 # - class: "org.mycompany.MyMetricsConsumer" # parallelism.hint: 1 # argument: # - endpoint: "metrics-collector.mycompany.org" storm.local.dir: "/var/stormData" 修改logs的权限     修改$STORM_HOME/logs的权限,使得可以创建日志。 sudo mkdir $STORM_HOME/logs sudo chmod a+w $STORM_HOME/logs

    3 启动集群

        一台机器(假设IP为192.168.43.209)安装zookeeper和storm,作为nimbus启动,同时启动ui服务,使得可以访问http://192.168.43.209:8080监控topology的状态:

    zkServer.sh start storm nimbus & storm ui &

        另一台机器安装storm,但必须指定nimbus和zookeeper,如上面的storm.yaml,作为supervisor启动。启动如下:

    storm supervisor &

        事实上,我们可以把zookeeper和nimbus分开在不同的机器上运行,可以有多台机器运行zookeeper,可以有多台机器运行supervisor(只要安装了storm,并指定nimbus和zookeeper),从而增强并行计算的能力。

    4 提交并运行拓扑

        这里使用单词计数的程序,但storm的版本必须和安装的一致,如都是apache-storm-0.9.5。如果依赖和集群的storm版本不一致,可能会出错!!!另外,本人在使用apache-storm-1.0.2.tar.gz版本运行不起来,提示缺少backtype,或者出现重复的jar包。所以最后考虑使用apache-storm-0.9.5.tar.gz,在lib/storm-core-0.9.5.jar下有这个java包。     在运行nimbus的机器下下载StormDemo.tar.gz,并解压,提交target目录下的jar。

    storm jar target/StormDemo-1.0-SNAPSHOT.jar com.stormdemo.MyTopology 2

        注意,必须在项目的根目录下运行这个命令,否则会提示找不到主类。另外,com.stormdemo.MyTopology是main入口,而’/home/gua/input.txt’必须在supervisor下存在,因为拓扑会读取指定的文件。它保存的是很多行英文单词。     另外,可以停止拓扑的运行:

    storm kill 拓扑名

    本文参考 http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html http://www.tianshouzhi.com/api/tutorials/storm/17 http://blog.sina.com.cn/s/blog_406d9bb00100ui5p.html

    转载请注明原文地址: https://ju.6miu.com/read-661936.html

    最新回复(0)