在hadoopHA节点上部署kafka集群组件

前言

在前面的文章中《在hadoopHA节点上部署flume高可用组件 》已经介绍了flume实时收集acces.log,同时给出flume是如何实现数据流向的高可用环境测试。在后面的文章中会给出实时大数据项目的开发,实时数据源由flume sink到kafka的topic里,而不是前面提到的hdfs,目的是利用kafka强大的分布式消息组件用于分发来自flume的实时数据流。
kafka集群在Hadoop实时大数据项目的位置,如下图所示:
在这里插入图片描述

1、Kafka的基本介绍
1.1 什么是kafka

Kafka 是一种分布式的,基于发布/订阅的消息系统(redis也可以实现该功能),主要设计目标如下:
以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。
支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。
同时支持离线数据处理和实时数据处理。
Scale out:支持在线水平扩展。

1.2 kafka 应用场景
  • 日志收集:可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer。不过在本文中,flume用于收集数据日志,kafka组件用于接受来自flume的event
  • 流式处理:spark streaming,在上面的架构图也可以清楚看到kafka组件的下游为spark streaming,它消费来自kafka topic的实时数据消息。
  • 消息系统:解耦生产者和消费者、缓存消息等。
  • 用户活动跟踪:kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后消费者通过订阅这些topic来做实时的监控分析,亦可保存到hbase、mangodb等数据库。
  • 运营指标:kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,
  • 生产各种操作的集中反馈,比如报警和报告。
    可以看出kafka在大数据实时处理以及互联网产品方面应用最为突出。
1.3 kafka相关术语
  • producer : 生产者,生产message发送到topic,例如flume sink就是生产者

  • consumer : 消费者,订阅topic并消费message, consumer作为一个线程来消费,例如实时处理的spark streaming。

  • Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群,在大数据项目中,直接利用已有的hadoop节点服务器配置成kafka集群。整个 Kafka 集群架构会有一个 zookeeper集群,通过 zookeeper 管理集群配置,选举 kafka Leader,以及在 Consumer Group 发生变化时进行 Rebalance。

  • topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发

  • massage: Kafka中最基本的传递对象。

  • partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的segment以及index:partition在物理上已一个文件夹的形式存在,由多个segment文件组成和多个index文件,它们是很对出现,每个Segment存着message信息,每个index存放着message的offset

  • replica:partition 的副本,保障 partition 的高可用。个人建议写成replica partition–副本分区

  • leader:这里的leader要理解为某个partition 作为主分区,也即称为leader partition,要注意该partition所在的服务器不能称为leader,否认会被误认为是kafka集群的master服务器(Kafka把master服务器称为controller)。 producer 和 consumer 只跟 leader petition交互。

  • replicas:leader 角色的partition加上replica角色的partition,一起成为replicas,也就是该topic总共有多少个副本数,副本数包含一个主分区副本和其余的副本分区。

  • controller:为了避免更leader这个词混淆,开发者将kafka 集群中的其中一台服务器称为controller,用于对每个topic的partition leader选举以及实现对partition的failover。

  • consumer Group:消费者组,一个Consumer Group包含多个consumer

  • offset:偏移量,理解为消息partition中的索引

2、kafka 单点部署与测试
2.1 配置文件

目前官方kafka最新稳定版本为2.3.1
按官方建议以下建议,项目用到scala2.1.3,kafka用了官方的建议版本2.1.2

 We build for multiple versions of Scala. This only matters if you are using Scala and you want a version built for the same Scala version you use. Otherwise any version should work (2.12 is recommended). 

kafka组件同样被放置在/opt目录下,该目录放置所有Hadoop及其组件,便于统一管理

[root@nn opt]# ls
flume-1.9.0   hbase-2.1.7   kafka-2.12      scala-2.13.1             
flume_log     hive-3.1.2    mariadb-10.4.8  spark-2.4.4-bin-hadoop2.7  zookeeper-3.4.14
hadoop-3.1.2  jdk1.8.0_161    xcall.sh          

配置server.properties。

[root@nn config]# vi ser
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值