kafka安装和入门

kafka

1、jms是一套技术规范

生产者,消费者

2、jms和kafka的区别

jms 是主动推送数据,会出现消息积压;
kafka是不再主动推送数据,对于感兴趣的消费端,自己去取数据

3、经纪人

原来是队列,现在kafka是由 broker存储数据,多个broker在不同的机器上,实现集群

4、kafka集群的搭建,进程名称 kafka

1)搭建zookeeper集群;

2)解压安装包

tar -zxvf kafka_2.11-0.9.0.1.tgz 

3) 修改配置文件

	cp   /export/servers/kafka/config/server.properties /export/servers/kafka/config/server.properties.bak
	vi  /export/servers/kafka/config/server.properties

	注意修改的地方如下:	
		broker.id=0 这个值是0 1 2 ,
		三台机器分别修改host.name=mini4 和 advertised.host.name=192.168.18.14
		zookeeper.connect=mini4:2181,mini5:2181,mini6:2181

	-----------------------------------------------------------
	# The id of the broker. This must be set to a unique integer for each broker.
	broker.id=0

	# The port the socket server listens on
	port=9092

	# Hostname the broker will bind to. If not set, the server will bind to all interfaces
	host.name=mini4

	# Hostname the broker will advertise to producers and consumers. If not set, it uses the
	# value for "host.name" if configured.  Otherwise, it will use the value returned from
	# java.net.InetAddress.getCanonicalHostName().
	advertised.host.name=192.168.18.14
	
	log.dirs=/export/servers/logs/kafka

	# The default number of log partitions per topic. More partitions allow greater
	# parallelism for consumption, but this will also result in more files across
	# the brokers.
	num.partitions=2

	zookeeper.connect=mini4:2181,mini5:2181,mini6:2181
	----------------------------------------------------------

4)分别在三台机器上启动kafka集群

a 启动:
	kafka-server-start.sh /export/servers/kafka/config/server.properties 

b 后台启动:
	kafka-server-start.sh /export/servers/kafka/config/server.properties 1>/dev/null 2>&1 &

c 停止:kafka-server-stop.sh

5)常用命令,发消息测试:

	查看topic
		kafka-topics.sh --list --zookeeper  mini4:2181
	创建topic 
		kafka-topics.sh --create --zookeeper mini4:2181 --replication-factor 1 --partitions 1 --topic order129
	发送
		kafka-console-producer.sh --broker-list  mini4:9092 --topic order129
	消费
		kafka-console-consumer.sh --zookeeper mini4:2181 --from-beginning --topic order129

		kafka-console-consumer.sh --zookeeper mini4:2181 --topic order129
	删除topic
		kafka-topics.sh --delete --zookeeper mini4:2181 --topic lifengf

5、partition

partition的个数会均匀的分配到集群上
partition的作用:
	storm shuffleGrouping 上游组件将数据分发给下游组件的机制;
	hadoop hashparition分组策略,希望maptask中相同的key的数据,发送到同一个reduce上,避免数据统计时的唯一性;
	kafka  partition是一个分组策略,期望数据平均分配到多个partition上。默认 hashprtition 默认实现。

hdfs中有副本机制

在kafka中每个partition分片都可以设置副本数,解决某个broker数据丢失问题。
如果设置了多个副本,生产数据的时候发送给哪个partition?
	会从多个副本中选择出一个leader,由leader接收数据,并由leader提供数据消费。生产和消费都找leader,他同步到其他的partition.
	leader提供数据读取和数据写入服务。

6、删除broker上十天之前的数据,怎么操作?

对kafka下的日志文件进行滚动生成;

7、consumerGroup 消费者组

这个组里面的成员 consuemr

1)consumerGroup之前消费的数据互相不干扰;
2)每个consumer对应一个或者多个分片,一个分片只能属于一个consumer
3) 多于分片数的consumer消费者,是没有分片数据可以被消费的,多余的consumer只能等到其中一个或者多个consumer挂掉的时候,才有机会消费到数据,这个过程叫做rebalance;
	(消费者的线程数,多余分片数据的线程是空闲的,没有数据可以消费);

8、概念总结:

1)producer

	负责数据的生产
	负责数据的分发,分发的策略,默认是defaultPartitioner,可以自定义分发策略;实现partitioner接口

2)kafka集群

	由很多broker组成,broker是一个名叫kafka的javajincheng ,负责管理当前机器上不通
	topic的分片数据的存储和读取;

3)topic是一个逻辑上的概念,如订单数据,评论数据

	一个topic可以设置多个partition,这些partition会均匀分布到broker上;
	一把情况下,partition的数量可以等于broker的数量,或者是broker数量的倍数

	partition是有主从概念的,主partition负责写入数据和读取数据。

4)segment段,

	每个partition在broker中是一个文件夹,文件夹中有很多segment用来保存数据;
	好处在于删除历史数据时,方便快捷;

5)consumerGroup

	消费者组,多个组之间消费的数据互不干扰

6)consumer

	一个组中的消费者,不能重复消费
	一个组中的consumer数量大于分片数时候,多出来的consumer是没有数据可以消费的
	只能等到rebalance才能重新消费。

9、删除kafka存储目录

9.1.删除kafka存储目录

(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

9.2. Kafka 删除topic的命令是:

  ./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】
  如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion
  你可以通过命令:./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic

9.3.此时你若想真正删除它,可以如下操作:

(1)登录zookeeper客户端:命令:./bin/ zkCli.sh
(2)找到topic所在的目录:ls /brokers/topic
(3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。

9.4.另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:

ls /admin/delete_topics/【topic name】,
如果你删除了此处的topic,那么marked for deletion 标记消失
zookeeper 的config中也有有关topic的信息: ls /config/topics/【topic name】暂时不知道有什么用

9.5.总结:

彻底删除topic:
	如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可

1)、停止每台机器上的kafka;
2)、删除kafka存储目录
	(server.properties文件log.dirs配置,默认为“/tmp/kafka-logs”)全部topic的数据目录;
	我的配置目录为:home/hadoop/apps/log/kafka
3)、删除zookeeper上与kafka相关的znode节点;
	rmr /brokers/topics/gamelog
4)、重启kafka、如果删除topic还在则需要重启zookeeper;

10 一些命令

1、查看所有的topic

./bin/kafka-topics.sh --list --zookeeper  hdp-node-01:2181

2、创建topic

./bin/kafka-topics.sh --create --zookeeper hdp-node-01:2181 --replication-factor 1 --partitions 1 --topic mutton_01

3、通过shell命令发送消息

./bin/kafka-console-producer.sh --broker-list hdp-node-01:9092 --topic mutton_01
lifengshagua chi rou yang

4、通过shell消费消息

sh bin/kafka-console-consumer.sh --zookeeper hdp-node-01:2181 --from-beginning --topic mutton_01

5、查看消费位置

sh bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper hdp-node-01:2181 --group mutton_01

6、查看某个Topic的详情

sh bin/kafka-topics.sh --topic mutton_01 --describe --zookeeper hdp-node-01:2181
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值