王京陳 偉利 陳亮
【摘要】本文選擇在Hadoop平臺(tái)MapReduce計(jì)算框架搭建服務(wù)器平臺(tái)框架,并根據(jù)數(shù)據(jù)類型的不同分別進(jìn)行MySql數(shù)據(jù)庫MongoDB數(shù)據(jù)庫的設(shè)計(jì)和搭建,采用異步非阻塞通信的方式把通過GPS和RFID技術(shù)采集的數(shù)據(jù),傳輸至信息管理系統(tǒng)進(jìn)行數(shù)據(jù)分析處理和計(jì)算,進(jìn)而在數(shù)據(jù)服務(wù)器軟件發(fā)布信息提供實(shí)時(shí)定位等信息滿足市民出行。
【關(guān)鍵詞】Hadoop平臺(tái)MapReduce計(jì)算框架 MySq1數(shù)據(jù)庫設(shè)計(jì)MongoDB數(shù)據(jù)庫設(shè)計(jì) RFID技術(shù)
0引言
發(fā)展公共交通是改善城市交通的重要方面,公交車存在的到站不準(zhǔn)時(shí)、坐車擁擠等問題嚴(yán)重制約了公共交通系統(tǒng)的發(fā)展,如何通過智能公交系統(tǒng)來提高乘客的滿意度是急需解決的問題。為了方便市民的出行,我們打算研究一款智能互聯(lián)的公交助手類軟件,通過車輛前端采集的數(shù)據(jù),經(jīng)過無線網(wǎng)絡(luò)傳輸,在Hadoop平臺(tái)處理,提供給大眾公交系統(tǒng)信息化和智能化的服務(wù)。
1系統(tǒng)設(shè)計(jì)的總體需求
(1)提供給市民:精準(zhǔn)告知公交車線路和具體位置;預(yù)計(jì)達(dá)到時(shí)間;客流量監(jiān)測(cè);到站信息、實(shí)時(shí)更新路況信息;發(fā)布實(shí)時(shí)道路交通狀況和市政施工信息。
(2)提供給政府:通過動(dòng)態(tài)監(jiān)控、實(shí)時(shí)調(diào)度,掌握車輛位置信息,對(duì)公交公司可以進(jìn)行有效的行業(yè)監(jiān)管;和其他智能系統(tǒng)配合,能夠調(diào)用更多的交通信息為城市居民提供出行支持;危險(xiǎn)時(shí)候方便進(jìn)行應(yīng)急指揮。
(3)提供給公交公司:通過交通路況信息、客流量時(shí)空分布,對(duì)市民交通出行進(jìn)行分析,進(jìn)而對(duì)車輛動(dòng)態(tài)調(diào)度,實(shí)現(xiàn)車輛、人力、站場(chǎng)等生產(chǎn)資源最優(yōu)配置,提高運(yùn)營調(diào)度管理水平,并降低運(yùn)營調(diào)度管理成本。
2系統(tǒng)設(shè)計(jì)
信息管理系統(tǒng)作為基礎(chǔ)數(shù)據(jù)的管理平臺(tái),對(duì)人、車、線路、站臺(tái)等數(shù)據(jù)進(jìn)行存儲(chǔ)和維護(hù);對(duì)車輛終端GPS和RFID采集的數(shù)據(jù)進(jìn)行處理,獲取車輛的實(shí)時(shí)信息,方便公交公司對(duì)車輛進(jìn)行實(shí)時(shí)定位;并將定位數(shù)據(jù)其轉(zhuǎn)化成發(fā)布信息,發(fā)布在數(shù)據(jù)服務(wù)器軟件上;公交公司可以根據(jù)數(shù)據(jù)庫提供的車輛載客量來調(diào)動(dòng)車輛,實(shí)現(xiàn)車輛的動(dòng)態(tài)調(diào)度,滿足市民的出行要求。數(shù)據(jù)流圖如下所示:
3 Hadoop平臺(tái)的選擇
Hadoop是由Google公司研發(fā)的針對(duì)大規(guī)模數(shù)據(jù)處理的分布式平臺(tái),實(shí)現(xiàn)在大量通用計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算,花費(fèi)相對(duì)廉價(jià)的成本就可以構(gòu)建一個(gè)穩(wěn)定、簡單、強(qiáng)大、高效的分布式集群計(jì)算系統(tǒng)。MapReduce計(jì)算框架是Hadoop生態(tài)中最為重要的一個(gè)組件,該模型的核心理念就是“Map”映射“Reduce”歸約,用戶在客戶端編程時(shí)需要指定一個(gè)Map函數(shù),用來將.一組鍵值對(duì)映射到一組新的鍵值對(duì),另外需要指定一個(gè)并發(fā)的Reduce函數(shù),用來將所有具有相同中間key值的中間value進(jìn)行合并。MapReduce相當(dāng)于一種主從架構(gòu),由一個(gè)JobTracker和若干個(gè)TaskTracker組成,其中JobTracker作為master節(jié)點(diǎn)負(fù)責(zé)作業(yè)的整體調(diào)度,用于接收輸入的數(shù)據(jù)并根據(jù)數(shù)據(jù)集的實(shí)際大小進(jìn)行分片,然后選擇TaskTracker并向其發(fā)送分片后的數(shù)據(jù)塊,由TaskTracker執(zhí)行具體的分解操作,執(zhí)行完成之后將中間結(jié)果存儲(chǔ)到本地磁盤中并將運(yùn)行結(jié)果和存儲(chǔ)位置.上報(bào)給J0hTracker,由JobTracker選擇下一步執(zhí)行reduce任務(wù)的節(jié)點(diǎn),進(jìn)行最后的歸并操作。MapReduce計(jì)算框架符合我們預(yù)期的應(yīng)用,最終我們選擇在Hadoop平臺(tái)MapReduce計(jì)算框架上搭建系統(tǒng)框架并進(jìn)行開發(fā)與研究,然后選擇數(shù)據(jù)庫類型進(jìn)行數(shù)據(jù)存儲(chǔ),
4數(shù)據(jù)庫選型及其優(yōu)勢(shì)
4.1關(guān)系型數(shù)據(jù)庫的應(yīng)用
關(guān)系型數(shù)據(jù)庫是利用二維表格存儲(chǔ)數(shù)據(jù),并且利用各表格之間的關(guān)系形成復(fù)雜的數(shù)據(jù)關(guān)系,這樣更便于們理解;而且關(guān)系型數(shù)據(jù)庫方便使用,可以常用的SQL語言進(jìn)行操作,便于維護(hù),具備豐富的完整性,大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率,信息管理系統(tǒng)中基礎(chǔ)信息類數(shù)據(jù)包括車輛基本信息、行駛路線信息、終端情況、司機(jī)信息等。這類數(shù)據(jù)一般數(shù)據(jù)量較小而且使用不是很頻繁,但各信息間的關(guān)系密切,主要用來給調(diào)度服務(wù)器查詢使用,對(duì)于這類信息,我們將采用關(guān)系型數(shù)據(jù)MySQL來存儲(chǔ)。
4.2非關(guān)系型數(shù)據(jù)庫的應(yīng)用
MongoDB默認(rèn)存儲(chǔ)引擎是內(nèi)存映射方式工作的,當(dāng)數(shù)據(jù)庫啟動(dòng)的時(shí)候會(huì)將數(shù)據(jù)和索引映射到內(nèi)存中,這樣使得操作數(shù)據(jù)時(shí)是直接的內(nèi)存讀寫而非磁盤讀寫,大大加快了訪問速度,當(dāng)然這也導(dǎo)致了數(shù)據(jù)庫占用內(nèi)存較高,對(duì)機(jī)器資源要求高的問題,好在MongoDB對(duì)于分布式擴(kuò)展的支持非常成熟且高效,可以通過增加廉價(jià)的商用服務(wù)器構(gòu)建集群的方式使用。根據(jù)智能公交信息管理系統(tǒng)的需求分析可知,系統(tǒng)運(yùn)行過程中,一般的關(guān)系型數(shù)據(jù)庫比較難滿足,MongoDB憑借快速、靈活、支持海量數(shù)據(jù)存儲(chǔ)等特點(diǎn)。實(shí)時(shí)數(shù)據(jù)包括車輛位置信息、車輛的速度信息、車內(nèi)載客量等,對(duì)環(huán)境數(shù)據(jù)更新頻率很快、數(shù)據(jù)量大,每隔一一兩秒(可配置)就會(huì)向服務(wù)器發(fā)送一一次,對(duì)于這類數(shù)據(jù),本軟件將利用非關(guān)系型數(shù)據(jù)庫MongoDB來進(jìn)行存儲(chǔ)。
根據(jù)感知數(shù)據(jù)的結(jié)構(gòu),在mysq1數(shù)據(jù)庫建立用戶信息表,記錄用戶登陸的相關(guān)信息,并在MongoDB建立數(shù)據(jù)表中記錄公交車線路號(hào)、位置信息、實(shí)時(shí)路況信息等數(shù)據(jù)。在數(shù)據(jù)庫存儲(chǔ)的數(shù)據(jù)進(jìn)入Hadoop平臺(tái)進(jìn)行數(shù)據(jù)處理,進(jìn)而實(shí)現(xiàn)系統(tǒng)的功能。
5數(shù)據(jù)采集選擇
當(dāng)公交車進(jìn)站時(shí),車載前端模塊中RFID閱讀器與公交站牌RFID電子標(biāo)簽建立連接,讀取站牌RFID標(biāo)簽信息;當(dāng)公交車處在未進(jìn)站的路段上時(shí),用GPS進(jìn)行實(shí)時(shí)定位,若車輛在路段上發(fā)生故障或擁堵時(shí)間超過時(shí)間時(shí)候,采用路段RFID技術(shù)進(jìn)行修正。
因?yàn)楫惒椒亲枞ㄐ诺墓ぷ鞣绞讲捎幂喸兊臋C(jī)制,同時(shí)在執(zhí)行事件的時(shí)候都采用非阻塞的方式進(jìn)行,很少發(fā)生阻塞,所以我們?cè)谌舾煞N網(wǎng)絡(luò)通信方式中決定采用異步非阻塞通信技術(shù)來設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)的數(shù)據(jù)采集模塊,快速的傳輸?shù)組ongoDB數(shù)據(jù)庫中,并且通過在公交路網(wǎng)設(shè)置的RFID標(biāo)簽,提取公交車存儲(chǔ)在RFID標(biāo)簽內(nèi)在線路的歷史運(yùn)行數(shù)據(jù),傳送到服務(wù)器進(jìn)行計(jì)算,預(yù)測(cè)公交到站時(shí)間。
6數(shù)據(jù)庫的搭建
6.1MySq1數(shù)據(jù)庫的搭建
選用MySq1數(shù)據(jù)庫存儲(chǔ)歷史數(shù)據(jù),命名數(shù)據(jù)庫名稱為Busrecords,存儲(chǔ)到對(duì)應(yīng)的集合,存儲(chǔ)的信息包括車輛服務(wù)的線路號(hào)、服務(wù)的時(shí)間、車輛經(jīng)過的站點(diǎn)。
6.2MongoDB的搭建
選用MongoDB存儲(chǔ)實(shí)時(shí)更新的公交信息。使用MongoDB時(shí)先創(chuàng)建一個(gè)數(shù)據(jù)庫,服務(wù)器軟件以BusRecords_realtime命名,接著在BusRecords_realtime數(shù)據(jù)庫中創(chuàng)建以Bus_coHections命名的集合,然后就可以在Bus_collections集合中插入、修改和讀取文檔(Document),把實(shí)時(shí)的路況信息和公交車具體位置、預(yù)計(jì)達(dá)到時(shí)間、客流量監(jiān)測(cè)、到站信息進(jìn)行存入,完成對(duì)數(shù)據(jù)的操作。
7總結(jié)
智能互聯(lián)公交軟件的研發(fā),可以及時(shí)地掌握車輛的地理位置,并對(duì)車輛的行駛進(jìn)行有效地監(jiān)督,使駕駛員在駕駛的過程中更加規(guī)范,從而可減少意外的發(fā)生通過軟件可查詢出車輛的運(yùn)行情況,提高了調(diào)度的合理性和科學(xué)性??梢蕴岣哕囕v的利用率和乘客的滿意度。