搭建storm集群
来源:互联网 发布:c语言初始化顺序表 编辑:程序博客网 时间:2024/05/29 14:10
搭建storm集群
系统centos7
1、安装Java jdk 1.7
2、安装zookeeper 3.4.8
3、安装Python2.7X
4、安装storm0.9
5、安装git
6、安装maven
所有安装包,等会我会打包上传,地址会放到最后,大家需要可以下载
1、安装jdk很简单
下载jdk压缩包
解压压缩包 ,我的安装目录是/software/
在etc/profile中加入环境变量
JAVA_HOME=/software/jdk1.7.0_80
PATH=$JAVA_HOME//bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib.tools.jar
验证是否安装成功
[root@slave2 software]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@slave2 software]# javac -version
javac 1.7.0_80
[root@slave2 software]#
2、安装zookeeper集群
下载解压,同样我的安装目录是/software/
准备工作,准备三台机子,我的都是centos7,分别获取IP地址,然后设置主机名
在/etc/hostname中修改为你的主机名
我的分别改为了
192.168.52.142主机名为centos
192.168.52.145主机名为slave1
192.168.52.146主机名为slave2
分别每台机子的/etc/hosts中加入
192.168.52.142 centos
192.168.52.145 slave1
192.168.52.146 slave2
进入zookeeper安装目录的conf下
创建zoo.cfg配置文件
可以复制zoo_sample.cfg得到zoo.cfg
编辑这个文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/software/zookeeper-3.4.8/data
clientPort=2181
server.1=centos:8880:7770
server.2=slave1:8881:7771
server.3=slave2:8882:7772
创建zookeeper存放数据的目录 /software/zookeeper-3.4.8/data目录
进入 /software/zookeeper-3.4.8目录,创建
mkdir data
把刚刚安装的zookeeper-3.4.8复制到另外两台机子的/software/下
scp -rp zookeeper-3.4.8 root@slave1:/software
scp -rp zookeeper-3.4.8 root@slave1:/software
分别在三台机子的/software/zookeeper-3.4.8/data下创建myid文件
其中192.168.52.142机子的myid文件内容为1
其中192.168.52.145机子的myid文件内容为2
其中192.168.52.146机子的myid文件内容为3
这是对应上面配置文件的server.X
server.1=centos:8880:7770
server.2=slave1:8881:7771
server.3=slave2:8882:7772
zookeeper配置解释:
- tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
- dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
- clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
- initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
- syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
- server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。
entos 7版本以后默认使用firewalld后,按以前关于iptables的设置方法已经不管用了!!!妈的,用service iptqbles stop 关闭防火墙,以为关了,原来一直没关,害得我搭分布式集群折磨了我十多个小时,IP可以ping通,查看报错日志现实找不到主机路由,用上面那个命令无论怎么关防火墙都没用,以为是直接克隆的centos不行,又重新装了两个系统,装好所有软件,到头来还是同样的问题
正确的关闭和禁用命令是
运行、停止、禁用firewalld
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
然后分别到每台机子的zookeeper安装目录,开启服务
[root@slave1 zookeeper-3.4.8]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /software/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@slave2 zookeeper-3.4.8]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /software/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@centos zookeeper-3.4.8]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /software/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看状态
[root@slave1 zookeeper-3.4.8]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /software/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader
开启完zookeeper服务后,再来安装storm ,因为storm依赖于zookeeper,开启storm服务前,必须开启zookeeper服务
安装Python就不讲了,因为centos7已经默认安装了Python2.7.5,所以不用安装了
3、storm安装
下载安装包解压到/software/
进入storm目录,编辑
conf/storm.yaml配置文件
加入
#zookeeper服务节点
storm.zookeeper.servers:
- "192.168.52.142"
- "192.168.52.145"
- "192.168.52.146"
#nimbus所在机子
nimbus.host: "192.168.52.142"
#supervisor工作进程端口号
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
#存放数据目录,要自己创建
storm.local.dir: "/software/storm-0.9.1/data"
创建/software/storm-0.9.1/data目录
进入/software/storm-0.9.1/下
mkdir data
把storm-0.9.1安装目录分发到其他机子
scp -cp storm-0.9.1 root@slave1:/software/
scp -cp storm-0.9.1 root@slave2:/software/
分别在三台机子上,把storm加入环境变量
在/etc/profile加入
JAVA_HOME=/software/jdk1.7.0_80
STORE_HOME=/software/storm-0.9.1
PATH=$JAVA_HOME/bin:$STORE_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib.tools.jar
在主机centos上开启nimbus进程
storm nimbus &
在另外两台机子上开启supervisor 进程
storm supervisor &
开启完按Ctrl+c
用jps查看进程是否启动成功
如:
[root@slave1 software]# jps
2792 supervisor
2904 Jps
2655 QuorumPeerMain
在centos主机上开启
storm ui &
storm logviewer &
这样就可以通过web查看storm部署情况了
访问http://192.168.52.142:8080/
如图
4、安装git
查看是否安装git
rpm -qa |grep git
安装命令
yum install git
运行如下命令下载storm-starter测试storm是否安装成功
git clone git://github.com/nathanmarz/storm-starter.git
5、下载maven
下载解压,安装目录/software/
加入环境变量到/etc/profile
JAVA_HOME=/software/jdk1.7.0_80
STORE_HOME=/software/storm-0.9.1
MAVEN_HOME=/software/apache-maven-3.3.9
PATH=$JAVA_HOME/bin:$STORE_HOME/bin:$MAVEN_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib.tools.jar
进入刚刚下载的storm-starter目录下
mv m2-pom.xml pom.xml
修改pom.xml,把这段改为如下:
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>0.9.1-incubating</version>
<!-- keep storm out of the jar-with-dependencies -->
<scope>provided</scope>
</dependency>
完整如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>storm.starter</groupId> <artifactId>storm-starter</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>storm-starter</name> <url>https://github.com/nathanmarz/storm-starter</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <repositories> <repository> <id>github-releases</id> <url>http://oss.sonatype.org/content/repositories/github-releases/</url> </repository> <repository> <id>clojars.org</id> <url>http://clojars.org/repo</url> </repository> </repositories> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.8.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.easytesting</groupId> <artifactId>fest-assert-core</artifactId> <version>2.0M8</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jmock</groupId> <artifactId>jmock</artifactId> <version>2.6.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>0.9.1-incubating</version> <!-- keep storm out of the jar-with-dependencies --> <scope>provided</scope> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>15.0</version> </dependency> </dependencies> <build> <sourceDirectory>src/jvm</sourceDirectory> <testSourceDirectory>test/jvm</testSourceDirectory> <resources> <resource> <directory>${basedir}/multilang</directory> </resource> </resources> <plugins> <!-- Bind the maven-assembly-plugin to the package phase this will create a jar file without the storm dependencies suitable for deployment to a cluster. --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass></mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.theoryinpractise</groupId> <artifactId>clojure-maven-plugin</artifactId> <version>1.3.12</version> <extensions>true</extensions> <configuration> <sourceDirectories> <sourceDirectory>src/clj</sourceDirectory> </sourceDirectories> </configuration> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>java</executable> <includeProjectDependencies>true</includeProjectDependencies> <includePluginDependencies>false</includePluginDependencies> <classpathScope>compile</classpathScope> <mainClass>${storm.topology}</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build></project>
编译storm.starter
mvn compile exec:java -Dstorm.topology=storm.starter.WordCountTopology
下载jar包,要一段时间,我家里网速慢,如果显示下载有错误,一般是网址打不开,可能是网速问题,多运行几次
打包上传到storm集群
打包:
mvn package
发现 storm-starter目录下多了两个jar包
再提交到集群
本地模式 storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.RollingTopWords
远程模式提交
storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology ExclamationTopalogy
进程一直在运行,可以在web界面看到运行情况,并且可以杀死该任务
点击进入ExclamationTopalogy,如下图
杀死刚刚运行的topology命令
storm kill ExclamationTopalogy
转载请指明出处http://blog.csdn.net/tanggao1314/article/details/52348632
下载安装包地址http://download.csdn.net/my/uploads/1
0 0
- Twitter Storm: 搭建storm集群
- Storm集群搭建
- 搭建Storm集群
- Storm集群搭建
- Storm集群搭建
- storm集群环境搭建
- Storm集群搭建
- Storm集群搭建
- Storm集群搭建
- 006-storm集群搭建
- storm集群搭建
- Storm集群搭建
- 搭建Storm集群
- Storm集群搭建
- Storm分布式集群搭建
- storm集群搭建
- Storm集群搭建
- 搭建storm集群
- linux下防火墙加白名单
- 【剑指offer】面试题7:用两个栈实现队列
- 《Java源码分析》:BlockingQueue之PriorityBlockingQueue
- Java中错误记录
- 【Linux网络编程】UDP编程
- 搭建storm集群
- 笔记:CXF与spring整合
- 面试前的思考
- UVA 11361 - Investigating Div-Sum Property-数位DP
- 基于verilog的EEPROM读写
- 唯品会订单分库分表的实践总结以及关键步骤
- 程序员-前行-001-c++程序
- X86 内存布局分析(Memory map)
- jap 复合查询