隨著數字化進程的不斷提升,智慧城市建設需求越來越迫切,中移物聯OneNET城市物聯網平臺的落(luo)地(di)項目也越(yue)來(lai)(lai)越(yue)多。同時,接(jie)入城市物聯網平臺的設備增多,平臺上的數(shu)據(ju)量(liang)也越(yue)來(lai)(lai)越(yue)大。面對這(zhe)么多復雜海量(liang)的數(shu)據(ju),我們如何有效利用它們,達到(dao)不浪費資源,對這(zhe)些數(shu)據(ju)進行統(tong)一(yi)管理成為我們應(ying)該(gai)考慮的問題,于是大數(shu)據(ju)技術(shu)應(ying)運而生。
大(da)數(shu)(shu)(shu)據(ju)(ju)(ju)技(ji)術就(jiu)是對(dui)數(shu)(shu)(shu)據(ju)(ju)(ju)進行(xing)收集(ji),經過(guo)分(fen)析后來(lai)做一些有意義的事情(qing),其中包括數(shu)(shu)(shu)據(ju)(ju)(ju)采集(ji)、數(shu)(shu)(shu)據(ju)(ju)(ju)存儲、數(shu)(shu)(shu)據(ju)(ju)(ju)處理、數(shu)(shu)(shu)據(ju)(ju)(ju)共享等(deng)。
數據采集
數據采集是什么?
大(da)數(shu)據(ju)(ju)采集(ji)技術就是指(zhi)對數(shu)據(ju)(ju)進行提取、轉換、加載,通(tong)過這些(xie)操作將不同數(shu)據(ju)(ju)源的(de)數(shu)據(ju)(ju)整合成一個(ge)(ge)新(xin)的(de)數(shu)據(ju)(ju)集(ji),為(wei)后面(mian)的(de)數(shu)據(ju)(ju)分(fen)(fen)析提供依據(ju)(ju)。城市(shi)物聯網平臺的(de)數(shu)據(ju)(ju)主(zhu)要(yao)包(bao)括離線(xian)數(shu)據(ju)(ju)和實時數(shu)據(ju)(ju)兩個(ge)(ge)部分(fen)(fen),現(xian)在需要(yao)對這兩個(ge)(ge)部分(fen)(fen)的(de)數(shu)據(ju)(ju)進行采集(ji)。
離線數據采集
離線(xian)數據(ju)主要來源于MongoDB、MySQL、Postgresql,采用的(de)方法是將數據(ju)庫(ku)中的(de)數據(ju)導出為(wei)Bson、CSV、Txt文(wen)(wen)件(jian),再(zai)統一(yi)對導出的(de)文(wen)(wen)件(jian)進行(xing)管理(li)。
實時數據采集
實時(shi)數(shu)(shu)據(ju)主要來源于Kafka,采(cai)用Flume進行(xing)采(cai)集(ji)(ji)。Flume由Source(數(shu)(shu)據(ju)源)、Sink(數(shu)(shu)據(ju)接收方(fang))、Channel(緩沖區)幾部分(fen)(fen)組成。Flume是(shi)一個分(fen)(fen)布(bu)式、可(ke)靠、高可(ke)用的(de)海量(liang)日志采(cai)集(ji)(ji)系統,具有可(ke)橫(heng)向(xiang)擴展、延展性、可(ke)靠性等優(you)勢,此(ci)外Flume 針(zhen)對特殊場(chang)景也具備良好的(de)自定(ding)義擴展能力,因此(ci)Flume可(ke)以適用于大部分(fen)(fen)的(de)日常數(shu)(shu)據(ju)采(cai)集(ji)(ji)場(chang)景。平臺通過對Flume進行(xing)簡單配(pei)置實現Kafka的(de)數(shu)(shu)據(ju)采(cai)集(ji)(ji)。
數據存儲
數據存儲是什么?
大數據(ju)存儲是非常(chang)關鍵一步(bu),將采(cai)集的數據(ju)進行存儲,再進行后續的加工分析。平臺數據(ju)量大,單機容量無法存儲大量數據(ju),需要(yao)多個(ge)機器儲存,HDFS具(ju)有高容錯性、適合批處(chu)(chu)理(li)、流(liu)式(shi)訪(fang)問、大數據(ju)處(chu)(chu)理(li)等優點,因此采(cai)用分布式(shi)文件系統HDFS對數據(ju)進行存儲。
數倉規范
數(shu)(shu)(shu)倉模(mo)型中(zhong)有原始(shi)數(shu)(shu)(shu)據(ju)(ju)層(ODS)、維表層(DIM)、數(shu)(shu)(shu)據(ju)(ju)匯總(zong)層(DW)、數(shu)(shu)(shu)據(ju)(ju)應用層(ADS)。層次加工順序(xu):按照ODS清洗(xi)->DW、DIM加工->ADS數(shu)(shu)(shu)據(ju)(ju)應用層的層次順序(xu)依序(xu)加工數(shu)(shu)(shu)據(ju)(ju),禁止(zhi)數(shu)(shu)(shu)據(ju)(ju)逆向(xiang)流(liu)動。
當數(shu)據(ju)倉庫表創(chuang)建(jian)、修改時需要說明用(yong)途和(he)字(zi)段含義。表名統(tong)一采用(yong)蛇(she)形(xing)命名法(snake_case_naming_style),并(bing)由以下三部分組成:
{所在分層(ceng)}_{業務模型名(ming)稱(cheng)}_{表后綴名(ming)}
其中,業務模型(xing)名稱不超過20個(ge)字(zi)符,當字(zi)符數(shu)量(liang)超過可采用縮寫,表(biao)后綴由(you)數(shu)據加(jia)工頻率和數(shu)據加(jia)工類型(xing)各(ge)一個(ge)英文字(zi)母(mu)共同構成。
數倉分層結構
數據處理
DolphinScheduler是什么?
DolphinScheduler是一個分(fen)布式(shi)易擴展的可視化(hua)DAG工(gong)作(zuo)流任(ren)務調度開源系統(tong)。
DolphinScheduler的優勢
DolphinScheduler是一(yi)個分布(bu)式(shi)去中(zhong)心化(hua),易擴展(zhan)的可(ke)視化(hua)DAG工作流任務(wu)(wu)調(diao)度平臺,采用(yong)DAG監控界面,所有(you)流程定(ding)(ding)義都是可(ke)視化(hua),一(yi)鍵部署(shu);去中(zhong)心化(hua)的多(duo)Master和多(duo)Worker, 自(zi)身(shen)支(zhi)持(chi)HA功能, 采用(yong)任務(wu)(wu)隊(dui)列來(lai)避(bi)免過載,不會造成機(ji)器(qi)卡死;支(zhi)持(chi)暫停恢復操(cao)作,支(zhi)持(chi)多(duo)租戶(hu),更好的應對大數據的使用(yong)場景.,支(zhi)持(chi)更多(duo)的任務(wu)(wu)類型(xing);支(zhi)持(chi)自(zi)定(ding)(ding)義任務(wu)(wu)類型(xing),調(diao)度器(qi)使用(yong)分布(bu)式(shi)調(diao)度,調(diao)度能力隨集群線性增長,Master和Worker支(zhi)持(chi)動態(tai)上下線。
選用DolphinScheduler原因
DolphinScheduler可(ke)以解決數據(ju)研(yan)發ETL 錯綜復(fu)(fu)雜(za)的依(yi)賴關系,不(bu)能直觀監控任務(wu)健康狀態等問題(ti)。DolphinScheduler以DAG流式的方式將Task組裝(zhuang)起(qi)來,可(ke)實時(shi)監控任務(wu)的運行(xing)狀態,同(tong)時(shi)支持重試、從指定節點恢復(fu)(fu)失(shi)敗、暫(zan)停及Kill任務(wu)等操(cao)作(zuo)。因此平臺采用DolphinScheduler對大數據(ju)進(jin)行(xing)分析加工(gong)。
數據開發流程
1.基(ji)于ETL工具采集(ji)物(wu)聯網基(ji)礎信息(xi)數(shu)據至ODS層,主要包含平臺用戶信息(xi)、產(chan)品信息(xi)、設(she)備檔案信息(xi)、告警配(pei)置等信息(xi)。
2.基于(yu)Flume+Kafka,實時(shi)采集設備上報(bao)屬(shu)性(xing)與事(shi)件數據,存儲到ODS層(ceng)。
3.基于質量校(xiao)(xiao)(xiao)驗規則,定期(qi)對業務(wu)基礎(chu)數據進(jin)(jin)行質量校(xiao)(xiao)(xiao)驗(如設備經緯度信(xin)息(xi)、歸屬組織、編(bian)碼規范(fan)進(jin)(jin)行校(xiao)(xiao)(xiao)驗);實時對設備上報數據進(jin)(jin)行校(xiao)(xiao)(xiao)驗(如設備上報數據取值范(fan)圍、數值正則匹(pi)配)。
4.將(jiang)(jiang)ODS層的(de)數(shu)(shu)據進(jin)行(xing)(xing)清洗轉(zhuan)換(huan),對MongoDB JSON格式的(de)數(shu)(shu)據字段進(jin)行(xing)(xing)提取(qu),關聯聚合產品設備信息形成寬表,將(jiang)(jiang)數(shu)(shu)據存入(ru)DW層。
5.根據業務邏(luo)輯編寫Python、Shell、SQL腳本,通過(guo)DolphinScheduler定時調度工作流,對(dui)DW層(ceng)的數據進(jin)行(xing)業務處理,形成每日用戶新增、設(she)備日活、設(she)備上(shang)報(bao)數據量(liang)、上(shang)下行(xing)消息數等指標,將結果寫入ADS層(ceng)。
6.通(tong)過數據(ju)服務,基于API接口,結合用戶權限,將ADS層數據(ju)共享(xiang)開放給領(ling)導駕駛艙、數據(ju)市場等,實現(xian)數據(ju)治理價值。