1. 程式人生 > >kafka概述與安裝

kafka概述與安裝

Kafka概述

    hadoop -> 離線計算(hdfs/mapreduce) yarn 
    zookeeper -> 分散式協調(動物管理員)
    hive -> 資料倉庫(離線計算/sql)easy coding
    flume -> 資料採集
    sqoop -> 資料遷移 mysql -> hdfs/hive     hdfs/hive->mysql
    azkaban -> 任務排程工具
    hbase -> 資料庫(nosql) 列式儲存 讀寫速度

實時:
    kafka
    storm

    Apache Kafka® is a distributed streaming platform. What exactly does that mean?
    A streaming platform has three key capabilities:

    Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
    Store streams of records in a fault-tolerant durable way.
    Process streams of records as they occur.
    Kafka is generally used for two broad classes of applications:

    Building real-time streaming data pipelines that reliably get data between systems or applications
    Building real-time streaming applications that transform or react to the streams of data

kafka是什麼
    在流計算中,kafka主要功能是用來快取資料,storm可以通過消費kafka中的資料進行流計算。

    是一套開源的訊息系統,由Scala寫成。支援javaAPI的。
    kafka最初由LinkedIn公司開發,2011年開源。
    2012年從Apache畢業。

    是一個分散式訊息佇列,kafka讀訊息儲存採用Topic進行歸類。

角色
    傳送訊息:Producer(生產者)
    消費訊息:Consumer(消費者)

為什麼要使用訊息佇列
    1、解耦
        為了避免出現問題
    2、拓展性
        可增加處理過程
    3、靈活
        面對訪問量劇增,不會因為超負荷請求而完全癱瘓。
    4、可恢復
        一部分元件失效,不會影響整個系統。可以進行恢復。
    5、緩衝
        控制資料流經過系統的速度。
    6、順序保證
        對訊息進行有序處理。
    7、非同步通訊
        akka,訊息佇列提供了非同步處理的機制。允許使用者把訊息放到佇列,不立刻處理。

kafka架構設計
    kafka依賴於zookeeper,用zk儲存元資料資訊。
    搭建kafka叢集要先搭建zookeeper叢集。
    zk在kafka中的作用
        儲存kafka叢集節點狀態資訊和消費者當前消費資訊。

kafka叢集安裝
    配置
    vi conf/server.properties
        Server Basics下
        broker.id=0    #每臺機器的id不同即可
        delete.topic.enable=true    #是否允許刪除主題

        Log Basics下
        log.dirs=..../logs    #執行日誌儲存位置
        num.partitions=1

        Zookeeper下
        zookeeper.connect=bigdata:2181    #

    vi /etc/profile
        export KAFKA_HOME=
        export PATH=

    scp到叢集的其他機器 $PWD
        broker.id=1
        broker.id=2

    啟動
        zkServer.sh start
        bin/kafka-server-start.sh config/server.properties &

    關閉
        kafka-server-stop.sh