大数据技术全面解读 storm上游数据源 之kafka详解(一)入门与集群安装
沉沙 2018-10-10 来源 : 阅读 1655 评论 0

摘要:本篇教程探讨了大数据技术全面解读 storm上游数据源 之kafka详解(一)入门与集群安装,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术全面解读 storm上游数据源 之kafka详解(一)入门与集群安装,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<

一、概述

  1.kafka是什么

    根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦

    根据官网://kafka.apache.org/intro 的解释呢,是这样的:

     

       Apache Kafka® is a distributed streaming platform

        ApacheKafka®是一个分布式流媒体平台

  l Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。

  l Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。

  l Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

  l Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。

  l 无论是kafka集群,还是producer和consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性

 2.主要feature

   1:It lets you publish and subscribe to streams of records.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因

  2:It lets you store streams of records in a fault-tolerant way.以容错的方式记录消息流,kafka以文件的方式来存储消息流

  3:It lets you process streams of records as they occur.可以再消息发布的时候进行处理

  3.使用场景

    在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。

    经典组合是:kafka+storm+redis

   4.消息队列补充

    JMS参考基础篇ActiveMQ相关介绍://www.cns.com/jiangbei/p/8311148.html

    为什么需要消息队列:     

      消息系统的核心作用就是三点:解耦,异步和并行

    kafka是类JMS,它吸收了JMS两种模式,将发布/订阅模式中消费者或者数据的方式从被动推送变成主动拉取
二、相关概念与组件

    Topics:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
    Producers:We'll call processes that publish messages to a Kafka topic producers。
    Consumers:We'll call processes that subscribe to topics and process the feed of published messages consumers。
    Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
    Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。
    Segment:partition物理上由多个segment组成。

  更多详细介绍,参考://kafka.apache.org/intro

            //..net/a568078283/article/details/51464524

  消息发送流程:

  

 

  请带着以下问题思考:


分组策略
如何保证数据的完全生产

partition数量和broker的关系
每个partition数据如何保存到硬盘上
kafka有什么独特的特点(为什么它是大数据下消息队列的宠儿)

消费者如何标记消费状态
消费者负载均衡的策略
如何保证消费者消费数据是有序的


 三、kafka集群安装

  1.下载

     这里换成一下wget,下载速度还是非常快的!

wget //mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz

  // 这里也可以使用windows下载完成后通过ftp进行上传(help命令进行提示),rz/sz请勿使用!属于远古时代的协议!大文件速度堪忧!

  前导条件是java环境和zk,当然,新版的kafka已经内置了zk(属于可选配置了)

  2.解压

tar -zxvf kafka_2.11-0.11.0.2.tgz -C apps/

  这里就不采用mv进行解压后目录的重命名了,采用一下创建软连接的方式!

ln -s kafka_2.11-0.11.0.2/ kafka

  3.修改配置文件

    同样的,养成一个备份出厂设置的习惯:

[hadoop@mini1 config]$ cp server.properties server.properties.bak

    此配置文件的各项说明参考://..net/lizhitao/article/details/25667831

[hadoop@mini1 config]$ vim server.properties

    主要修改的配置如下:

      最重要的参数为:broker.id、log.dir、zookeeper.connect


broker.id=0
listeners=PLAINTEXT://192.168.137.128:9092
port=9092
log.dirs=home/hadoop/apps/kafka/logs
number.partition=2
zookeeper.connect=mini1:2181,mini2:2181,mini3:2181



  // 注意listener处必须是IP!原因参考://..net/louisliaoxh/article/details/51567515

  4.分发安装包

[hadoop@mini1 apps]$ scp -r kafka_2.11-0.11.0.2/ mini2:/home/hadoop/apps/

[hadoop@mini1 apps]$ scp -r kafka_2.11-0.11.0.2/ mini3:/home/hadoop/apps/

  5.修改分发的节点配置

    先依次给mini2,mini3创建软连接:

ln -s kafka_2.11-0.11.0.2/ kafka

    再修改配置:

      修改broker.id分别是1和2(不得重复);修改监听处的IP

  6.启动kafka

    先启动zk(使用了自己的zk)

    这里可以配置一下环境变量,可以方便后续的一些操作,并且这里配置了软连接的话是非常方便的(后续即使安装新版本,环境变量也无需变更)

    模仿zk写一个一键启动脚本

 


#!/bin/bash

BROKERS="mini1 mini2 mini3"
KAFKA_HOME="/home/hadoop/apps/kafka"

for BROKER in $BROKERS
do
    echo "Starting kafka on ${BROKER} ... "
    ssh ${BROKER} "source /etc/profile; nohup sh ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties > /dev/null 2>&1 &"
    if [[ $? -ne 0 ]]; then
        echo "Start kafka on ${BROKER} is OK !"
    fi
done


    kafka启动命令如下:(这里使用后台启动)

 bin/kafka-server-start.sh config/server.properties &

   

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程