windows
jdk安装
下载:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
安装及环境变量配置,自行百度。
zookeeper安装
下载地址:Apache ZooKeeperhttps://zookeeper.apache.org/releases.html
一、下载
1、查看历史版本
2、选择版本
3、下载压缩包
二、安装
1、解压到某个目录下(路径不要出现空格)
例如:D:\ProgramFiles\zookeeper\zookeeper-3.4.12
2、修改配置文件
1)D:\ProgramFiles\zookeeper\zookeeper-3.4.12\conf\zoo_sample.cfg重命名为zoo.cfg
2)修改dataDir=/tmp/zookeeper 为 D:/ProgramFiles/zookeeper/zookeeper-3.4.12/tmp/zookeeper
(路径仅为示例,具体可根据需要配置;路径要么是"/"分割,要么是转义字符"\\",这样会生成正确的路径(层级,子目录))
3)Zookeeper端口(默认端口2181)
3、环境变量
1)系统变量中添加ZOOKEEPER_HOME=D:\bigdata\zookeeper-3.4.10
2)编辑系统变量中的path变量,增加%ZOOKEEPER_HOME%\bin
三、运行
打开cmd窗口,输入zkserver,运行Zookeeper
Zookeeper已经安装完成,已在2181端口运行。
kafka安装
一、下载
下载地址:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads要下载Binary downloads这个类型,不要下载源文件,这种方便使用。
二、安装
1、解压到某个目录下
(路径不要出现空格)
例如:D:\ProgramFiles\kafka\kafka_2.11-1.1.0
2、修改配置文件
(D:\ProgramFiles\kafka\kafka_2.11-1.1.0\config\server.properties)
1)修改log.dirs=/tmp/kafka-logs 为 D:/ProgramFiles/kafka/kafka_2.11-1.1.0/tmp/kafka-logs
(路径仅为示例,具体可根据需要配置;路径要么是"/"分割,要么是转义字符"\\",这样会生成正确的路径(层级,子目录))
2)kafka会按照默认配置,在9092端口上运行,并连接zookeeper的默认端口2181。
三、运行
请确保启动kafka服务器前,Zookeeper实例已经在运行,因为kafka的运行是需要zookeeper这种分布式应用程序协调服务。
1、进入kafka安装目录,如:D:\ProgramFiles\kafka\kafka_2.11-1.1.0
2、按下shift+鼠标右键,选择"在此处打开命令窗口",或者在地址栏输入cmd按回车键,打开命令行。
3、在命令行中输入:.\bin\windows\kafka-server-start.bat .\config\server.properties 回车。
四、操作
.bat文件是为了在window系统上执行的文件,相对应的.sh文件是linux下的批处理文件。例如:startup.bat和startup.sh。
1、创建主题
a、使用命令行手动或者向一个不存在的topic发送(生产)消息时都会新创建一个topic
向一个不存在的topic发送(生产)消息时新创建的topic时,其采用为默认的topic-config配置以及server.properties中的topic的配置。
使用命令行手动创建一个topic可以使用 –config 选项配合topic-config配置中的信息来覆盖默认配置或者使用–delete-config来恢复默认配置。
b、创建主题(1个分区,1个副本)
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test0811
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic yqtopic1
主要参数说明
1. partitions分区数
(1). partitions :分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量
(2). 虽然增加分区数可以提供kafka集群的吞吐量、但是过多的分区数或者或是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗。
(3). 分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大于分区数
(4). 分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或以上的数都会出错的;这种情况可以通过alter –partitions 来增加分区数。
2. replication-factor副本
(1). replication factor 控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。
(2). 如果没有在创建时显示指定或通过API向一个不存在的topic生产消息时会使用broker(server.properties)中的default.replication.factor配置的数量
2、查看topic属性
bin/kafka-topics.bat --zookeeper zk1:2181 --describe --topic test0811
kafka-topics.sh --describe --zookeeper localhost:2181 --topic test0811
结果说明:
第一行,列出了topic的名称,分区数(PartitionCount),副本数(ReplicationFactor)以及其他的配置(Configs)
Leader:1 表示为做为读写的broker的编号
Replicas:表示该topic的每个分区在那些borker中保存
Isr:表示当前有效的broker, Isr是Replicas的子集
3、修改topic
不能修改replication-factor,以及只能对partition个数进行增加,不能减少
增加分区数
kafka-topics.bat --zookeeper localhost:2181 --alter --topic test0811 --partitions 3
kafka-topics.sh --alter --zookeeper node1:2181,node2:2181 --topic test0811 --partitions 6
删除Topic
kafka-topics.sh --delete --topic test0811 --zookeeper localhost:2181
目前删除操作在默认情况下只是打上一个删除的标记,在重新启动kafka 后才删除。
如果需要立即删除,则需要在server.properties中配置delete.topic.enable=true
4、创建生产者
kafka-console-producer.bat --broker-list localhost:9092 --topic test0811
5、创建消费者
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test0811
# 新消费者(支持0.9版本+)
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test0811 --new-consumer --from-beginning
(如果要最新的数据,可以不带--from-beginning参数即可)
附录:
linux
jdk安装
1、新建JDK目录:mkdir /opt/java
2、解压到/opt/java中:tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/java/
3、切换到/opt/java目录,查看解压结果: cd /opt/java/
4、配置环境变量:vim /etc/profile
在文件最后添加以下内容
export JAVA_HOME=/opt/java/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
运行命令使环境变量生效:source /etc/profile
5、运行java -version 看是否生效: java -version
若出现jdk版本号,则安装并配置环境变量成功。
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
6、采用相同方法,安装其他服务器(5台服务器)
zookeeper安装
1、新建安装目录
mkdir /app/zookeeper
2、解压到安装目录中
tar -zxvf zookeeper-3.4.6.tar.gz -C /app/zookeeper/
3、进入/app/zookeeper下,查看是否解压成功
4、配置环境变量
vim /etc/profile
在文件最后添加以下内容
export ZK_HOME= /app/zookeeper/zookeeper-3.4.6
export PATH=${ZK_HOME}/bin:$PATH
运行命令使环境变量生效
source /etc/profile
5、修改配置文件
创建以下两个目录
mkdir data
mkdir dataLog
并且在/opt/zookeeper/data目录下创建myid文件
将5台集群分别的myid文件内容改为1,2,3,4,5
6、修改集群中的主机名称(建议)
vim /etc/sysconfig/network
将HOSTNAME=localhost.localdomain改成node01
NETWORKING=yes
HOSTNAME=node01
重启服务器,reboot,同时查询主机名:hostname
返回:node01,即成功。其他服务器同样操作。
vim /etc/hosts (不要这样修改,否则zookeeper启动失败)
7、 修改主机名与IP映射(服务器都要修改)
vim /etc/hosts
8、修改zookeeper配置文件
切换到/app/zookeeper/zookeeper-3.4.6/conf
如果没有 zoo.cfg 该文件,就复制zoo_sample.cfg文件并重命名为zoo.cfg。
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg文件
vim zoo.cfg
dataDir=/app/zookeeper/data
dataLogDir=/app/zookeeper/dataLog
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
server.5=node05:2888:3888
9、传输到其他的机器上
scp -r /app/zookeeper/ root@10.16.10.8:/app/
更改 /opt/zookeeper/data 下的myid,修改myid为主机对应值,这个不能一致
9、启动zookeeper
因为zookeeper是选举制,它的主从关系并不是像hadoop那样指定的,成功配置zookeeper之后,在每台机器上启动zookeeper。
切换到zookeeper的bin目录下(已配置环境变量的话,可以不用)
cd /app/zookeeper/zookeeper-3.4.6/bin/
启动命令
zkServer.sh start
查看状态,若出现以下错误说明防火墙没设置,或者/etc/hosts中127.0.0.1设置了主机名的问题,见上说明
JMX enabled by default
Using config: /app/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
10、开放zookeeper防火墙端口
vim /etc/sysconfig/iptables
复制22端口号的那条,修改为2888:3888,加冒号使开放一段端口号
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888:3888 -j ACCEPT
重启防火墙
service iptables restart
kafka安装
1、新建安装目录
mkdir /app/kafka
2、解压到该目录下
tar -zxvf kafka_2.11-0.10.2.0.tgz -C /app/kafka/
3、进入/app/kafka查看解压是否成功
4、配置环境变量
vim /etc/profile
末尾增加以下
export KAFKA_HOME=/app/kafka/kafka_2.11-0.10.2.0
export PATH=${KAFKA_HOME}/bin:$PATH
使环境变量生效
source /etc/profile
5、修改配置参数
vim /app/kafka/kafka_2.11-0.10.2.0/config/server.properties
broker.id=1
# Switch to enable topic deletion or not, default value is false
delete.topic.enable=true
zookeeper.connect=node1:2181,node2:2181,node3:2181,node4:2181,node5:2181
auto.create.topics.enable=true
6、修改防火墙,开放端口号
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
重启防火墙
service iptables restart
7、拷贝到其他服务器
scp -r kafka/ root@node02:/app/
修改每台上的broker.id,不能重复
8、启动kafka
切换到/app/kafka/kafka_2.11-0.10.2.0/
启动命令
bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 &