天天看點

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

導讀:火災已經爆發後才知道救火,交通已經阻塞後才知道疏通,羊毛已經被“羊毛黨”薅光後才知道堵上漏洞,股價已經拉升後才知道後悔……為什麼我們不能在這些事情發生之前,或者至少是剛剛發生的時候就提前收到預警和通知,并且及時采取應對措施呢?

在這樣的背景下,實時流計算技術應運而生……

作者:周爽

來源:大資料DT(ID:hzdashuju)

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

01 大資料時代的新挑戰:實時流計算

社會需求和科技進步是螺旋式互相促進和提升的。“大資料”一詞最早由Roger Mougalas在2005年提出,是以我們姑且認為2005年是大資料時代的元年吧。

大資料技術之是以出現,是因為社會發展的程度已經開始要求我們具備處理海量資料的能力。之後,大資料技術逐漸發展和日趨完善的過程又反過來進一步促進社會産生更多、更豐富的資料。

随着大資料技術的普及,IBM公司為我們總結了大資料的五大特點(也稱為5V特點),即Volume(大量)、Velocity(快速)、Variety(多樣)、Veracity(真實)和Value(價值),如圖1-1所示。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

▲圖1-1 大資料的五大特點

大資料時代為人們帶來了豐富多彩的生活方式,讓人們充分享受着從大資料中挖掘而來的價值。但也正因為大資料産生得太多太快,讓我們開始疲于對正在發生的事情做出及時反應。

是的,面對無窮無盡的資料洪流,我們急需一種手段來幫助我們抓住并思考那些一閃而逝的瞬間。在這樣的背景下,實時流計算技術應運而生。

雖然不能像電影《超體》中女主角直接用手抓住并分析電磁波資訊那樣,但至少實時流計算技術能夠幫助我們抓住資料流的瞬間,分析并挖掘出資料的實時價值。

千萬不要小瞧了資料的實時價值。據說在很久以前的歐洲戰場上,每次最先知道戰争結果的不是後方的政府機構,而是股票交易所裡的那些股票投資者。

俗話說,時間就是金錢,效率就是生命。所有實時流計算的目的都是為了獲得資料的實時價值。如果資料沒有實時價值,那麼實時流計算也就失去了它存在的意義。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

02 實時流計算使用場景

話說有一句至理名言:“天下武功,無堅不摧,唯快不破!”由此足可見“快”的重要性。更快、更完整地擷取資料,更快、更充分地挖掘出資料價值,已成為大資料時代各行各業的共識。

線上系統監控、移動資料和物聯網、金融風控、推薦系統等,雖然行業各不相同,但是它們有個共同點——實時流計算技術在這些領域發揮着越來越重要的作用。

1. 線上系統監控

網際網路行業蓬勃發展的背後,是各家企業機房裡成千上萬的伺服器。伺服器在7×24小時(傳說中的007工作制)的作業過程中産生大量監控資料。

這些資料包含着伺服器本身的健康狀況,如硬體狀态、資源使用情況和負載壓力等。第一時間知道伺服器的健康狀況是非常重要的,可以避免因為一台伺服器當機而後續造成的各種雪崩效應。

除了伺服器本身以外,複雜的線上業務系統産生着更多的資料。如今一個每天億萬級别通路量的系統已經司空見慣,産品花樣更是層出不窮。業務系統産生日志的數量級由GB變TB,再由TB變PB。

将線上日志導入實時流計算系統,我們可以實作一系列有實時價值的功能。

  • 最基本的功能是監控業務是否營運正常,如監控業務關鍵名額、發現故障模式等。
  • 進階些的功能是最大程度優化業務使用伺服器的成本,如根據CPU、記憶體和I/O等資源的使用率動态擴充或縮減業務使用的伺服器數量。
  • 更進階的功能是挖掘和探索新的業務模式,如CEP(Complex Event Processing,複雜事件處理)和線上統計學習或機器學習模型的各種運用等。

通過實時流計算技術,實時展現業務系統的健康狀況,提前避免可能的業務故障,最大程度優化業務使用伺服器的成本,搶先發現新的業務模式和商機……這些都是實時流計算技術在線上系統監控領域價值的展現。

2. 移動資料和物聯網

移動終端、智能交通、共享單車、5G、工業4.0……如今在我們生活的時代,一波又一波的新名詞層出不窮。“移動”和“物聯”讓資料變得随時随地可得。資料越來越多,機關資料自身的價值卻越來越小。實時處理海量資料洪流,已成為移動和物聯網領域的當務之急。

例如,對于智能交通系統,傳統智能交通系統采用離線方式對交通資料做分析,交通決策不能及時做出;而通過對交通資料流進行實時分析,實時展現交通熱點路段、優化信号燈配時、指導行車線路,可實實在在減輕目前熱點路段壓力、縮減平均行車時間,如圖1-2所示。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

▲圖1-2 基于Spark Streaming的Uber交通熱點路段分析及可視化系統

像智能交通這樣,優化生活環境,正是實時流計算技術在移動資料和物聯網領域展現的價值之一。

3. 金融風控

金融風控是實時流計算技術又一常用領域,如圖1-3所示。通常針對貸款的風控,可以分為貸前、貸中和貸後。在貸中和貸後,大多采用離線資料分析和資料可視化技術來實作風險控制。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

▲圖1-3 基于Flink的實時欺詐檢測平台

但是在貸前,特别是在許多現金貸産品中,為了給使用者帶來更好的産品體驗,必須在很短的時間内對使用者的信用、還款能力和還款意願等做出評估。除了針對使用者本身的信用風險作分析外,還需要防止金融欺詐問題,如“薅羊毛”和多頭借貸。

通過實時流計算技術,在秒級甚至亞秒級,對使用者信用和欺詐風險做出判定,在保證可控風險的同時,提供良好的使用者體驗,進一步提高現金貸産品整體的競争力。

4. 實時推薦

實時推薦是實時流計算技術的另一個常見應用場景。如今手機幾乎成為每一個年輕人的必備品。打開手機,聽音樂、浏覽新聞、閱讀小說、看到心儀的東西買買買……

有一天你突然發現,手機應用越來越了解自己。它們知道推薦什麼樣的音樂、新聞、小說和商品,并且推薦的東西大抵還是你所喜歡的。

現代推薦系統(見圖1-4)背後越來越多地出現了實時流計算技術的影子,通過實時分析從使用者手機上收集而來的行為資料,發掘使用者的興趣、偏好,給使用者推薦可能感興趣的内容或商品。或許很多人并不喜歡這種被機器引導的感覺,但是我們還是不可避免地越來越多地被它們所影響。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

▲圖1-4 基于Spark Streaming的實時零售推薦系統

這裡隻是簡單地列舉了幾個流計算技術使用的場景。其實在越來越多的行業,很多傳統上用離線批處理技術完成的事情也逐漸轉變為采用實時流計算技術完成。是以,讀者不妨大膽發揮想象力,試着将實時流計算技術運用到生活的各個方面去,挖掘實時資訊的潛在價值,說不定就會獲得一份驚喜。

03 實時流資料的特點

本節介紹了實時流計算技術的使用場景。實時流計算技術的處理對象是實時流資料。盡管實時流資料的來源千變萬化、豐富多彩,但歸納起來,實時流資料通常具有實時性、随機性、無序性和無限性。

1. 實時性

之是以要采集實時流資料,并對其進行實時處理,是因為這些資料具有實時價值。例如,提前預警避免火災,貸前反欺詐避免騙貸,量化交易搶得市場先機等。如果事後再分析這些資料,這個時候火災已經發生,騙子已經卷款而逃,市場機會已經錯過,分析資料帶來的價值也隻限于“前事不忘,後事之師”了。

是以,對實時流資料的計算和分析一定要在其實時價值消退之前完成,這就要求計算的時延必須小。有時候資料量大、計算複雜的原因會導緻實時計算無法完成,這時甚至會犧牲結果的準确性,在保證誤差在可接受範圍的前提下,優先滿足計算的實時性。

2. 随機性

流資料是真實世界發生各種事件的展現。真實世界事件的随機發生,使得流資料的産生在時間和數量上具有随機性。有時候在很長一段時間内隻産生少量資料,有時候又會在很短時間内産生大量資料。

實時流資料的随機性對實時流計算系統在各種流量和突發情況下的處理能力與服務穩定性提出要求。我們可以從資料采樣、資料緩沖、計算資源動态調整3個角度來解決實時流資料随機性的問題。

有些情況下,流資料量很大,暫時超過了系統的處理能力,如果業務需求允許,則可以考慮丢棄部分資料,或者使用帶采樣性質的算法,減少計算壓力。如果資料不允許丢失,則可以采用帶緩沖和持久化能力的消息中間件來暫時緩沖資料,讓系統平穩處理資料流,削平流量高峰。

另外,在一些資源敏感的情況下,可能還需要實時流計算系統能夠根據流量壓力情況,動态增加或減少計算資源,使得在滿足實時流計算的同時,最大化計算資源的使用效率。

什麼是大資料「實時流計算」?深度解析它的4大應用及4個特點

3. 無序性

流資料是一個關于時間的事件序列。我們通常希望事件會按照它們發生的時刻依次到達系統,但由于異步、并發、網絡延時、時間不同步和系統故障等諸多原因,嚴格意義上的全局有序是很難保證的,甚至幾乎不可能。

于是退而求其次,我們可以讓資料在局部時間視窗内有序。在目前主流的實時流計算架構中,常見的做法是将接收到的事件,按時間戳分發到一個個的時間視窗分片中,在等待一段時候後,再觸發時間視窗分片内資料的統一處理操作。

流資料中的時間有兩類:事件發生時間和事件處理時間。事件發生時間是指事件發生的時刻,而事件處理時間則是系統處理事件的時刻。這兩種時間會導緻流計算的過程和結果都有所不同,具體使用哪種時間因場景而異。

4. 無限性

流資料是一種随時間無限增長的資料序列。這是流資料和批資料最本質的差別。批資料在每次處理時資料量是有限的,而流資料沒有“每次”的概念,它總在不斷産生,無窮無盡。流資料和批資料的差別,導緻它們在系統架構和算法實作上都有所不同。

在系統架構上,實時流資料的無限性要求系統必須具備高可用性和實時處理能力。一方面,當系統發生故障時,如果系統沒有高可用性,則流資料會丢失,并會暫停流計算。這與實時流計算的目标(即在實時流資料上擷取實時價值)是相違背的,是以不可容忍。

另一方面,當系統處理能力不能跟上資料流産生的速度時,待處理的消息會越積越多。當積壓數量超過門檻值後,具有有限存儲空間的系統必然會崩潰。為了消除已經存在的積壓消息,系統處理能力必須超過資料流産生的速度,否則積壓情況會一直存在。

在算法實作上,實時流資料的無限性對原本針對批資料設計的算法提出挑戰。一方面,實時流計算過程中的可用空間和可用時間都有更嚴苛的限制;另一方面,流計算的輸入資料随時間無限增加,這和批處理算法的輸入是有限資料集有本質差別。是以,實時流計算使用的算法相比批處理算法,在算法實作和算法複雜度方面會有明顯不同。

在實時流資料的四大特點中,無限性是流資料相比批資料最大的差別,這直接導緻了流處理和批處理的查詢模式有所不同。批處理是在固定資料集上進行不同的查詢,而流處理是在無限資料集上進行固定的查詢。實時性、随機性和無序性既是實時流計算系統的特點,也是我們要解決的問題。

作者簡介:周爽,本碩畢業于華中科技大學,先後在華為2012實驗室高斯部門和上海行邑資訊科技有限公司工作。開發過實時分析型記憶體資料庫RTANA、華為公有雲RDS服務、移動反欺詐MoFA等産品。目前但任公司技術部架構師一職。著有《實時流計算系統設計與實作》一書。

有話要說?

Q: 你還能想到哪些實時流計算的應用?

歡迎留言與大家分享