一 kafka介绍

现在各个电商平台,社交平台等诸多系统可以不断生产出各种细信息,那么我们应该如何收集它,如何分析它,以及输入实时的做到以上需求。Kafka应运而生。

Kafka是一个分布式的的流式系统或者平台,他可以发布和订阅消息,这个和一般的消息中间件类似,他可以让你以容错的方式存储数据或者消息,并且你还可以处理他们,他一般多用于构建实时应用。

首先,这儿有几个概念:

# kafka是以集群的方式运行

# kafka集群按类别存储数据,这个类别就是topics(主题)

# 每一个流式数据都是由(key,value,timestamp)组成的

特点:

快:单个kafka服务每秒可处理数以千计客户端发来的几百MB数据。

可扩展性:一个单一集群可作为一个大数据处理中枢,集中处理各种类型业务

持久化:消息被持久化到磁盘(可处理TB数据级别数据但仍保持极高数据处理效率),并且有备份容错机制

分布式:着眼于大数据领域,支持分布式,集群可处理每秒百万级别消息

实时性:生产出的消息可立即被消费者消费

应用场景:

日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。

消息系统:解耦和生产者和消费者、缓存消息等。

用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。

运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

流式处理:比如spark streaming和storm

1.1 topics & partition

主题就是你要发布数据或者消息的类别,他可以有0个或者1个或者多个消费者订阅。

Topics又可以从物理上划分为一个或者多个分区,每一个分区对应着一个文件夹,以topicName_partitionIndex方式命名,该文件夹下存储这个分区的所有消息.log和索引文件.index,每一个分区都是一个有序的队列;分区中每一条消息都会被分配一个有序的id(offset)。这使得kafka的吞吐量可以水平扩展

1.2 生产者

生产者负责发布数据到主题,并且为数据分区

1.3 消费者

消费者有一个消费者组的概念,一个主题的数据最后都会被某一个消费者组的所有消费者实例消费

1.4 保证

生产者发送到一个特定主题的分区上的消息将会按照他们的发送顺序依次加入;消费者也是按照顺序消费的

二 kafka集群安装配置

2.1 解压kafka

tar -zxf kafka_2.11-0.10.1.1.tgz -C /opt/app

ln -s /opt/app/kafka_2.11-0.10.1.1 /opt/app/kafka

2.2 创建kafka数据目录

mkdir -p /opt/app/kafka/kafkalogs

2.3 修改配置

注意:这里有zookeeper的配置文件,是可以根据kafka自带的zk集群来启动,但不建议使用,而使用独立的zk集群

cd /opt/app/kafka/config

修改server.properties

# broker的id,每一个broker的这个id必须唯一
broker.id=1

# 是否enable可以删除主题,默认是不可以
#delete.topic.enable=true
 
# 处理网络请求的线程数量,默认是3个
num.network.threads=3
 
# broker进行I/O处理的线程数
num.io.threads=8
 
# 发送数据的缓冲区,数据不是产生就发送,而是在缓冲区满的时候
socket.send.buffer.bytes=102400
 
# 接收数据的缓冲区大小
socket.receive.buffer.bytes=102400
 
 
# 向kafka请求数据或者发送数据的请求的最大大小,但是不能超过java的堆栈大小
socket.request.max.bytes=104857600
# A 存储日志文件的目录

log.dirs=/opt/app/kafka/kafka-logs

# 每一个主题topic的分区数目,默认为1
num.partitions=3
# 日志刷新的数据大小
#log.flush.interval.messages=10000
 
# 日志刷新的时间间隔
#log.flush.interval.ms=1000
 
# 日志最多可以保存多长时间,默认7天
log.retention.hours=168
# 消息保存的最大值
#log.retention.bytes=1073741824
# 每一个日志文件的最大大小,超过次大小,创建一个新的log
log.segment.bytes=1073741824
# 检查日志文件根据保留政策是否应该删除的间隔时间log.retention.check.interval.ms=300000
# 设置zookeeper的连接端口
zookeeper.connect=hadoop-all-01:2181,hadoop-all-02:2181,hadoop-all-03:2181
# 连接zk的超时时间
zookeeper.connection.timeout.ms=6000

# socket server监听地址

#listeners=PLAINTEXT://hadoop-all-01:9092
 

# socket server监听地址

 
#advertised.listeners=PLAINTEXT://hadoop-all-01:9092

2.5改完之后,然后复制其他机器:

scp -r ./kafka/ hadoop@hadoop-all-02:/opt/app/

scp -r ./kafka/ hadoop@hadoop-all-03:/opt/app/
然后在每一台机器修改broker.id = 2 和 3,并且修改listener参数

listeners=PLAINTEXT://hadoop-all-02:19092

advertised.listeners=PLAINTEXT://hadoop-all-01:19092

 

listeners=PLAINTEXT://hadoop-all-03:19092

advertised.listeners=PLAINTEXT://hadoop-all-03:19092

2.6 启动每一个节点的kafka,以后台模式运行

这里有2种启动方式:

第一种:

kafka-server-start.sh -daemon/opt/app/kafka/config/server.properties

第二种:

nohup bin/kafka-server-start.shconfig/server.properties &

或者:

bin/kafka-server-start.sh config/server.properties> /dev/null 2>&1 &

2.7 测试

第一:创建topic

kafka-topics.sh --zookeeperhadoop-all-01:2181,hadoop-all-02:2181,hadoop-all-03:2181 --topic storm1--replication-factor 2 --partitions 2 –create

第二:查看topic

kafka-topics.sh --list --zookeeperhadoop-all-02:2181

storm1

第三:查看主题详情

kafka-topics.sh --describe --zookeeperhadoop-all-01:2181 --topic storm1

Topic: storm1 PartitionCount:2 ReplicationFactor:2  Configs:

Topic: storm1 Partition:0     Leader: 1  Replicas: 1,3  Isr: 1,3

Topic: storm1 Partition:1     Leader: 2  Replicas: 2,1  Isr: 2,1

第四:删除主题

kafka-topics.sh --delete --topic storm1 --zookeeperhadoop-all-01:2181,hadoop-all-02:2181,hadoop-all-03:2181

Topic storm1 is marked for deletion.

Note: This will have no impact if delete.topic.enableis not set to true.

kafka基础之介绍和分布式集群搭建相关推荐

  1. Hadoop-HDFS的伪分布式和完全分布式集群搭建

    转自:  https://blog.csdn.net/mhw666/article/details/91610598 CentOS 7 下使用yum安装MySQL5.7.20,并设置开启启动:  ht ...

  2. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  3. Hadoop-HDFS详解与HA,完全分布式集群搭建(细到令人发指的教程)

    前言 本篇篇幅较长,有许多集群搭建干货,和枯燥乏味但是面试可能问到的理论知识. 思来想去不知道怎样才能鼓励自己加油学习,想想要面对的生活还是假吧意思打开学习视频吧. 目录 一.引入 hdfs是什么 h ...

  4. 第二节HDFS完全分布式集群搭建与配置及常见问题总结

    提示:此文章内容超级全面和详细 文章目录 前言 一.HDFS完全分布式集群是什么? 二.HDFS完全分布式集群搭建与配置 1.HDFS完全分布式集群搭建库 2.HDFS完全分布式集群搭建配置 HDFS ...

  5. hadoop-3.3.3完全分布式集群搭建

    hadoop-3.3.3完全分布式集群搭建 前言 环境准备 软件版本 集群规划 一.配置jdk环境变量 1. 解压jdk 2. 修改/etc/profile文件 二.hadoop集群搭建 1. 关闭防 ...

  6. java集群_Kafka多节点分布式集群搭建实现过程详解_java

    上一篇分享了单节点伪分布式集群搭建方法,本篇来分享一下多节点分布式集群搭建方法.多节点分布式集群结构如下图所示: 为了方便查阅,本篇将和上一篇一样从零开始一步一步进行集群搭建. 一.安装Jdk 具体安 ...

  7. hbase分布式集群搭建

    hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...

  8. Linux 系列(三)——Redis 分布式集群搭建

     在Redis的安装和部署(Linux)一文中详细介绍了在Linux环境中搭建Redis服务,本文将介绍关于Redis分布式 集群搭建细节. 一.Redis集群架构 1.Redis集群架构图 蓝色 ...

  9. 聊聊 Pulsar: Pulsar 分布式集群搭建

    一.集群搭建要求 1.1 搭建设计 搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群.Bookkeeper 集群和 Broker 集群(Broker 是 Pulsar 的自身实例 ...

最新文章

  1. Django之session
  2. verilog always语法_Verilog初级教程(20)Verilog中的`ifdef 条件编译语句
  3. TODO:Go语言goroutine和channel使用
  4. 后台OData model data查看工具
  5. mysql怎么看历史最高连接数_MySQL数据库怎么查看和修改最大连接数
  6. 程序设计 :题解+总结
  7. 青龙->微信机器人 搭建保姆级教程
  8. iOS系列—wakeup in XNU
  9. linux设置硬盘启动顺序,电脑双硬盘双系统启动的顺序调整及设置方法
  10. python average函数详解_python基础之函数详解
  11. 学生党专用计算机,学生党平价笔记本电脑 最适合学生的高性价比电脑推荐
  12. 如何用计算机表达无理数,科学网—刘瑞祥:计算机表示无理数的一些设想 - 孙冰的博文...
  13. Signal and SIGIO
  14. TX云游戏平台 WeGame 1.0.3.8中文版
  15. 基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)
  16. C语言:用贪心策略计算活动安排问题的最优解
  17. 杨震霆(carboy) -传奇人物
  18. JAVA 洗衣房管理系统 宿舍洗衣机管理系统
  19. qrcode的使用方法
  20. 【软考 系统架构设计师】软件工程⑩ 系统运行与软件维护

热门文章

  1. 轨迹跟踪主要方法_带你入门多目标跟踪(一)领域概述
  2. android 放大镜动画,Android在图片上进行放大镜效果(放大镜形状)
  3. 10虚拟机的删除和迁移
  4. myeclipse需要配置服务器得项目是,【SpringMVC】使用Myeclipse创建SpringMVC项目【超详细教程】...
  5. linux 线程 waitforsingleobject,用Sleep或WaitForSingleObject实现线程的休眠 | 求索阁
  6. static在php中,php中static关键字在类中的使用
  7. java netbeans桌面_netbeans创建桌面应用程序教程
  8. matlab命令大全,Matlab------------命令大全2
  9. Spring Cloud Sleuth + Zipkin 监控微服务(一)
  10. django runserver开启服务(开启外网访问与ipv6访问)