Kafka Confluent


今天我們要講的大數據公司叫作Confluent,這個公司是前LinkedIn員工出來后聯合創辦的,而創業的基礎是一款叫作Apache Kafka的開源軟件。

Confluen聯合創始人Jun Rao即將在QCon北京2018分享Apache Kafka的前世今生和未來的相關話題。

在整個Hadoop的生態圈里,Kafka是一款非常特殊的軟件。它由LinkedIn於2011年開源,並在2012年底從阿帕奇孵化器里面畢業,正式成為阿帕奇的頂級項目。

Kafka和其他的大數據平台都不同,它的主要目的不是數據的存儲或者處理,而是用來做數據交換的。要更好地理解它是干什么的,我先談一下數據庫的日志文件。

數據庫系統需要保證數據的穩定性,為了確保修改的數據能夠寫入庫,通常會在更改數據之前先在磁盤里寫一條日志文件,大致上的格式是“時間戳:做了什么操作”。如果此后因為故障導致數據本身沒有被更改,系統可以根據日志文件一條一條地重新執行操作,讓數據恢復到應該恢復的狀態。

后來有人意識到,這個日志的恢復功能還可以充當數據復制。簡單來說,如果兩個數據庫的初始狀態相同,又按照同樣的?順序執行了一系列操作,那么最后的狀態也相同。所以在數據庫進行數據復制的時候,系統可以把日志文件從一個系統傳輸到另外一個系統,另外一邊只要照着日志同樣地執行一遍就好。

這個想法構成了大部分數據庫的主從備份機制的核心,而Kafka則把這個機制充分發揚光大了。Kafka允許消費者和生產者注冊進Kafka,其中生產者會產生日志,而消費者則消費產生的日志。整個系統允許多個消費者和多個生產者的注冊,這就實現了公司內部不同數據源之間的數據交換。

Kafka作為開源產品是如此之成功,在整個Hadoop生態圈,乃至不用Hadoop,而是用其他數據源的產品里,它都可以用來進行數據的備份和交換。所以,我們可以看到幾乎所有的互聯網公司里都部署了Kafka。

2014年的時候,Kafka的三個主要開發人員從LinkedIn出來創業,開了一家叫?作Confluent的公司。和其他大數據公司類似,Confluent的產品叫作Confluent Platform。這個產品的核心是Kafka,分為三個版本:Confluent Open Source、Confluent Enterprise和Confluent Cloud。

Confluent Open Source是Confluent公司在Kafka上的一個增強版本,其主要增強的地方是:增加了一個REST代理,以便客戶端可以使用HTTP連接;增加了對Java以外的語言的支持,比如C++、Python和.NET;增加了對Hadoop文件系統、亞馬遜S3存儲、JDBC等的連接的支持;最重要的是一個Schema Registry,這是對Kafka一個比較大的增強,它使得Kafka的數據流必須符合注冊的Schema,從而增強了可用性。所有這些東西本身也都是開源的,這使得其他第三方在這個上面繼續開發新功能成為了可能。

Confluent Enterprise是Confluent面向企業級應用的產品,里面增加了一個叫作Confluent Control Center的非開源產品。Confluent Control Center是一個對整個產品進行管理的控制中心,最主要的功能對這個Kafka里面各個生產者和消費者的性能監控。

Kafka作為一個非常重要的產品,已經在很多互聯網企業里被作為關鍵組件部署了。而Kafka的性能監控也早就是一個非常重要的問題,Kafka本身並不自帶性能監控平台,很多公司比如雅虎自己內部開發了這樣的系統。但是Confluent開發的控制平台無疑應該是最可靠的,畢竟沒有人比Kafka的開發者更了解自己的產品。可惜這個是收費產品,而且不開源。Confluent Enterprise同時還自帶了數據自動負載平衡和跨數據中心數據復制的能力。

Confluent Cloud是Confluent Enterprise的雲端托管服務,它增加了一個叫作雲端管理控制台的組件。除此之外,按照Confluent的說法,其實沒有什么差別。但是對於想要省心的用戶來說,這個產品無疑是更好的選擇。

Confluent的基本做法和Cloudera很像,主要的產品開源,但是控制中心這樣的東西不開源,只有買了企業版才能夠享受到。而兩者不同的地方主要在於,Confluent同時提供了雲端服務的版本。加上Confluent有基於S3的連接,這使得從亞馬遜AWS讀寫數據都非常方便。

和Cloudera是Hadoop的集成商不同,Confluent主要還是圍繞着不同數據源之間數據的交換這個任務而生的服務。Kafka在整個開源產品里面是一個非常特殊的存在,它沒有什么競爭對手,又是各大企業的剛需,它在脫離了整個Hadoop生態圈以后依然非常有價值。

從這個角度來講,Confluent毫無疑問有很多客戶會買單。大部分企業都不可能只有一個數據源,當然谷歌這樣的企業?除外。而Kafka給數據源之間的數據交換提供了統一的平台,而Confluent的企業級服務則讓這個平台不但更好用了,而且更好管理了。

雖然說是同樣的生意模式,用在不同的產品里,產生的結果卻可能很不一樣。Confluent作為一家公司,是否能夠從Kafka這個數據交換平台里面跳出來繼續擴張,這很難說。但是僅僅是把這一攤生意做好,也足以支撐Confluent成為一個估值不低的公司,養活自己應該是綽綽有余了。

 

基本模塊

這里寫圖片描述

  • Apache Kafka 
    消息分發組件,數據采集后先入Kafka。

  • Schema Registry 
    Schema管理服務,消息出入kafka、入hdfs時,給數據做序列化/反序列化處理。

  • Kafka Connect 
    提供kafka到其他存儲的管道服務,此次焦點是從kafka到hdfs,並建立相關HIVE表。

  • Kafka Rest Proxy 
    提供kafka的Rest API服務。

  • Kafka Clients 
    提供Client編程所需SDK。

說明:以上服務除Apache kafka由Linkedin始創並開源,其他組件皆由Confluent公司開發並開源。上圖解決方案由confluent提供。

基本邏輯步驟

    • 數據通過Kafka Rest/Kafka Client寫入Kafka;
    • kafka Connect任務作為consumer從kafka訂閱數據;
    • kafka Connect任務建立HIVE表和hdfs文件的映射關系;
    • kafka connect任務收到數據后,以指定格式,寫入指定hdfs目錄;        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM