隨著數(shù)字化進(jìn)程的不斷提升,智慧城市建設(shè)需求越來越迫切,中移物聯(lián)OneNET城市物聯(lián)網(wǎng)平臺(tái)的落地項(xiàng)目也越來越多。同時(shí),接入城市物聯(lián)網(wǎng)平臺(tái)的設(shè)備增多,平臺(tái)上的數(shù)據(jù)量也越來越大。面對(duì)這么多復(fù)雜海量的數(shù)據(jù),我們?nèi)绾斡行Ю盟鼈?,達(dá)到不浪費(fèi)資源,對(duì)這些數(shù)據(jù)進(jìn)行統(tǒng)一管理成為我們應(yīng)該考慮的問題,于是大數(shù)據(jù)技術(shù)應(yīng)運(yùn)而生。
大數(shù)據(jù)技術(shù)就是對(duì)數(shù)據(jù)進(jìn)行收集,經(jīng)過分析后來做一些有意義的事情,其中包括數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)共享等。
數(shù)據(jù)采集
數(shù)據(jù)采集是什么?
大數(shù)據(jù)采集技術(shù)就是指對(duì)數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、加載,通過這些操作將不同數(shù)據(jù)源的數(shù)據(jù)整合成一個(gè)新的數(shù)據(jù)集,為后面的數(shù)據(jù)分析提供依據(jù)。城市物聯(lián)網(wǎng)平臺(tái)的數(shù)據(jù)主要包括離線數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)兩個(gè)部分,現(xiàn)在需要對(duì)這兩個(gè)部分的數(shù)據(jù)進(jìn)行采集。
離線數(shù)據(jù)采集
離線數(shù)據(jù)主要來源于MongoDB、MySQL、Postgresql,采用的方法是將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出為Bson、CSV、Txt文件,再統(tǒng)一對(duì)導(dǎo)出的文件進(jìn)行管理。
實(shí)時(shí)數(shù)據(jù)采集
實(shí)時(shí)數(shù)據(jù)主要來源于Kafka,采用Flume進(jìn)行采集。Flume由Source(數(shù)據(jù)源)、Sink(數(shù)據(jù)接收方)、Channel(緩沖區(qū))幾部分組成。Flume是一個(gè)分布式、可靠、高可用的海量日志采集系統(tǒng),具有可橫向擴(kuò)展、延展性、可靠性等優(yōu)勢(shì),此外Flume 針對(duì)特殊場(chǎng)景也具備良好的自定義擴(kuò)展能力,因此Flume可以適用于大部分的日常數(shù)據(jù)采集場(chǎng)景。平臺(tái)通過對(duì)Flume進(jìn)行簡(jiǎn)單配置實(shí)現(xiàn)Kafka的數(shù)據(jù)采集。
數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)是什么?
大數(shù)據(jù)存儲(chǔ)是非常關(guān)鍵一步,將采集的數(shù)據(jù)進(jìn)行存儲(chǔ),再進(jìn)行后續(xù)的加工分析。平臺(tái)數(shù)據(jù)量大,單機(jī)容量無法存儲(chǔ)大量數(shù)據(jù),需要多個(gè)機(jī)器儲(chǔ)存,HDFS具有高容錯(cuò)性、適合批處理、流式訪問、大數(shù)據(jù)處理等優(yōu)點(diǎn),因此采用分布式文件系統(tǒng)HDFS對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。
數(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)。
當(dāng)數(shù)據(jù)倉庫表創(chuàng)建、修改時(shí)需要說明用途和字段含義。表名統(tǒng)一采用蛇形命名法(snake_case_naming_style),并由以下三部分組成:
{所在分層}_{業(yè)務(wù)模型名稱}_{表后綴名}
其中,業(yè)務(wù)模型名稱不超過20個(gè)字符,當(dāng)字符數(shù)量超過可采用縮寫,表后綴由數(shù)據(jù)加工頻率和數(shù)據(jù)加工類型各一個(gè)英文字母共同構(gòu)成。

數(shù)倉分層結(jié)構(gòu)
數(shù)據(jù)處理
DolphinScheduler是什么?
DolphinScheduler是一個(gè)分布式易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度開源系統(tǒng)。
DolphinScheduler的優(yōu)勢(shì)
DolphinScheduler是一個(gè)分布式去中心化,易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度平臺(tái),采用DAG監(jiān)控界面,所有流程定義都是可視化,一鍵部署;去中心化的多Master和多Worker, 自身支持HA功能, 采用任務(wù)隊(duì)列來避免過載,不會(huì)造成機(jī)器卡死;支持暫?;謴?fù)操作,支持多租戶,更好的應(yīng)對(duì)大數(shù)據(jù)的使用場(chǎng)景.,支持更多的任務(wù)類型;支持自定義任務(wù)類型,調(diào)度器使用分布式調(diào)度,調(diào)度能力隨集群線性增長(zhǎng),Master和Worker支持動(dòng)態(tài)上下線。
選用DolphinScheduler原因
DolphinScheduler可以解決數(shù)據(jù)研發(fā)ETL 錯(cuò)綜復(fù)雜的依賴關(guān)系,不能直觀監(jiān)控任務(wù)健康狀態(tài)等問題。DolphinScheduler以DAG流式的方式將Task組裝起來,可實(shí)時(shí)監(jiān)控任務(wù)的運(yùn)行狀態(tài),同時(shí)支持重試、從指定節(jié)點(diǎn)恢復(fù)失敗、暫停及Kill任務(wù)等操作。因此平臺(tái)采用DolphinScheduler對(duì)大數(shù)據(jù)進(jìn)行分析加工。
數(shù)據(jù)開發(fā)流程
1.基于ETL工具采集物聯(lián)網(wǎng)基礎(chǔ)信息數(shù)據(jù)至ODS層,主要包含平臺(tái)用戶信息、產(chǎn)品信息、設(shè)備檔案信息、告警配置等信息。
2.基于Flume+Kafka,實(shí)時(shí)采集設(shè)備上報(bào)屬性與事件數(shù)據(jù),存儲(chǔ)到ODS層。
3.基于質(zhì)量校驗(yàn)規(guī)則,定期對(duì)業(yè)務(wù)基礎(chǔ)數(shù)據(jù)進(jìn)行質(zhì)量校驗(yàn)(如設(shè)備經(jīng)緯度信息、歸屬組織、編碼規(guī)范進(jìn)行校驗(yàn));實(shí)時(shí)對(duì)設(shè)備上報(bào)數(shù)據(jù)進(jìn)行校驗(yàn)(如設(shè)備上報(bào)數(shù)據(jù)取值范圍、數(shù)值正則匹配)。
4.將ODS層的數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對(duì)MongoDB JSON格式的數(shù)據(jù)字段進(jìn)行提取,關(guān)聯(lián)聚合產(chǎn)品設(shè)備信息形成寬表,將數(shù)據(jù)存入DW層。
5.根據(jù)業(yè)務(wù)邏輯編寫Python、Shell、SQL腳本,通過DolphinScheduler定時(shí)調(diào)度工作流,對(duì)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ù)市場(chǎng)等,實(shí)現(xiàn)數(shù)據(jù)治理價(jià)值。