版本升级 (使用stable最新版)
zookeeper-3.4.5 --->>> zookeeper-3.4.6
发行日志:http://zookeeper.apache.org/doc/r3.4.6/releasenotes.html
kafka_2.9.2-0.8.1 --->>> kafka_2.9.2-0.8.2.2
发行日志:https://archive.apache.org/dist/kafka/0.8.2.2/RELEASE_NOTES.html
升级说明:http://kafka.apache.org/documentation.html#upgrade_82
jstorm-0.9.2 --->>> jstorm-2.1.0
机器规划(使用hadoop用户,采用解压缩的方式安装)
host |
ip | server |
vm13 |
10.1.2.208 | Kafka,QuorumPeerMain(zookeeper),Supervisor(Jstorm),NimbusServer(Jstorm) |
vm7 | 10.1.2.197 | Kafka,QuorumPeerMain(zookeeper),Supervisor(Jstorm) |
vm8 | 10.1.2.198 | Kafka,QuorumPeerMain(zookeeper),Supervisor(Jstorm) |
机器配置
CPU:24核,内存:64G,磁盘2T*4
zookeeper安装
1.进入主目录,cd /home/hadoop
2.下载zookeeper安装包,http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz
3.解压安装包,tar -zxf zookeeper-3.4.6.tar.gz
4.进入目录,cd zookeeper-3.4.6
5.将conf/zoo_sample.cfg拷贝一份命名为zoo.cfg也放在conf目录下,修改其中的配置
vi conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data0/zookeeper/data
clientPort=2181
server.1=10.1.2.208:12888:13888
server.2=10.1.2.197:12888:13888
server.3=10.1.2.198:12888:13888
vi conf/log4j.properties
zookeeper.root.logger=INFO,ROLLINGFILE
zookeeper.console.threshold=INFO
zookeeper.log.dir=/data0/zookeeper/logs
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=INFO
zookeeper.tracelog.dir=/data0/zookeeper/logs
zookeeper.tracelog.file=zookeeper_trace.log
vi bin/zkEnv.sh
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/data0/zookeeper/logs"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
分别在每个节点的${zookeeper.log.dir}目录下创建myid,内容为serverId
比如在10.1.2.208上,echo ''1 > /data0/zookeeper/data/myid
6.启动服务
依次在三个节点上启动 ./bin/zkServer.sh start
7.验证测试
使用客户端进入zookeeper控制套台 ./bin/zkCli.sh -server dckafka1:12181
查看当前服务是leader还是flower, ./bin/zkServer.sh status
8.参考文档
log4j配置:http://www.cnblogs.com/zhwbqd/p/3957018.html
http://stackoverflow.com/questions/26612908/why-does-zookeeper-not-use-my-log4j-properties-file-log-directory
kafka安装
1.进入主目录,cd /home/hadoop
2.下载kafka安装包,wget "http://mirrors.hust.edu.cn/apache/kafka/0.8.2.2/kafka_2.9.2-0.8.2.2.tgz"
3.解压安装包,tar -zxf kafka_2.9.2-0.8.2.2.tgz
4.进入目录,cd kafka_2.9.2-0.8.2.2
5.配置修改(更多配置请参考http://kafka.apache.org/documentation.html#topic-config)
vi conf/server.properties
# 每个broker都可以用一个唯一的非负整数id进行标识
broker.id=0
# 服务监听端口
port=9092
# broker处理网络请求的最大线程数,一般情况下数量为CPU核数
num.network.threads=12
# broker处理磁盘IO的最大线程数,数值为CPU核数两倍
num.io.threads=12
# kafka存放数据的路径。这个路径并不是唯一的,可以是多个,路径之间只需要使用逗号分隔即可;每当创建新partition时,都会选择在包含最少partitions的路径下进行
log.dirs=/data2/kafka/data,/data3/kafka/data
# 默认topic分区数,也可以在创建topic时指定
num.partitions=6
# 关闭自动创建topics
auto.create.topics.enable=false
# 允许删除topics
delete.topic.enable=true
# log保留的最大时间,小时单位
log.retention.hours=72
# zookeeper连接字符串的格式为:hostname1:port1, hostname2:port2, hostname3:port3,
# zooKeeper增加一个“chroot”路径,将集群中所有kafka数据存放在特定的路径下,格式为:hostname1:port1,hostname2:port2,hostname3:port3/chroot/path
# 这样设置就将所有kafka集群数据存放在/chroot/path路径下。注意,在你启动broker之前,你必须创建这个路径,并且consumers必须使用相同的连接格式。
zookeeper.connect=vm13:2181,vm7:2181,vm8:2181
vi conf/consumer.properties
# 消费端链接的zookeeper配置,要与server.properties中的zookeeper.connect保存一致
zookeeper.connect=vm13:2181,vm7:2181,vm8:2181
# 一般会在consumer客户端自定义group
group.id=test.consumer-group
vi conf/producer.properties
# kafka broker列表
metadata.broker.list=vm13:9092,vm7:9092,vm8:9092
# 消息异步发送到broker
producer.type=async
# 异步批量发送的消息数
batch.num.messages=200
vi conf/log4j.properties
# 指定服务日志目录
kafka.logs.dir=/data2/kafka/logs
log4j.rootLogger=INFO, kafkaAppender
创建启动脚本 cat > startKafkaServer.sh
nohup ./bin/kafka-server-start.sh config/server.properties &
if [ $? -eq 0 ]; then
echo "Kafka server start success..."
else
echo "Kafka server start success..."
fi
6.启动服务
./startKafkaServer.sh
7.验证测试
a.创建topic
./bin/kafka-topics.sh --zookeeper dckafka1:12181,dckafka2:12181 --create --topic mytest --replication-factor 1 --partitions 9
b.查看topic列表
./bin/kafka-topics.sh --zookeeper dckafka1:12181,dckafka2:12181 --list
c.创建生产者
./bin/kafka-console-producer.sh --broker-list dckafka1:9092,dckafka2:9092,dckafka3:9092 --topic mytest
d.创建消费者
./bin/kafka-console-consumer.sh --zookeeper dckafka1:12181,dckafka2:12181,dckafka3:12181 --topic mytest --from-beginning
jstorm安装
1.进入主目录,cd /home/hadoop
2.下载storm包,wget "http://42.121.19.155/jstorm/jstorm-2.1.0.tar.bz2"
(This version is for Alibaba Global Shopping Festival, November 11th 2015)
3.解压安装包,tar -jxf jstorm-2.1.0.tar.bz2
4.变更目录,mv deploy/jstorm jstorm-2.1.0; cd jstorm-2.1.0
jstorm-2.1.0新增了一些部署和管理脚本脚本,这里先不用理会
5.配置修改(参考https://github.com/alibaba/jstorm/wiki/如何安装)
vi ~/.bashrc
修改或添加如下内容
export JSTORM_HOME=/home/hadoop/jstorm-2.1.0
export PATH=$PATH:$JSTORM_HOME/bin
vi conf/storm.yaml
修改或添加如下内容
storm.zookeeper.servers:
- "dckafka1"
- "dckafka2"
- "dckafka3"
storm.zookeeper.port: 2181
storm.zookeeper.root: "/jstorm2"
storm.local.dir: "/data1/jstorm/data"
jstorm.log.dir: "/data1/jstorm/logs"
supervisor.slots.ports.base: 6800
supervisor.slots.port.cpu.weight: 1.0
supervisor.slots.port.mem.weight: 0.6
6.启动服务
nohup ./bin/jstorm supervisor & (所有机器都执行)
nohup ./bin/jstorm nimbus &(选择一台机器作为nimbus节点)
7.安装jstorm Web UI
mkdir ~/.jstorm
cp $JSTORM_HOME/conf/storm.yaml ~/.jstorm
将jstorm-ui-2.1.0.war放入tomcat容器,启动
访问UI页面:http://127.0.0.1:9091
8.提交topology任务(对于提交客户端,需要在home目录下创建 ln -s .jstorm/storm.yaml $JSTORM_HOME/conf/storm.yaml)