Apache Kafka如何讓流數據進入主流
譯文【51CTO.com快譯】開源Apache Kafka是一項高效的大數據策略中日益重要的核心部分,本文解釋了個中原委。
Apache Kafka是源自大數據潮流的最激動人心的開源項目之一。Kafka最初起源于領英(LinkedIn),現在是廣泛的開源開發社區中日益主流的一部分。實際上,Kafka已進入到了關鍵時刻,因為它被用作一種管理企業組織流數據的核心平臺,包括:金融服務業的物聯網操作、欺詐和安全,零售業的商店庫存跟蹤以及其他行業的應用場合。
Kafka這個例子表明了領英如何成為護送內部代碼進入到充滿活力的開源社區方面的一個典范。
內哈·納克赫德(Neha Narkhede)是Confluent的聯合創始人兼***技術官,他之前是領英數據流基礎設施的負責人,近日接受了TechRepublic的采訪,暢談了企業采用Kafka的情況以及管理流數據的***方法。
TechRepublic:Apache Kafka是如何進入企業主流環境的?
納克赫德:據Kafka社區最近開展的一項調查顯示,68%的Kafka用戶計劃在未來6個月至12個月整合更多的數據流處理技術;由于使用Kafka的應用程序數量越來越多,接受調查的企業組織中65%計劃在未來12個月招聘擁有Kafka技能的員工。
在最近的Kafka峰會上,我們聽到優步、網飛、Dropbox、HomeAway、高盛及更多的公司都在使用Kafka,實時做出業務決策。
比如說,優步完善了其數據流處理系統,以便處理優步市場(Uber Marketplace)中的許多使用場景,而Kafka在構建一條可靠、高效的數據管道方面扮演了重要角色。最廣為人知的例子之一就是動態定價策略(surge pricing)。設想一下:獲取所有數據來實時進行定價:從用戶需求到路面上車輛的數量,做出決定:每一分鐘的價格應該是多少。
這個典例表明了實時數據管道的實際運用。
HomeAway是另一個典例。作為度假租賃行業的***,它有100多萬個房源(而且在不斷增多)。借助Kafka,HomeAway連接不同的數據源,能夠支持眾多的使用場景,包括服務級別協議(SLA)監控、A/B測試、訪客細分、欺詐檢測、實時ETL及更多。
Confluent是我離開領英后與他人創辦的公司,它專注于借助Confluent平臺來擴展Apache Kafka,以滿足需要大規模管理數據、而且注重速度的企業的要求。這包括下列工具:Kafka Streams、Kafka Connect以及Control Center,從而提供了一種新的可見性,以便了解大規模的Kafka集群,并確保運營正常。
TechRepublic:在什么情況下,Kafka絕對是最適合的一種框架?哪種使用場合?
納克赫德:Kafka最常見的使用場合是用于實時數據傳輸、集成和實時數據流處理。
至于數據傳輸和集成,用戶運用Kafka Connect將數據連接到應用程序,那樣所有系統都可以訪問***的數據。這包括這些數據:日志數據、數據庫變化、傳感器及設備的數據、監控數據流、呼叫中心記錄和股票行情收錄器數據。
至于實時數據流處理,Kafka Streams是Kafka核心的擴展部分,它讓應用程序開發人員可以編寫持續查詢、轉換、事件觸發的警報和類似功能,并不需要一種專門的數據流處理框架。這些功能常常用于安全監控、實時操作(比如優步)和異步應用(比如零售商的庫存檢查)。
TechRepublic:運行這些類型的實時數據管道時,數據局部性有多重要?我大致聽說的是,如果在DC/OS上運行,Kafka就能在Kafka和Cassandra之間本地讀取數據。有鑒于行業正在向Mesosphere DC/OS實現的抽象邁進,你會如何描述在同一集群上運行互補框架的機會?
納克赫德:在數據中心規模下管理服務帶來了許多優化機會,如果你單個管理每項服務極難獲得這樣的機會。雖然能夠把相關服務放在同一個地方是明顯的好處,但是在有些情況下這并不合理;相反,你需要的是能夠為有狀態的應用程序分配專用資源,以便隔離。后者正是你在部署有狀態的應用程序(比如Kafka和Cassandra)時需要的,而Mesos已增添了表示滿足這類高級部署需求的功能,管理大規模有狀態的應用程序需要這種功能。
我們確保在需要的場合下,Mesos部署Confluent平臺保持了數據局部性。 我們的組件:Kafka REST Proxy和Schema Registry實際上是無狀態的,能夠在那些類型的框架中運行,而像Kafka代理這些有狀態的服務能夠以不同的方式來管理。但是整個Confluent平臺需要這兩種類型的服務。通過支持完整平臺,它能夠為客戶帶來更大的靈活性。
TechRepublic:Mesosphere DC/OS的兩級調度程序有何重要性?為何它就有能力吸引合作伙伴/生態系統的支持(比如來自Confluent/DataStax群體)?
納克赫德:不同的服務在集群資源和部署方面有不同的需求。兩級調度程序可以滿足有狀態的應用程序(比如Kafka)的部署要求,那種場合下需要針對數據局部性進行優化,從而盡可能地節省網絡和輸入/輸出帶寬。這為客戶提供了一種好的操作體驗,又不犧牲Kafka提供的性能。
原文標題:How Apache Kafka takes streaming data mainstream,作者:Matt Asay
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】