隨著數(shù)字化進(jìn)程的不斷提升,智慧城市建設(shè)需求越來越迫切,中移物聯(lián)OneNET城市物聯(lián)網(wǎng)平臺的落地項(xiàng)目也越來越多。同時,接入城市物聯(lián)網(wǎng)平臺的設(shè)備增多,平臺上的數(shù)據(jù)量也越來越大。面對這么多復(fù)雜海量的數(shù)據(jù),我們?nèi)绾斡行Ю盟鼈儯_(dá)到不浪費(fèi)資源,對這些數(shù)據(jù)進(jìn)行統(tǒng)一管理成為我們應(yīng)該考慮的問題,于是大數(shù)據(jù)技術(shù)應(yīng)運(yùn)而生。
大數(shù)據(jù)技術(shù)就是對數(shù)據(jù)進(jìn)行收集,經(jīng)過分析后來做一些有意義的事情,其中包括數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)處理、數(shù)據(jù)共享等。
數(shù)據(jù)采集
數(shù)據(jù)采集是什么?
大數(shù)據(jù)采集技術(shù)就是指對數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、加載,通過這些操作將不同數(shù)據(jù)源的數(shù)據(jù)整合成一個新的數(shù)據(jù)集,為后面的數(shù)據(jù)分析提供依據(jù)。城市物聯(lián)網(wǎng)平臺的數(shù)據(jù)主要包括離線數(shù)據(jù)和實(shí)時數(shù)據(jù)兩個部分,現(xiàn)在需要對這兩個部分的數(shù)據(jù)進(jìn)行采集。
離線數(shù)據(jù)采集
離線數(shù)據(jù)主要來源于MongoDB、MySQL、Postgresql,采用的方法是將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出為Bson、CSV、Txt文件,再統(tǒng)一對導(dǎo)出的文件進(jìn)行管理。
實(shí)時數(shù)據(jù)采集
實(shí)時數(shù)據(jù)主要來源于Kafka,采用Flume進(jìn)行采集。Flume由Source(數(shù)據(jù)源)、Sink(數(shù)據(jù)接收方)、Channel(緩沖區(qū))幾部分組成。Flume是一個分布式、可靠、高可用的海量日志采集系統(tǒng),具有可橫向擴(kuò)展、延展性、可靠性等優(yōu)勢,此外Flume 針對特殊場景也具備良好的自定義擴(kuò)展能力,因此Flume可以適用于大部分的日常數(shù)據(jù)采集場景。平臺通過對Flume進(jìn)行簡單配置實(shí)現(xiàn)Kafka的數(shù)據(jù)采集。
數(shù)據(jù)存儲
數(shù)據(jù)存儲是什么?
大數(shù)據(jù)存儲是非常關(guān)鍵一步,將采集的數(shù)據(jù)進(jìn)行存儲,再進(jìn)行后續(xù)的加工分析。平臺數(shù)據(jù)量大,單機(jī)容量無法存儲大量數(shù)據(jù),需要多個機(jī)器儲存,HDFS具有高容錯性、適合批處理、流式訪問、大數(shù)據(jù)處理等優(yōu)點(diǎn),因此采用分布式文件系統(tǒng)HDFS對數(shù)據(jù)進(jìn)行存儲。
數(shù)倉規(guī)范
數(shù)倉模型中有原始數(shù)據(jù)層(ODS)、維表層(DIM)、數(shù)據(jù)匯總層(DW)、數(shù)據(jù)應(yīng)用層(ADS)。層次加工順序:按照ODS清洗->DW、DIM加工->ADS數(shù)據(jù)應(yīng)用層的層次順序依序加工數(shù)據(jù),禁止數(shù)據(jù)逆向流動。
當(dāng)數(shù)據(jù)倉庫表創(chuàng)建、修改時需要說明用途和字段含義。表名統(tǒng)一采用蛇形命名法(snake_case_naming_style),并由以下三部分組成:
{所在分層}_{業(yè)務(wù)模型名稱}_{表后綴名}
其中,業(yè)務(wù)模型名稱不超過20個字符,當(dāng)字符數(shù)量超過可采用縮寫,表后綴由數(shù)據(jù)加工頻率和數(shù)據(jù)加工類型各一個英文字母共同構(gòu)成。
數(shù)倉分層結(jié)構(gòu)
數(shù)據(jù)處理
DolphinScheduler是什么?
DolphinScheduler是一個分布式易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度開源系統(tǒng)。
DolphinScheduler的優(yōu)勢
DolphinScheduler是一個分布式去中心化,易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度平臺,采用DAG監(jiān)控界面,所有流程定義都是可視化,一鍵部署;去中心化的多Master和多Worker, 自身支持HA功能, 采用任務(wù)隊(duì)列來避免過載,不會造成機(jī)器卡死;支持暫停恢復(fù)操作,支持多租戶,更好的應(yīng)對大數(shù)據(jù)的使用場景.,支持更多的任務(wù)類型;支持自定義任務(wù)類型,調(diào)度器使用分布式調(diào)度,調(diào)度能力隨集群線性增長,Master和Worker支持動態(tài)上下線。
選用DolphinScheduler原因
DolphinScheduler可以解決數(shù)據(jù)研發(fā)ETL 錯綜復(fù)雜的依賴關(guān)系,不能直觀監(jiān)控任務(wù)健康狀態(tài)等問題。DolphinScheduler以DAG流式的方式將Task組裝起來,可實(shí)時監(jiān)控任務(wù)的運(yùn)行狀態(tài),同時支持重試、從指定節(jié)點(diǎn)恢復(fù)失敗、暫停及Kill任務(wù)等操作。因此平臺采用DolphinScheduler對大數(shù)據(jù)進(jìn)行分析加工。
數(shù)據(jù)開發(fā)流程
1.基于ETL工具采集物聯(lián)網(wǎng)基礎(chǔ)信息數(shù)據(jù)至ODS層,主要包含平臺用戶信息、產(chǎn)品信息、設(shè)備檔案信息、告警配置等信息。
2.基于Flume+Kafka,實(shí)時采集設(shè)備上報(bào)屬性與事件數(shù)據(jù),存儲到ODS層。
3.基于質(zhì)量校驗(yàn)規(guī)則,定期對業(yè)務(wù)基礎(chǔ)數(shù)據(jù)進(jìn)行質(zhì)量校驗(yàn)(如設(shè)備經(jīng)緯度信息、歸屬組織、編碼規(guī)范進(jìn)行校驗(yàn));實(shí)時對設(shè)備上報(bào)數(shù)據(jù)進(jìn)行校驗(yàn)(如設(shè)備上報(bào)數(shù)據(jù)取值范圍、數(shù)值正則匹配)。
4.將ODS層的數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對MongoDB JSON格式的數(shù)據(jù)字段進(jìn)行提取,關(guān)聯(lián)聚合產(chǎn)品設(shè)備信息形成寬表,將數(shù)據(jù)存入DW層。
5.根據(jù)業(yè)務(wù)邏輯編寫Python、Shell、SQL腳本,通過DolphinScheduler定時調(diào)度工作流,對DW層的數(shù)據(jù)進(jìn)行業(yè)務(wù)處理,形成每日用戶新增、設(shè)備日活、設(shè)備上報(bào)數(shù)據(jù)量、上下行消息數(shù)等指標(biāo),將結(jié)果寫入ADS層。
6.通過數(shù)據(jù)服務(wù),基于API接口,結(jié)合用戶權(quán)限,將ADS層數(shù)據(jù)共享開放給領(lǐng)導(dǎo)駕駛艙、數(shù)據(jù)市場等,實(shí)現(xiàn)數(shù)據(jù)治理價值。