Apache Storm 集群搭建.docx_第1页
Apache Storm 集群搭建.docx_第2页
Apache Storm 集群搭建.docx_第3页
Apache Storm 集群搭建.docx_第4页
Apache Storm 集群搭建.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Apache Storm 集群搭建邹中凡2014-8-29目录1机器准备32集群安装主要步骤33搭建Zookeeper集群33.1Zookeeper安装33.2Zookeeper配置43.2.1配置zoo.cfg43.2.2配置myid53.3启动Zookeeper集群53.4安装验证63.4.1通过状态63.4.2通过端口63.4.3通过进程63.5停止Zookeeper集群64安装Storm依赖库74.1安装JDK74.2安装ZeroMQ2.1.774.3安装jzmq74.4安装Python2.6.684.5安装unzip84.6安装问题处理85安装Storm和配置Storm85.1安装Storm85.2配置Storm96启动Storm集群107安装验证107.1安装构建storm-starter107.2提交一个Topology101 机器准备准备如下机器,可以物理机也可以是虚拟机。机器主机名安装的操作系统内存磁盘安装的组件datanode-1Centos 6.4 64位4GB40GBNimbus,Supervisor,Zookeeperdatanode-2Centos 6.4 64位4GB40GBSupervisor,Zookeeperdatanode-3Centos 6.4 64位4GB40GBSupervisor,Zookeeper下面基于以上配置和要求搭建Storm集群。2 集群安装主要步骤1. 搭建Zookeeper集群2. 安装Storm依赖库3. 安装Storm以及配置Storm(storm.yaml)4. 启动Storm集群3 搭建Zookeeper集群Zookeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的Zookeeper集群的时候,每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。在每个节点的/etc/hosts中配置如下信息: 1 datanode-2 datanode-3 datanode-3Zookeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果Zookeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。Zookeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。3.1 Zookeeper安装在安装Zookeeper之前,需要在先安装JDK,详见安装JDK。在datanode-1,datanode-2,datanode-3机器中都需要安装Zookeeper。安装路径为/usr/hadoop。1,到/ 下载Zookeeper2,解压#tar -zxvf zookeeper-3.4.5.tar.gz 3,配置Zookeeper环境变量,在/etc/profile文件中添加如下配置:export ZOOKEEPER=/usr/hadoop/zookeeper-3.4.5export PATH=$PATH:$ZOOKEEPER/bin4,执行#source /etc/profile使环境变量生效。3.2 Zookeeper配置3.2.1 配置zoo.cfg进入/usr/hadoop/zookeeper-3.4.5/conf,用vi编辑 zoo.cfg。一下红色部分是添加的配置。#vi zoo.cfg#dataDir=/tmp/zookeeper 改成:dataDir=/usr/hadoop/zookeeper-3.4.5/zkdata 并添加如下配置:server.1= datanode-1:2888:3888server.2= datanode-2:2888:3888server.3= datanode-3:2888:3888配置之后的zoo.cfg如下所示:# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.#dataDir=/tmp/zookeeperdataDir=/usr/hadoop/zookeeper-3.4.5/zkdata # the port at which the clients will connectclientPort=2181# Be sure to read the maintenance section of the # administrator guide before turning on autopurge.# /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=1server.1=datanode-1:2888:3888server.2=datanode-2:2888:3888server.3=datanode-3:2888:38883.2.2 配置myid在/usr/hadoop/zookeeper-3.4.5/zkdata目录下建立myid文件,并在server.1节点中的myid中输入1,在server.2中输入2,在server.3中输入3。3.3 启动Zookeeper集群在集群的每台机器上执行如下命令:#zkServer.sh startJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/bin/./conf/zoo.cfgStarting zookeeper . STARTED1. 2012-01-0806:51:20,019-WARNQuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager384-Cannotopenchannelto2atelectionaddressslave-02/78:3888 2. .ConnectException:Connectionrefused 3. atsun.nio.ch.SocketChannelImpl.checkConnect(NativeMethod) 4. atsun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 5. atsun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) 6. atorg.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) 7. atorg.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) 8. atorg.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) 9. atorg.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622)由于Zookeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。3.4 安装验证3.4.1 通过状态可以通过Zookeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在Zookeeper集群中的每个结点上查询的结果:#zkServer.sh statusJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/bin/./conf/zoo.cfgMode: leader#zkServer.sh statusJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/bin/./conf/zoo.cfgMode: follower# zkServer.sh statusJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/bin/./conf/zoo.cfgMode: follower通过上面状态查询结果可见,datanode-1是集群的Leader,其余的两个结点是Follower。3.4.2 通过端口在集群的每台机器上执行如下命令,查看是否有2181端口。#netstat -an|grep 21813.4.3 通过进程在集群的每台机器上执行jps会有QuorumPeerMain进程# jps25662 Jps26876 NodeManager26731 DataNode25434 QuorumPeerMain3.5 停止Zookeeper集群在集群的每台机器上执行如下命令:# zkServer.sh stopJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/bin/./conf/zoo.cfgStopping zookeeper . STOPPED# zkServer.sh statusJMX enabled by defaultUsing config: /usr/hadoop/zookeeper-3.4.5/./conf/zoo.cfgError contacting service. It is probably not running.4 安装Storm依赖库需要在Nimbus和Supervisor机器上安装Storm的依赖库,具体如下:1. Java 62. ZeroMQ 2.1.7 请勿使用2.1.10版本,因为该版本的一些严重bug会导致Storm集群运行时出现奇怪的问题。少数用户在2.1.7版本会遇到IllegalArgumentException的异常,此时降为2.1.4版本可修复这一问题。3. JZMQ4. Python 2.6.65. Unzip4.1 安装JDK1. 下载一个JDK6以上版本。比如:jdk-7u67-linux-x64.tar.gz2. 解压tar zxvf jdk-7u67-linux-x64.tar.gz3. 配置java环境变量,在/etc/profile文件中添加如下配置:export JAVAHOME=/usr/lib/jdk-7u67-linux-x64export PATH=$PATH:$JAVAHOME/bin4. 执行#source /etc/profile使环境变量生效。4.2 安装ZeroMQ2.1.71. 下载 /zeromq-2.1.7.tar.gzwget /zeromq-2.1.7.tar.gz2. tar -xzf zeromq-2.1.7.tar.gz3. cd zeromq-2.1.74. 执行 ./configure5. 执行make6. 执行make install4.3 安装jzmq1. git clone /nathanmarz/jzmq.git2. cd jzmq3. 执行./autogen.sh4. 执行./configure5. 执行make6. 执行make install4.4 安装Python2.6.6检查是否安装python,如果没有安装则安装如下步骤安装。1. wget /ftp/python/2.6.6/Python-2.6.6.tar.bz22. tar jxvf Python-2.6.6.tar.bz23. cd Python-2.6.64. 执行./configure5. 执行make6. 执行make install7. 测试python $ python -VPython 安装unzip执行#yum install unzip4.6 安装问题处理1,如果在安装过程中出现如下错误:configure: error: Unable to find a working C+ compiler则需要安装g+编译器。执行:yum install gcc-c+,2,出现错误:configure: error: cannot link with -luuid, install uuid-dev,则需要安装软件包uuid-devel和libuuid-devel。执行:yuminstalluuid-devel执行:yuminstalllibuuid-devel3,在执行./autogen.sh 时,报如下错。autogen.sh: error: could not find libtool. libtool is required to run autogen.sh.则需要安装libtool包。执行:yum install libtool5 安装Storm和配置Storm5.1 安装Storm把Storm安装/usr/lib目录下。在集群的每台机器上执行如下步骤:1. 到/downloads.html 下载一个storm安装包2. unzip storm-.zip3. 在/etc/profile文件中添加如下配置:export STORM_HOME= /usr/lib/storm-export PATH=$PATH:$STORM_HOME/bin4. source /etc/profile5.2 配置Storm在集群中的每台机器中做如下配置:修改$STORM_HOME/conf/storm.yaml配置文件。一下红色部分是添加的配置信息。1,cd /usr/lib/storm-/conf2,vi storm.yaml# These MUST be filled in for a storm configurationstorm.zookeeper.servers: - datanode-1 - datanode-2 - datanode-3 nimbus.host: datanode-1storm.local.dir: /root/storm# # # # 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.metrics.LoggingMetricsConsumer# parallelism.hint: 1# - class: org.mycompany.MyMetricsConsumer# parallelism.hint: 1# argument:# - endpoint: 配置说明:storm.zookeeper.servers:这个配置storm集群使用的zookeeper集群。nimbus.host:配置Storm机器的nimbus机器的地址。storm.local.dir:Nimbus和Supervisor在本地磁盘上需要一个目录来存储一些状态信息(jar包, 配置文件之类的东西)你应该在每台机器上创建那个目录,分配正确的权限,比如:storm.local.dir: /mnt/stormsupervisor.slots.ports :对于每一台工作机器,这个配置指定在这台工作机器上运行多少工作进程, 每个进程使用一个独立端口来接收消息,这个配置同时也指定使用哪些端口。如果你在这里定义5个端口, storm会在这个机器上最多分配5个工作进程。如果分配3个端口,那么最多分配3个进程。默认的配置是4个:supervisor.slots.ports: - 6700 - 6701 - 6702- 67036 启动Storm集群首先启动Zookeeper集群,然后在Nimbus机器上启动Nimbus进程,在Supervisor机器上启动Supervisor进程。1. 启动zkServer.sh start2. 启动Nimbus 执行#storm nimbus3. 启动Supervisor 执行#storm supervi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论