STORM集群版安装测试流程

STORM集群版安装测试流程
STORM集群版安装测试流程

Storm集群版安装测试流程

最近研究Storm,现在把storm安装流程分享一下。请注意,千万慎用虚拟机,一开始本人采用虚拟机部署环境,折腾了两天都没搞定。后来使用真机,很多问题迎刃而解。

需要相关依赖环境:

JDK6、Python2.7.*、Zookeeper、Zeromq、Jzmq、Storm、Git、Maven

Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)?主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm 集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。Nimbus的作用类似于Hadoop中JobTracker的角色。

?每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序。Supervisor 负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。

每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。

Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。此外,Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm 集群所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以用kill-9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作。这个设计使得Storm集群拥有不可思议的稳定性。

1、第一步,安装Python2.7.2

wget https://www.360docs.net/doc/d210134172.html,/ftp/python/2.7.2/Python-2.7.2.tgz

tar zxvf Python-2.7.2.tgz

cd Python-2.7.2

./configure

make

make install

vi/etc/ld.so.conf

追加/usr/local/lib/

sudo ldconfig

2、第二步,安装zookeeper

wget https://www.360docs.net/doc/d210134172.html,/apache-mirror/zookeeper/zookeeper-3.3.5/zookeeper-3.3.5.tar.gz tar-zxvf zookeeper-3.3.5.tar.gz

vim/etc/profile(设置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin)

export ZOOKEEPER_HOME="/path/to/zookeeper"

export PATH=$PATH:$ZOOKEEPER_HOME/bin

cp/usr/local/zookeeper/conf/zoo_sample.cfg/usr/local/zookeeper/conf/zoo.cfg

(用zoo_sample.cfg制作$ZOOKEEPER_HOME/conf/zoo.cfg)

mkdir/tmp/zookeeper

mkdir/var/log/zookeeper

3、安装zeromq

wget https://www.360docs.net/doc/d210134172.html,/zeromq-2.1.7.tar.gz

tar-xzf zeromq-2.1.7.tar.gz

cd zeromq-2.1.7

./configure

make

sudo make install

4、安装jzmq(both native and into local maven cache)

git clone https://https://www.360docs.net/doc/d210134172.html,/nathanmarz/jzmq.git(如果系统没有安装Git,需要手动安装)cd jzmq

./autogen.sh

./configure

make

sudo make install

5、安装Storm

wget https://www.360docs.net/doc/d210134172.html,/downloads/nathanmarz/storm/storm-0.8.1.zip

unzip storm-0.8.1.zip

vim/etc/profile

export STORM_HOME=/usr/local/storm-0.8.1

export PATH=$PATH:$STORM_HOME/bin

6、修改配置文件和启动系统

Zookeeper集群版配置

根据Zookeeper集群节点情况,创建如下格式的Zookeeper配置文件zoo.cfg:tickTime=2000

dataDir=/var/zookeeper/

clientPort=2181

initLimit=5

syncLimit=2

server.1=zoo1:2888:3888

server.2=zoo2:2888:3888

server.3=zoo3:2888:3888

其中,dataDir指定Zookeeper的数据文件目录;其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,zoo1~zoo3表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port 是用于leader选举的端口。请注意,zookeeper管理的服务器必须是奇数台,否则无法实现选举功能,会出现意想不到的错误。

在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点对应的server.id中的id编号

启动:./bin/zkServer.sh start

查看状态:./bin/zkServer.sh status

链接服务器:./bin/zkCli.sh如果没有异常,则表示安装正确

Storm集群配置文件:

Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。

conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。以下配置选项是必须在conf/storm.yaml中进行配置的:

storm.zookeeper.servers:Storm集群使用的Zookeeper集群地址

storm.zookeeper.servers:

-"111.222.333.444"

-"555.666.777.888"

storm.local.dir:Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本

地磁盘目录,需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配

置该目录,如:

storm.local.dir:"/home/admin/storm/workdir"

nimbus.host:Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个

机器是Nimbus,以便下载Topologies的jars、confs等文件,如:

nimbus.host:"111.222.333.444"

supervisor.slots.ports:对于每个Supervisor工作节点,需要配置该工作节点可以运

行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用

于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:

supervisor.slots.ports:

-6700

-6701

-6702

-6703

启动:

storm nimbus&--启动主节点

storm supervisor&-启动从属节点

storm ui&--启动storm管理监控界面,可以通过网页访问

7、测试一下WordCount

1.下载strom starter的代码git clone https://https://www.360docs.net/doc/d210134172.html,/nathanmarz/storm-starter.git

2.使用mvn-f m2-pom.xml package进行编译。(需要部署Maven环境)

3.复制storm-starter目录下的m2_pom.xml为pom.xml,因为eclipse需要pom.xml

4.使用mvn eclipse:eclipse编译成eclipse工程

5.在Eclipse中import选择storm-starter的路径,一般导入项目后,会需要设置相应的M2_查看工程是否无误,可能会需要配置M2_REPO变量,M2_REPO配置方法:工程上右键->Properties->Java Build Path->Libraries->AddVariable->Configure Variable->New 输入Name:M2_REPO,Path:localRepository路径->ok刷新工程,代码无误了,可以进行开发了

6.编译无误后,使用eclipse的export功能导出项目的jar包,便于以后分布式的情况下,提交相应的逻辑

Strom-Starter构建失败,缺少twitter4j包的解决办法:

修改Storm-Starter的pom文件m2-pom.xml,修改dependency中twitter4j-core和twitter4j-stream两个包的依赖版本,如下:

org.twitter4j

twitter4j-core

[2.2,)

org.twitter4j

twitter4j-stream

[2.2,)

向集群提交任务:

storm jar allmycode.jar org.me.MyTopology arg1arg2arg3

ZooKeeper注册中心安装详细步骤(单节点)

本文参考(龙果学院)www#roncoo#com DUBBO项目实战课程文档 Dubbo建议使用Zookeeper作为服务的注册中心。 注册中心服务器(192.168.3.71)配置,安装Zookeeper: 1、修改操作系统的/etc/hosts文件中添加: # zookeeper servers 192.168.3.71 edu-provider-01 2、到https://www.360docs.net/doc/d210134172.html,/zookeeper/下载zookeeper-3.4.6: $ wget https://www.360docs.net/doc/d210134172.html,/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 3、解压zookeeper安装包: $ tar -zxvf zookeeper-3.4.6.tar.gz 4、在/home/wusc/zookeeper-3.4.6目录下创建以下目录: $ cd /home/wusc/zookeeper-3.4.6 $ mkdir data $ mkdir logs 5、将zookeeper-3.4.6/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为 zoo.cfg $ cp zoo_sample.cfg zoo.cfg 6、修改zoo.cfg配置文件: $ vi 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=/home/wusc/zookeeper-3.4.6/data dataLogDir=/home/wusc/zookeeper-3.4.6/logs # the port at which the clients will connect clientPort=2181 #2888,3888 are election port server.1=edu-provider-01:2888:3888

Windows环境下Kafka与Zookeeper安装配置与启动过程

Windows环境下Kafka与Zookeeper安装配置与启动过程1.软件下载 1.1下载jdk1.8.0_60 1.2 下载zookeeper-3.4.9.tar.gz 1.3下载kafka_ 2.12-0.10.2.0.tgz 2.环境准备 安装配置java环境,配置jdk1.8为操作系统java运行时环境 2.1安装jdk1.8 将https://www.360docs.net/doc/d210134172.html,网站下载的jdk1.8.0_60压缩包解压缩到c:\program files\java目录下,如下图: 2.2 配置java环境 如图在“控制面板--系统和安全--系统”页,鼠标点击“高级系统设置”,在弹出的“系统属性”页面选择高级tab页:

点击“环境变量”按钮后,在弹出的环境变量对话框中点击“系统变量”栏中的“新建”按钮,在弹出的“新建系统变量”窗口中输入如下: :

点确定确定后,再配置JRE_HOME

同时打开一个cmd窗口在其中输入: SET JA V A_HOME=C:\Program Files\Java\jdk1.8.0_60

SET CLASSPATH=.;%JA V A_HOME%/lib/dt.jar;%JA V A_HOME%/lib/tools.jar;%JRE_HOME%\lib\;%JRE_HOME%\lib\r t.jar;%JRE_HOME%\lib\jce.jar;%JRE_HOME%\lib\metadata-extractor-2.4.0-beta-1.jar;%JRE_HOME%\lib\mediautil-1.0.jar; SET Path=%JA V A_HOME%\bin;%JA V A_HOME%\jre\bin; 在命令行输入java -version,输出如下,表明系统已启用java配置 3.Zookeeper安装配置 3.1 解压与目录设计 在目录e:\apache\zookeeper\下解压文件zookeeper-3.4.9.tar.gz,并将解压文件夹改名为zk0,复制该文件夹到相同目录下分别改名为zk1、zk2. 3.2在zk0\zk1\zk2目录下都创建空文件夹data和logs,如下图 3.2在data目录中创建文件myid,设置zookeeper服务器的序号。 Myid的内容分别为0、1、2

利用的配置ZooKeeper服务实现分布式系统数据同步

利用ZooKeeper服务实现分布式系统的配置数据同步 很多时候,一旦习惯了某些事情,也就习惯了它们的恶劣,习惯了它们的丑陋,习惯了它们“赋予”你的各种痛苦。 –Tony Bai 一、痼疾难解 我们目前的业务配置数据同步方案。简单描述这个方案如下: 方案涉及两个角色–数据库(DB)与应用节点(app_node); 所有的业务配置数据均统一存储在DB中; 应用节点在启动后从DB中读取最新业务配置数据; 应用节点运行过程中,如果DB中的业务配置数据发生变更(增/删/改),DB中的触发器(trigger)将会执行。在触发器的脚本中,触发器将会【串行】地与每个应用节点建立TCP链接,并将业务配置表的变更信息发给各个应用节点。应用节点会接收并【解析】触发器发过来变更数据包,并同步到自己的本地内存中。这样就达到了运行时更新配置的目的。 曾几何时,在那个还没有集群化,没有分布式的时代,它还是一个不错的方案,至少在线上没有暴露出太多问题,它也不在我们关注的重点范围之内。但随着集群化、分布式的新版本的到来,那一大坨遗留的代码就变得格外让人不顺眼,同时问题也随之在线上暴露开来了。上面我用【】标记了两个关键词:“串行”和“解析”。这两个词隐含有这个方案的两个主要问题。 “串行”–意味着每一次DB的业务配置数据变更,trigger脚本都要逐个与应用节点建立链接并收发数据。当应用节点逐渐增多时,每一次业务数据同步都会相当地耗时。尤其是当某个应用节点所在主机出现问题时,到该节点链接建立的过程会阻塞,导致整个业务配置数据同步的时间达到无法忍受的地步。 “解析”–我们自定义了trigger与应用节点之间的协议包。协议包中包含了每次变更的详细信息,比如在某个表添加一条记录,trigger会将这个记录的每个字段信息排成一行打包发给应用节点。应用节点收到这个包后,会根据已有的表字段信息对该包进行解析。看得出这是一个很强的耦合:表字段一旦修改,trigger脚本要修改,应用节点的解析函数要修改,还要考虑协议包中表字段的排序。如果应用节点解析时与trigger脚本打包时的字段顺序不同的话,那就可能出现严重错误,而且这种错误有时难于校验并难于发现。 二、曾经的努力 针对这个方案的不足,我们曾经也做过改进,但主要针对的是解决“串行”这个问题上。第一次改进:同步的发起能否并行做?trigger脚本能否并行发起对各个应用节点的链接建立请求? Java组同事对trigger脚本做了改进。让trigger脚本调用function,而function中又调用了写好的Java方法,Java代码由DB加载到环境中。在Java方法中创建多个同步线程,并发与各应用节点建立链接并发送数据。这个方法的确可以变“串行”为“并行”,但不知为何生产环境中实际运行时偶尔会出现异常,该异常发生在DB中,影响很大。有时还会导致DB的一些异常现象。至今原因尚未明确,我们无奈退回到以前的方案。 第二次改进:从Push模式到Pull模式 在之前部门新规划的一个产品中,开发人员对数据同步的机制做了重新的设计,将原来的Push模式改为了Pull模式。大致方案是: 业务数据变更时,trigger直接将变更内容(以老方案中那个协议包的打包格式)写到一个“变更日志表”中,每条记录有一个唯一的序号,序号递增。

CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程

目录 1.软件准备 (2) 2.安装步骤 (2) 2.1.安装虚拟机 (2) 2.2.在CentOS上安装JDK (2) 2.3.安装Jboss (4) 2.4.Zookeeper单机版的安装与测试 (6) 2.5.Zookeeper 集群安装(单点与分布式成功安装) (9) 2.6.dubbo管理控制台及集成zookeeper集群部署 (11) CentOS+Jdk+Jboss+Dubbo配置教程

1.软件准备 虚拟机:VMware-workstation-full-10.0.0-1295980.exe CentOS: CentOS-5.10-i386-bin-DVD-1of2.iso、 CentOS-5.10-i386-bin-DVD-2of2.iso Jdk7:jdk-7u45-linux-i586.rpm Jboss7.1.1:jboss-as-7.1.1.Final.zip Zookeeper:zookeeper-3.4.5.tar.gz SSH工具:SSHSecureShellClient-3.2.9.exe 2.安装步骤 2.1.安装虚拟机 一、在电脑上安装VMware-workstation-full-10.0.0-1295980.exe 二、在Vmware上安装CentOS 操作系统 2.2.在CentOS上安装JDK 一、查看Linux自带的JDK是否已安装(卸载centOS已安装的1.4) 安装好的CentOS会自带OpenJdk,用命令java -version ,会有下面的信息:# java –version(注:下面开始#开始是shell命令,并且用颜色区分) java version "1.6.0" OpenJDK Runtime Environment (build 1.6.0-b09) OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)

搭建zookeeper单机部署和集群部署

2. 3. 4. 5. zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方式逐一进行讲解。 1. 系统环境准备 操作系统 :centos7 java 环境:jdk8 我搭建的是自centos7的linux下,先配置好java的配置环境,然后下载zookeeper的相关的jar进行部署 2.zookeeper部署 下 载 zookeeper 安装包: 下载完成,通过 tar -zxvf 解压 tar -zxf zookeeper-3.4.5.tar.gz 常用命令 1.启动 ZK 服务: sh bin/zkServer.sh start 查看 ZK 服务状态: sh bin/zkServer.sh status 停止 ZK 服务: sh bin/zkServer.sh stop 重启 ZK 服务: sh bin/zkServer.sh restart 连接服务器 sh zkCli.sh -timeout 0 -r -server ip:port 3.集群模式 初 次 使 用 zookeeper , 需 要 将 %zk_home%/conf 目 录 下 的zoo_sample.cfg 文件 copy 一份重命名为 zoo.cfg,修改 dataDir 目录,dataDir 表示日志文件存放的路径集群环境安装在 zookeeper 集群中,各个节点总共有三种角色,分别是:leaderfollowerobserver 集群模式我们采用模拟 3 台机器来搭建 zookeeper 集群。分别复制安装包到三台机器上并解压,同时 copy 一份zoo.cfg。 3.1 修改配置文件zoo.cfg 在zoo.cfg配置文件配置以下的语句 tickTime=2000 dataDir=/tmp/zookeeper dataLogDir=/usr/myapp/zookeeper-3.4.5/logs clientPort=2181 initLimit=10 syncLimit=5 server.1=192.168.44.128:2888:3888 server.2=192.168.44.129:2888:3888 server.3=192.168.44.130:2888:3888 server.id=host:port1:port2 idservice ID ,同时,在每台zookeeper机器上,需要在数据目录(dataDir参数指定 的那个目录下)创建一个myid的文件,文件只要一行内容,并且是一个数字,即对应 每台服务器的serverID的数字

07 hadoop完全分布式安装第七步:zookeeper分布式配置

实验七 zookeeper分布式的配置 tar -zxvf zookeeper-3.4.5.tar.gz mv zookeeper-3.4.5 zookeeper cd zookeeper mkdir data mkdir logs 三、集群模式 集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在192.168.1.1,192.168.1.2,192.168.1.3三台主机为例。 zookeeper 配置 1.Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。 2.在master的/home/chenlijun目录下,解压缩zookeeper(执行命令tar –zvxf zooke eper.tar.gz) 3.设置环境变量 打开/etc/profile文件!内容如下:

[html]view plain copy 1.#set java & hadoop 2. 3.export JAVA_HOME=/home/chenlijun/java/ 4. 5.export HADOOP_HOME=/home/chenlijun/hadoop 6. 7.export ZOOKEEPER_HOME=/home/chenlijun/zookeeper 8. 9.export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH 注:修改完后profile记得执行source /etc/profile 4.在解压后的zookeeper的目录下进入conf目录修改配置文件 更名操作:mv zoo_sample.cfg zoo.cfg 5.编辑zoo.cfg (vi zoo.cfg) 修改dataDir=/home/chenlijun/zookeeper/data/ 新增server.0=master:2888:3888 server.1=slave1:2888:3888 server.2=slave2:2888:3888 文件如下:

基于Storm的实时大数据处理

基于Storm的实时大数据处理 摘要:随着互联网的发展,需求也在不断地改变,基于互联网的营销业务生命周期越来越短,业务发展变化越来越快,许多业务数据量以指数级增长等等都要求对大量的数据做实时处理,并要求保证数据准确可靠。面对这些挑战云计算、大数据概念应运而生,Hadoop、Storm等技术如雨后春笋般出现。本文就当今最火的实时流数据处理系统Storm进行详细介绍。在介绍Storm之前首先详细介绍了实时计算和分布式系统相关技术概念以便为后面内容做铺垫。通过对Storm的基本概念、核心理念、运行机制和编程场景进行了全面的探讨,使得我们对Storm有了一个比较全面的理解和方便我们在这方面进行更进一步的学习。 关键字:Storm;实时大数据;流数据处理 1概要 当今世界,信息爆炸的时代,互联网上的数据正以指数级别的速度增长。新浪微博注册用户已经超过3亿,用户日平均在线时长60min,平均每天发布超过1亿条微博[1]。在这种背景下,云计算的概念被正式提出,立即引起了学术界和产业界的广泛关注和参与。Google 是云计算最早的倡导者,随后各类大型软件公司都争先在“云计算”领域进行一系列的研究和部署工作。目前最流行的莫过于Apache的开源项目Hadoop分布式计算平台,Hadoop专注于大规模数据存储和处理。这种模型对以往的许多情形虽已足够,如系统日志分析、网页索引建立(它们往往都是把过去一段时间的数据进行集中处理),但是在实时大数据方面,Hadoop的MapReduce却显得力不从心,业务场景中需要低延迟的响应,希望在秒级别或者毫秒级别完成分析,得到响应,并希望能够随着数据量的增大而扩展。此时,Twitter公司推出开源分布式、容错的实时流计算系统Storm,它的出现使得大规模数据实时处理成为可能,填补了该领域的空白。 Storm是一个类似于Hadoop可以处理大量数据流的分布式实时计算系统。但是二者存在很大的区,其最主要的区别在于Storm的数据一直在内存中流转,Hadoop使用磁盘作为交换介质,需要读写磁盘。在应用领域方面,Storm是基于流的实时处理,Hadoop是基于任务调度的批量处理。另一个方面,Hadoop基于HDFS需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率比较低,而Storm基于ZeroMQ这个高性能消息通讯库,不持久化数据[2]。 2实时计算介绍 实时计算(Real-time computing)也称为即时计算,是计算机科学中对受到“实时约束”的计算机硬件和计算机软件系统的研究,实时约束是从事件发生到系统回应之间的最长时间限制。实时程序必须保证在严格的时间限制内响应。 互联网领域的实时计算一般都是针对海量数据进行的,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级。互联网行业的实时计算可以分为以下两种应用场景:(1)持续计算:主要用于互联网流式数据处理。所谓流式数据是指将数据看作是数据流的形式来处理。数据流是一系列数据记录的集合体。常见的数据流如网站的访问PV/UV、点击、搜索关键字。 (2)实时分析:主要用于特定场合下的数据分析处理。当数据量很大,且存在无穷的查询条件组合,或穷举并提前计算和保存结果的代价很大时,实时计算就可以发挥作用,将部分计算或全部计算过程推迟到查询阶段进行,但要求能够实时响应。 实时计算需要解决的问题和难点是实时存储和实时计算。实时存储可以通过使用高性能

ZooKeeper注册中心配置

Dubbo 建议使用 Zookeeper 作为服务的注册中心。 注册中心服务器(192.168.3.71)配置,安装Zookeeper: 1、修改操作系统的/etc/hosts 文件中添加: # zookeeper servers 192.168.3.71edu-provider-01 2、到 https://www.360docs.net/doc/d210134172.html,/zookeeper/下载 zookeeper-3.4.6: $ wget https://www.360docs.net/doc/d210134172.html,/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 3、解压 zookeeper 安装包: $ tar -zxvf zookeeper-3.4.6.tar.gz 4、在/home/wusc/zookeeper-3.4.6 目录下创建以下目 录: $ cd /home/wusc/zookeeper-3.4.6 $ mkdir data $ mkdir logs 5、将zookeeper-3.4.6/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为 zoo.cfg $ cp zoo_sample.cfg zoo.cfg 6、修改zoo.cfg配置文件: $ vi 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=/home/wusc/zookeeper-3.4.6/data dataLogDir=/home/wusc/zookeeper-3.4.6/logs # the port at which the clients will connect clientPort=2181 #2888,3888 are election port server.1=edu-provider-01:2888:3888

linux系统下安装zookeeper集群

1.概述 操作系统为3台ubuntu虚拟机,其ip地址分别为 ubuntu1 192.168.1.109 ubuntu2 192.168.1.108 ubuntu3 192.168.1.110 jdk版本为jdk7 2.下载解压(三台机器都执行一遍) 2.1将zookeeper解压到/usr/local/zookeeper- 3. 4.5目录下 2.2以下命令都是在/usr/local/zookeeper- 3. 4.5目录下执行的 #从zookeeper的sample中复制一个zk的配置文件 root@ubuntu-2:/usr/local/zookeeper-3.4.5# cp conf/zoo_sample.cfg conf/zoo.cfg #修改一下这个配置文件,让他支持集群 root@ubuntu-2:/usr/local/zookeeper-3.4.5# vi conf/zoo.cfg #修改一下存储数据的目录,给出的模板里放在/tmp/zookeeper(如果 /var/lib/zookeeper目录不存在则需要自行创建) dataDir=/var/lib/zookeeper/ #在这个文件的末尾添加如下配置(遵循server.id=host:port:port的格式): server.1=192.168.1.109:2888:3888 server.2=192.168.1.108:2888:3888 server.3=192.168.1.110:2888:3888 保存配置退出vi编辑器 2.3切换到/var/lib/zookeeper目录下(这个目录即上面的zoo.cfg中配置的dataDir目录)新建一个myid的文本文件,编辑其内容如下 在server.1=192.168.1.109这台机器上设置1 在server.2=192.168.1.108这台机器上设置2 在server.3=192.168.1.110这台机器上设置3 设置的规则就是在zoo.conf文件指定的server.id,zookeeper用这个数字来标识集群中的哪一个节点 3.启动 切换到zookeeper安装目录的bin下 root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh start 4.集群验证 在三台机器上分别使用zkServer.sh status命令查看当前服务状态 server3输出:

ZooKeeper部署文档

ZooKeeper部署流程 一、下载 从Apache网站上(https://www.360docs.net/doc/d210134172.html,)下载ZooKeeper软件包并进行解压,如zookeeper-3.3.4.tar.gz。 二、单节点模式 1.将zookeeper-3.3.4/conf目录下面的zoo_sample.cfg修改为zoo.cfg,配置文件 内容如下所示: 2.启动ZooKeeper服务器进程: 3.通过jps命令可以查看ZooKeeper服务器进程,名称为QuorumPeerMain。 三、伪分布式模式 将解压出来的zookeeper复制三份,分别重命名为zookeeper-1,zookeeper-2和zookeeper-3。 1.配置zookeeper-1: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-1/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-1/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-1/data/myid 内容:1 d.创建/home/java2000_wl/hadoop/zookeeper-1/conf/zoo.cfg文件 内容:

tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/java2000_wl/hadoop/zookeeper-1/data clientPort=2181 dataLogDir=/home/java2000_wl/hadoop/zookeeper-1/logs server.1=127.0.0.1:4000:5000 server.2=127.0.0.1:4001:5001 server.3=127.0.0.1:4002:5002 2.配置zookeeper-2: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-2/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-2/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-2/data/myid 内容:2 d.创建/home/java2000_wl/hadoop/zookeeper-2/conf/zoo.cfg文件 内容: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/java2000_wl/hadoop/zookeeper-2/data clientPort=2182 dataLogDir=/home/java2000_wl/hadoop/zookeeper-2/logs server.1=127.0.0.1:4000:5000 server.2=127.0.0.1:4001:5001 server.3=127.0.0.1:4002:5002 3.配置zookeeper-3: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-3/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-3/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-3/data/myid 内容:3 d.创建/home/java2000_wl/hadoop/zookeeper-3/conf/zoo.cfg文件 内容: tickTime=2000

基于zookeeper高可靠性分布式理论概述

基于zookeeper高可靠性分布式理论概述 ?Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的NameNode,还有 Hbase 中 Master Election、Server 之间状态同步等。 ?Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型 ?大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) ?目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 ?协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 ?ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用 ?Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等. ?HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等. ?特性 ? ?Zookeeper是简单的 ?Zookeeper是富有表现力的 ?Zookeeper具有高可用性 ?Zookeeper采用松耦合交互方式 ?Zookeeper是一个资源库 ? ?Zookeeper是一个由多个server组成的集群 ?一个leader,多个follower

?每个server保存一份数据副本 ?全局数据一致 ?分布式读写 ?更新请求转发,由leader实施 ?角色 ?领导者(leader),负责进行投票的发起和决议,更新系统状态 ?学习者(learner),包括跟随者(follower)和观察者(observer),follower 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票?Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速 度 ?客户端(client),请求发起方 工作原理 ?Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和 广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导 者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式 就结束了。状态同步保证了leader和server具有相同的系统状态。 ? 一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即 进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大 部分的followers支持 ?广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了zxid。实现中 zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变, 每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。 ?当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确 的状态。 Leader选举 ?每个Server启动以后都询问其它的Server它要投票给谁。

使用Observer跨机房部署Zookeeper

使用Observer跨机房部署Zookeeper 一、Zookeeper部署的一个问题 Zookeeper本身的设计是强一致性的,重点在于数据的同步和一致,而并非是数据高可用性的。Zookeeper的一个很大的应用场景是用来做数据容灾和负载均衡,这就需要实现跨机房来部署Zookeeper,使得Zookeeper可以在本地机房出现故障后或产生大数据流量后,数据能被另一个服务集群所接收和应用。 实际上,尽管通过客户端直接连接到Zookeeper集群的性能已经非常好了,但是这种架构如果要承受超大规模的客户端,就必须增加Zookeeper集群的服务节点的数量,随着节点的增加,Zookeeper集群的写性能必定下降,我们知道Zookeeper的服务节点是要过半数投票才能通过启动,随着机器的增加,由于网络消耗等原因必然导致投票成本增加,从而导致写性能的下降。 以Zookeeper选举来说,由于Zookeeper的一个集群只有一个master,因此当Zookeeper的Leader挂掉以后,要经过全体Follower选举,Zookeeper的选举流程通常耗时30到120秒,期间Zookeeper由于没有Master,节点都是不可用的。如果所有机房的机器共同选举,所耗费的时长会造成项目上很大的损失。 因此,节点既要保证数据的同步,又不参加选举,跨机房部署Zookeeper就要用到自 3.3.0版本以来引入的Observer角色。 二、Observer介绍 Observer是Zookeeper自3.3.0版本开始引入的一个全新的服务器角色。从字面的意思看,该服务器充当了一个观察者的角色。Observer服务器在工作原理上和Follower基本是一致的,对于非事务请求,都可以进行独立的处理,而对于事务请求,则会转发给Leader服务器进行处理。和Follower的唯一区别在于,Observer不参与任何形式的投票,包括事务请求投票和Leader选举投票。即使断开了集群,也无关影响集群的可用性,更不会影响写的性能。 使用Observer,将Observer跨机房部署,而Leader和Follower部署在单独的数据中心,这样更新操作会在同一个数据中心来处理,并将数据发送的其他数据中心(包含Observer 的),然后Client就可以在其他数据中心查询数据了。但是使用了Observer并非就能完全消除数据中心之间的延迟,因为Observer还得接收Leader的同步结果合Observer有更新请求也必须转发到Leader,所以在网络延迟很大的情况下还是会有影响的,它的优势就为了

zookeeper集群安装

zookeeper集群安装 2010-07-19 15:43:22| 分类:分布式 |字号 订阅 Linux/OS X下: 1 install 1.1) 建立安装目录 mkdir -p /local/software/zookeeper/ cd /local/software/zookeeper/ 1.2) 下载压缩包 curl - O https://www.360docs.net/doc/d210134172.html,/hadoop/zookeeper/zookeeper-3.3.1/zookeeper-3.3.1.tar.gz 1.3) 解压缩文件 tar xzf zookeeper-3.3.1.tar.gz cd /local/software/zookeeper/ 2. Config 我们把提供相同应用的服务器组称之为一个quorum,quorum中的所有机器都有相同的配置文件。 在这里我们以3个机器组成的quorum为例,具体配置如下。 2.1) 建立数据目录 mkdir -p /local/software/zookeeper/zookeeper-3.3.1/data 2.2) 编辑配置文件 /local/software/zookeeper/zookeeper- 3.3.1/conf/zoo.cfg dataDir=/local/software/zookeeper/zookeeper-3.3.1/data clientPort=2181

initLimit=10 syncLimit=5 tickTime=2000 server.1=175.41.131.28:2888:3888 server.2=175.41.131.114:2888:3888 server.3=175.41.132.171:2888:3888 其中server.X代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。下面会讲myid文件的配置。 2.3) 创建dataDir参数指定的目录(这里指的是 "/local/software/zookeeper/zookeeper-3.3.1/data"),并在目录下创建文件,命名为“myid”,编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。如在175.41.131.114上,“myid”文件内容就是2,在175.41.132.171上,内容就是 3 2.4)注意打开防火墙的端口 (1)如果是用iptable的话,在/etc/sysconfig/iptables中加入: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 –j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 –j ACCEPT 执行命令: service iptables stop service iptables start (2)EC2上的请打开相应的防火墙端口 3. 启动服务 三台電腦先後下zkServer start 指令,無限定誰先誰後,但三台電腦間執

分布式服务框架 Zookeeper -- 管理分布式环境中的数据

分布式服务框架Zookeeper -- 管理分布式环境中的数据 简介:Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍Zookeeper 的安装和配置文件中各个配置项的意义,以及分析Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等),用Java 实现它们并给出示例代码。 安装和配置详解 本文介绍的Zookeeper 是以3.2.2 这个稳定版本为基础,最新的版本可以通过官 网https://www.360docs.net/doc/d210134172.html,/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍Zookeeper 的安装和配置。 单机模式 单机安装非常简单,只要获取到Zookeeper 的压缩包并解压到某个目录如: /home/zookeeper-3.2.2 下,Zookeeper 的启动脚本在bin 目录下,Linux 下的启动脚本是zkServer.sh,在3.2.2 这个版本Zookeeper 没有提供windows 下的启动脚本,所以要想在windows 下启动Zookeeper 要自己手工写一个,如清单1 所示: 清单1. Windows 下Zookeeper 启动脚本 在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在conf 目录下,这个目录下有zoo_sample.cfg 和log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为zoo.cfg,因为Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。

ZooKeeper 安装与配置

ZooKeeper 安装、配置 如题本文介绍的是ZooKeeper 的安装和配置过程,此过程非常简单,关键是如何应用(将放在下节及相关节中介绍)。单机安装、配置: 安装非常简单,只要获取到Zookeeper 的压缩包并解压到某个目录如: /home/frank/ZooKeeperInstall/zookeeper-3.3.3下。 配置文件存放在/conf/目录下,将zoo_sample.cfd文件名称改为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. dataDir=/home/frank/ZooKeeperInstall /data //这是我修改后的 # the port at which the clients will connect

clientPort=2181 ?tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime 时间就会发送一个心跳。 ?dataDir:顾名思义就是Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 ?clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 当这些配置项配置好后,你现在就可以启动Zookeeper 了:进入/bin目录 $ zkServer.sh start 启动后要检查Zookeeper 是否已经在服务,可以通过netstat – ano 命令查看是否有clientPort 端口号在监听服务。 集群安装、配置: Zookeeper 的集群模式的安装和配置也不是很复杂,所要做的就是增加几个配置项。集群模式除了缺省的配置项还要在zoo.cfg文件末尾增加集群中的机器ip、端口等: server.1=192.168.0.101:2888:3888 server.2=192.168.0.102:2888:3888 其中,在这里要用到缺省配置中的initLimit、syncLimit

Hadoop+HBase+Zookeeper集群的配置

Hadoop +HBase + Zookeeper集群的配置文档 1.环境 ●OS :ubuntu-10.04.2-desktop ●Hadoop :Hadoop-0.20.2 ●HBase :HBase-0.20.6 ●Zookeeper :Zookeeper-3.3.3 ●JDK :JDK-1.6.0.24 本集群有三台机器IP对应分别如下: 192.168.9.128:ubuntu (namenode,SecondarNameNode,HMaster,HQuorumPeer,HRegionServer,DateNode) 192.168.9.131:test1 (DataNode,HRegionServer,HquorumPeer) 192.168.9.132:test2(DataNode,HRegionServer,HquorumPeer) 由于机器所限,为了模拟更多的节点,在Namenod节点上同时部署了DataNode,HRegionServer,SecondarNameNode,同时又作为HBase的主节点。 2.Hadoop集群的部署 详见Hadoop集群部署手册

3.安装和部署HBase 3.1.修改机器的hosts文件 修改所有机器的/etc/hosts文件将下面的内容添加进去: 192.168.9.128 ubuntu 192.168.9.131 test1 192.168.9.132 test2 3.2.安装 通过命令tar zxvf hbase-0.20.6.tar.gz加压到当前文件夹 3.3.修改HBase的配置文件 编辑所有机器上的hbase安装目录conf目录下的hbase-site.xml、hbase-default.xml、hbase-env.sh几个文件 3.3.1.Hbase-site.xml 编辑这个文件要注意hbase.rootdir参数,这个参数必须与你的hadoop集群里的core-site.xml文件里https://www.360docs.net/doc/d210134172.html,保持一致才可以。在就是hbase该项不识别机器的IP,只能使用机器的hostname才可以。 Hbase.zookeeper.quorum个数必须为奇数。 hbase.rootdir hdfs://ubuntu:54310/hbase

相关文档
最新文档