您的位置:首页 > 数据库 > Redis

kafka zookeeper redis 搭建

2017-05-14 10:03 441 查看
REDIS  环境搭建

1.下载Redis

   下载地址:http://download.redis.io/releases/redis-2.8.13.tar.gz

2.安装Redis

在linux下运行如下命令进行安装。

$ wget http://download.redis.io/releases/redis-2.8.13.tar.gz
$ tar xzf redis-2.8.13.tar.gz

$ cd redis-2.8.13

$ make

make完后 redis-2.8.13目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli。下面启动redis服务.

    $ src/redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动.

    $ src/redis-server redis.conf

 

注意不能关闭当前窗口的,不然就退出了服务了,后台运行要加上 & 如:$ src/redis-server redis.conf &

转自:http://liyonghui160com.iteye.com/blog/2106521

ZOOKEEPER搭建
http://blog.chinaunix.net/uid-20682147-id-4220311.html


1. 前言

介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux。

ZooKeeper节点间不需要互登录,因此不用配置免密码登录。


2. 约定

将ZooKeeper安装在/data/hadoop/zookeeper目录,其中/data/hadoop/zookeeper是指向/data/hadoop/zookeeper-3.4.6的软链接。

ZooKeeper的数据目录设置为/data/hadoop/zookeeper/data。

本文使用了3台机器部署ZooKeeper集群,IP和主机名对应关系如下:
IP
主机名
10.12.154.77
DEVNET-154-77
10.12.154.78
DEVNET-154-70
10.12.154.79
DEVNET-154-79


3. 安装步骤

在操作之前,请先确认各zookeeper节点间能够无密码登录,并请保持相同的用户名,可以为非root。


3.1. 配置/etc/hosts

将3台机器的IP和主机名映射关系,在3台机器上都配置一下,亦即在3台机器的/etc/hosts文件中,均增加以下内容(可以先配置好一台,然后通过scp等命令复制到其它机器上,注意主机名不能包含任何下划线):
10.12.154.77    DEVNET-154-77

10.12.154.78    DEVNET-154-70

10.12.154.79    DEVNET-154-79


3.2. 设置myid

在dataDir指定的数据目录(/data/hadoop/zookeeper/data)下,创建文件myid,文件内容为一个正整数值,用来唯一标识当前机器,因此不同机器的数值不能相同,建议从1开始递增标识,以方便记忆和管理。本文约定如下:
IP
标识数值(取值范围为1~255
10.12.154.77
1
10.12.154.78
2
10.12.154.79
3
可以使用echo命令直接写进去,如:
echo 1 > myid或echo 1 > /data/hadoop/zookeeper/data/myid


3.3. 修改conf/zoo.cfg

按下述内容,修改ZooKeeper配置文件(3台机器都需要,可以先配置好一台,然后通过scp等命令复制到其它机器上):
tickTime=2000

dataDir=/data/hadoop/zookeeper/data

clientPort=2181

initLimit=5

syncLimit=2

server.1=DEVNET-154-77:2888:3888

server.2=DEVNET-154-78:2888:3888

server.3=DEVNET-154-79:2888:3888
server.N中的N值必须和myid保持相同。

以上内容的配置,参照了ZooKeeper的官方文档:zookeeperStarted.html。server.X用来配置ZooKeeper集群中的各节点,并建议X的值和myid保持一致。

端口2181用于监听客户端的连接,端口2888用于Leader监听Follower的连接,而3888则用于Leader选举。


3.4. 修改/bin/zkEnv.sh

设置环境变量ZOO_LOG_DIR为zookeeper的日志存放目录,如:

export ZOO_LOG_DIR=/data/hadoop/zookeeper/log

可将这一行放在ZOOKEEPER_PREFIX之后。

再修改下ZOO_LOG4J_PROP,以让日志不是输出到zookeeper.out,而是写入到日志文件,将:ZOO_LOG4J_PROP="INFO,CONSOLE",改成:

ZOO_LOG4J_PROP="INFO,ROLLINGFILE"


3.5. 修改conf/log4j.properties

log4j.appender.ROLLINGFILE.MaxFileSize=100MB

log4j.appender.ROLLINGFILE.MaxBackupIndex=10

设置每个日志文件大小为100M,滚动10个。


4. 启动ZooKeeper集群

登录所有ZooKeeper节点,使用bin目录下的脚本zkServer.sh用来启动ZooKeeper集群,但需要带一个start参数,如:
cd /data/hadoop/zookeeper/bin&&./zkServer.sh start
由于启动时,每个节点都会试图去连接其它节点,因此先启动的刚开始会连接不上其它的,导致日志中会包含错误信息,在未全启动之前,这个属正常现象。


5. 安装验证

脚本zkServer.sh不但可以用来启动ZooKeeper,还可以用来查看状态。使用方式为带一个status参数,如:
./zkServer.sh status
如遇到以下错误,请稍安勿躁,过会再试,可能是因为还未完全起来:
[hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.
集群成功启动后,将有且只会有一个成为leader,其它是follower:
[hadoop@DEVNET-154-79 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: leader

 

[hadoop@DEVNET-154-70 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: follower

 

[hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: follower


6. 基本命令

进入ZooKeeper的bin目录,执行zkCli.sh进入ZooKeeper的命令行操作界面。
./zkCli.sh -server 10.12.154.78:2181
参数“-server”中只含一个“-”,用以指定被连接的ZooKeeper节点,可以为Leader,也可以为Follower,“10.12.154.78”为Leader或Follower的IP或主机名,“2181”为ZooKeerp提供的客户端服务端口。

进入ZooKeeper命令行操作界面后,输入help然后回车,可以看到ZooKeeper支持的命令列表:
[zk: DEVNET-154-79:2181(CONNECTED) 0] help

ZooKeeper -server host:port cmd args

        stat path [watch]

        set path data [version]

        ls path [watch]

        delquota [-n|-b] path

        ls2 path [watch]

        setAcl path acl

        setquota -n|-b val path

        history 

        redo cmdno

        printwatches on|off

        delete path [version]

        sync path

        listquota path

        rmr path

        get path [watch]

        create [-s] [-e] path data acl

        addauth scheme auth

        quit 

        getAcl path

        close 

        connect host:port
“ls”有点像HDFS中的“ls”,随便测试下:
[zk: DEVNET-154-79:2181(CONNECTED) 1] ls /

[zookeeper, hbase]
再测试下:
[zk: DEVNET-154-79:2181(CONNECTED) 2] ls /hbase

[replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, region-in-transition, online-snapshot, master, running, recovering-regions, draining, namespace, hbaseid, table]
再测试一下:
[zk: DEVNET-154-79:2181(CONNECTED) 4] ls /hbase/backup-masters

[VM-40-171-sles10-64,60000,1398162436871]
上面可以看到有HBase,是因为基于它部署了一套HBase,若未基于它安装HBase,则不会有这个条目。


7. 相关文档

《HBase-0.98.0分布式安装指南》

《Hive 0.12.0安装指南》

《ZooKeeper-3.4.6分布式安装指南》

《Hadoop 2.3.0源码反向工程》

《在Linux上编译Hadoop-2.4.0》

《Accumulo-1.5.1安装指南》

《Drill 1.0.0安装指南》

《Shark 0.9.1安装指南》

更多,敬请关注技术博客:http://aquester.cublog.cn


8. 结束语

至此,ZooKeeper分布式安装大告成功!更多细节,请浏览官方文档:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
本节参考:http://blog.chinaunix.net/uid-20682147-id-4220311.html

KAFKA 搭建 转自:http://leaver.me/2015/09/05/kafka%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E4%B8%8E%E9%AA%8C%E8%AF%81/

kafka集群(cluster)

一台机器不够,那就多搞几台,首先,启动zookeeper这个就不多说了.可以参看前文,在启动kafka的时候,我们在单机模拟启动多个kafka应用.

首先在config目录,copy两个server.properties 文件,这里我复制三份,分别起名server1.properties ,server2.properties server3.properties

然后修改这三个配置文件,主要修改broker.id=2,port=9094,log.dir=/tmp/kafka-logs-2这三个值,broker.id是用来标记分布式环境中的broker的,要求唯一,port和log.dir一个端口,一个log目录,如果在真实的分布式环境中是不需要修改.这里单机模拟防止端口冲突.

分别把broker.id改为1,2,3,log.dir则分别改成kafka-logs-1,kafka-logs-2,kafka-logs-3,然后依次启动
kafka-server-start.bat ../../config/server1.properties

kafka-server-start.bat ../../config/server2.properties

kafka-server-start.bat ../../config/server3.properties


如果你启动有报错,一个就是之前说的那个vm参数太大,另一个可能是你的端口没改好.具体错误看下报错就好了.

然后我们注册一个topic,叫做replicationtest
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic replicationtest


这里冗余是3,分区是1,那么最终各个broker都会保留一份,最多允许N-1,也就是2台broker宕机,服务照样运行.

注册之后,这时候
kafka-topics.bat--describe --zookeeper localhost:2181 --topic replicationtest


执行描述命令,看下集群情况


集群描述结果

第一行给出了分区的汇总信息。每个分区行给出分区信息。

“Leader” 节点是2.

“Replicas” 信息,在节点2,3,1上,所有的节点信息.

“Isr” 工作中的复制节点的集合. 也就是活的节点的集合.

其他的就不用解释了.这里选出了2是leader,也就是说2这个节点会给消费者提供服务.

然后我们测试一条信息.
kafka-console-producer.bat --broker-list localhost:7777,localhost:8888,localhost:9999 --topic replicationtest


上面的7777是server1.properties 中设置的.根据个人情况.改改.然后在控制台发发消息.

然后消费一下.
kafka-console-consumer.bat --zookeeper localhost:2181 --topic replicationtest


这里的2181是zookeeper的端口,不用改.


目前运行结果

然后.我们开始关掉一个broker,在3的控制台里CTRL,C.然后是否终止操作,输入Y.

再发一条消息


broker3宕机

一切正常.我们看一下集群信息


broker3宕机集群

发现Isr中存活的机器少了3.因为3挂了.

然后我们关掉broker2.这时候,会触发新的leader选举.期望值1变成leader,再发一条消息


broker2宕机

可以看到生产者发消息过程中,产生了异常,因为和2的连接断开了.但是注意,消息并没有丢,因为触发了新的选举.可以看到,消费者还是接到了正常的消息.集群情况如下


broker2宕机集群

至此,kafka的broker集群测试完毕,那么剩下的问题来了.消费者启动的时候连接的是zookeeper的地址,如果这台zookeeper挂了呢.

那么我们需要zookeeper集群部署.

zookeeper集群

这就包括两部分.

是broker本来要能知道这些zookeeper集群的地址,当一个宕机的时候,才会切换到另一个zookeeper
消费者要知道这些zookeeper的地址,理由同上.
因此步骤如下.可以自己试一试,比较简单

复制3份zookeeper.properties文件,命名为zookeeper1.properties,zookeeper2.properties,zookeeper3.properties,修改文件中的dataDir=/tmp/zookeeper和,clientPort=2181,端口分别设置为2181,2182,2183.然后启动三个zookeeper
修改kafka启动配置,server1.properties三个文件中的zookeeper.connect=localhost:2181这个配置,逗号隔开.最终为zookeeper.connect=localhost:2181,localhost:2182,localhost:2183,然后启动
生产者也改下配置中的.metadata.broker.list=localhost:9092,如果使用命令行启动就不用改了.参数指定也可以.
消费者同理,可以改下配置文件中zookeeper.connect=127.0.0.1:2181,也可以命令行启动的时候修改.

5.最终就是各种宕机测试了.




0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: