zoukankan      html  css  js  c++  java
  • kafka介绍和集群环境搭建

    kafka概念:

        kafka是一个高吞吐量的流式分布式消息系统,用来处理活动流数据。比方网页的訪问量pm,日志等,既可以实时处理大数据信息
        也能离线处理。


        特点:
            1.高吞吐量    
            2.是一种显式的分布式系统,它如果,数据生产者(producer),代理(brokers)和数据使用者(consumer)分散在多台机器上。
            3.有关哪些数据已经被使用了的状态信息保存为数据使用着(consumer)的一部分。而不是保存在服务秋上。



    关于队列的基础知识:
        消息:指的是通信的基本单位,由消息生产者(producer)公布关于某个胡全体(topic)的消息,这句话的意思是消息以一种物理方式被发送给了
        作为代理(broker)的server。若干的消费者(consumer)订阅(subscribe)某个话题,然后生产者公布的消息都会被发送给全部的使用者。


        
        kafka是一个显式的分布式系统。指的是生产者,消费者,和代理者都能够执行在作为一个逻辑单位的,相互协调的集群的不同机器上。
        
        消费者组:每一个消费者进程都隶属于一个消费者组。每条消息仅仅会发送到这个消费者组中的一个消费者进程,消费者组将多个消费者进程或多台
        机器在逻辑上看做为了一个消费者。消费者组的意义就是。每条消息都仅仅会发送到这个消费者组中的一个进程,可是在同一个组中的消费者进程
        都能使用这个消息,所以不管消费者组中有多少个订阅者。每条信息值在组中存储一份!

        在kafka中,使用者(consumer)负责维护反应哪些消息已经被使用的状态(偏移量)。在kafka中会将状态数据保存到zookeeper中,
        在hadoop的载入作业从kafka并行载入作业时。每一个mapper在map任务结束之前会将状态偏移量,存储到hdfs中。

    通过这样的机制还能够回退数据读。

        
        分发机制;
        kafka通常情况下是执行在集群中的server上。没有中央的“主”节点。

    代理彼此之间是对等的。不须要不论什么手动配置就可以可随时加入和删除。

    相同,

            生产者和消费者能够在不论什么时候开启。 每一个代理都能够在zookeeper(分布式协调系统)中注冊的一些元数据(比如,可用的主题)。生产者和消费者
            能够使用zookeeper发现主题和相互协调。

    关于生产者和消费者的细节将在以下描写叙述


        消费者和生产者通过分区实现负载均衡。
            主题:用来区分不同种类的数据信息
    分区partition:有主有从。将数据写到不同的文件上,分区的编号默认是从0開始。0,1,2,3...
    leader负责读写数据,follower负责同步数据,高吞吐量。负载均衡
       producer来能够去不同的分区上去写数据,consumer也是相同原理,这样就能够
       将读写负载均衡到不同的分区中
    消费之consumer,消费数据从主分区上(leader)读
    消费组:共享消费信息,在同一个消费组中的消费者,读取同一份数据仅仅要一次即可了。由于
    同一个组中消费者之间共享数据

        #########################################################################################################
    安装kafka:     

    1.上传kafka_2.9.2-0.8.1.1.tgz到server

    2.单节点kafka,
    a.先启动zookeeper集群
    运行bin/kafka-server-start.sh  config/server.properties
    会报:
    Unrecognized VM option 'UseCompressedOops'
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.
    原因是jdk的版本号不匹配,须要改动一下配置文件
    改动文件:
    去掉这个配置
    -XX:+UseCompressedOops
    b.启动一个服务端
    bin/kafka-server-start.sh config/server.properties

    c.查看topic
     bin/kafka-topics.sh --list --zookeeper localhost:2181
      创建topic
     bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
      查看topic描写叙述
     bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic

    d.測试
    启动一个生产者
    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
    开启一个消费者
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

    3.集群搭建

    改动配置文件
    vim config/server-1.properties 
    最后的zookeeper集群的配置
    zookeeper.connect=storm01:2181,storm02:2181,storm03:2181
    再将kafka的配置复制到其它的server
    scp -r /usr/itcast/kafka root@storm02:/usr/itcast/
    scp -r /usr/itcast/kafka root@storm03:/usr/itcast/
    改动配置文件
    vim config/server-1.properties 
    broker.id=1,broker.id=2
    启动測试

        

        

     
  • 相关阅读:
    1.xposed框架简介
    Spinner android:entries属性
    nginx 负载均衡时,一台tomcat宕机时的问题 自动切换(转自java版web项目-微信公众号)
    java内存模型(JMM)之happens-before
    java中Infinity(无限)和NaN
    mysql数据库相关操作
    提高mysql数据库查询效率
    转载-----通过xml处理sql语句时对小于号与大于号的处理转换
    JAVA过滤器和springMVC拦截器的区别
    Java中的Filter过滤器
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5347352.html
Copyright © 2011-2022 走看看