《食品安全導(dǎo)刊》刊號:CN11-5478/R 國際:ISSN1674-0270

登陸 | 注冊 | 設(shè)為首頁 | 加入收藏

基于Hadoop的食品安全預(yù)警系統(tǒng)架構(gòu)

2015-06-05 14:37:42 來源: 食品安全導(dǎo)刊

評論0  我來說兩句
  □ 凌文婧 鄭麗敏 中國農(nóng)業(yè)大學(xué)信息與電氣工程學(xué)院

  摘 要:針對海量的食品安全數(shù)據(jù),傳統(tǒng)食品安全預(yù)警系統(tǒng)架構(gòu)往往存在運算速度慢、處理效率低等缺點,本文提出了一種基于Hadoop的食品安全預(yù)警系統(tǒng)架構(gòu),該架構(gòu)以Hadoop框架為基礎(chǔ),分別設(shè)定了基于分布式爬蟲的數(shù)據(jù)獲取模塊、基于數(shù)理統(tǒng)計和數(shù)據(jù)挖掘的數(shù)據(jù)分析、存儲模塊和預(yù)警模塊。該架構(gòu)具有層次清晰、擴展性高等特點,適合運用和推廣。

  關(guān)鍵詞:Hadoop 食品安全 系統(tǒng)

  食品安全指的是食品應(yīng)當(dāng)符合無毒害、對人體健康不造成任何急慢性危害,并且包含一定營養(yǎng)物質(zhì)的特點。為了維護人民群眾在食品安全與保障方面的相關(guān)權(quán)益,國內(nèi)外建立了相應(yīng)的食品安全預(yù)警和快速反應(yīng)系統(tǒng),來預(yù)防食品突發(fā)性、群發(fā)性事件。

  目前較大的食品安全預(yù)警系統(tǒng)有:世界衛(wèi)生組織(WHO)的國際食品安全網(wǎng)絡(luò)(INFOSAN)、歐盟食品和飼料快速預(yù)警系統(tǒng)(RASFF)、美國疾病和預(yù)防中心(CDC)的FoodNet系統(tǒng)等[1]。我國國家質(zhì)檢總局建立了食品安全風(fēng)險快速預(yù)警與快速反應(yīng)系統(tǒng),來快速報告和處理食品突發(fā)事件[2];香港行政區(qū)在2007年啟動了食品安全快速預(yù)警系統(tǒng)(RAS);北京市在2012年啟用了食品安全短信預(yù)警平臺,來防治食品安全突發(fā)事件。

  國內(nèi)外通用的系統(tǒng)大多采用檢驗檢疫產(chǎn)生的數(shù)據(jù)來對食品安全進行預(yù)警,這些數(shù)據(jù)的特點是,準確、可靠且容易被處理。然而,食品安全數(shù)據(jù)不僅限于此來源,在互聯(lián)網(wǎng)絡(luò)中具有海量的食品安全相關(guān)信息。這些信息大多與媒體報導(dǎo)、網(wǎng)友發(fā)帖、政府發(fā)布為主要來源,具有多種來源渠道和廣泛的受眾[3]。因而,有效地利用網(wǎng)絡(luò)中海量的食品安全數(shù)據(jù)來搭建食品安全預(yù)警系統(tǒng)具有廣闊的前景。

  Hadoop是一個使用Java編寫的開源分布式框架,它在存儲和計算方面(分別由Hadoop分布式文件系統(tǒng)HDFS和Map/Reduce編程模型實現(xiàn))與普通的現(xiàn)有的單節(jié)點計算相比具有顯著優(yōu)勢[4]。使用Hadoop平臺來獲取和處理網(wǎng)絡(luò)信息、搭建食品安全預(yù)警系統(tǒng),具有處理速度快、并行化程度高、預(yù)警及時的特點。

  1 Hadoop開發(fā)環(huán)境搭建

  本文使用的Hadoop版本是其在Linux平臺上的一個Java開源版本。在開源操作系統(tǒng)Linux環(huán)境中進行Hadoop開源平臺的搭建,首先需要安裝Java軟件開發(fā)工具包(Java SE Development Kit,JDK)并配置環(huán)境變量,使得基于Java語言的Hadoop代碼能夠順利運行;然后進行網(wǎng)絡(luò)橋接和配置,將各物理機和虛擬機的IP地址設(shè)置在同一個網(wǎng)段,且固定IP;最后進行Hadoop平臺的安裝及配置,并監(jiān)控各個節(jié)點的運行狀況。以下我們將詳細闡述各個階段的配置過程。

  1.1 網(wǎng)絡(luò)橋接和配置

  為使分布式平臺的各主機節(jié)點能被其他節(jié)點通過網(wǎng)絡(luò)地址訪問到,將網(wǎng)絡(luò)地址改寫為同局域網(wǎng)內(nèi)的固定IP,因為本文中使用了KVM虛擬機技術(shù)配置網(wǎng)絡(luò),因而需要對虛擬機進行網(wǎng)絡(luò)橋接,使主機和節(jié)點在同一個網(wǎng)段上。本文使用的是bridge的網(wǎng)絡(luò)連接方式,將宿主機和客戶機設(shè)定在同一個局域網(wǎng)中,有利于相互訪問。

  另外,為了使得各個虛擬機之間能夠順暢訪問,我們關(guān)閉了Linux系統(tǒng)中自帶的防火墻功能。為了保障Hadoop系統(tǒng)間的信息安全,我們使用SSH協(xié)議來為遠程登錄會話提供安全性。在創(chuàng)建一對密鑰后,將公用密鑰寄放在NameNode宿主機中,實現(xiàn)NameNode和DataNode之間的連通(DataNode之間并無網(wǎng)絡(luò)相連)。在通信過程中,我們使用RSA加密算法加密。網(wǎng)絡(luò)橋接和配置完成后,形成了倒樹狀的邏輯結(jié)構(gòu)。

  1.2 Hadoop平臺的安裝及配置

  本文使用兩臺服務(wù)器,分別部署2個和3個虛擬機來假設(shè)Hadoop平臺,共計為7個節(jié)點。這些節(jié)點均為CentOS系統(tǒng),并統(tǒng)一安裝了JDK1.7.0_25。本系統(tǒng)使用Apache基金會發(fā)布的Hadoop2.2.0版本,該版本的特點為運行較為穩(wěn)定,且與JDK1.7.0_25互相兼容。在配置Hadoop的過程中,需要在hadoop/slaves文件中加入DataNode的IP地址,使得Hadoop在項目運行過程中可通過該IP訪問DataNode。我們將服務(wù)器的/etc/hosts文件中設(shè)置為對應(yīng)的主機名和固定IP地址,來方便SSH的訪問。

  然后配置SSH的RSA加密訪問,首先使用ssh-keygen生成一對密鑰,接著將公鑰/root/.ssh/id_rsa.pub拷貝到DataNode服務(wù)器中,使得DataNode可與NameNode進行安全的數(shù)據(jù)交流。接下來我們啟動hadoop并進行測試,首先啟動NameNode,接著分別啟動DataNode,并設(shè)置好日志存儲位置,以便對任務(wù)運行狀況進行監(jiān)視。

  1.3 在Hadoop平臺上進行任務(wù)部署

  本系統(tǒng)通過網(wǎng)頁http協(xié)議訪問相關(guān)端口(定為localhost:50030端口和localhost:50070端口)前者監(jiān)控MapReduce任務(wù)的運行情況,資源占用等,后者為監(jiān)控各個DataNode子節(jié)點的運行狀況。如圖1所示。

  同時,可通過控制臺的hadoop命令來運行所編寫的Java程序,首先需要將編寫的Java程序?qū)氲紿DFS分布式文件系統(tǒng)中,然后運行hadoop命令對程序進行執(zhí)行。在程序執(zhí)行的過程中,同樣可使用網(wǎng)頁端口來監(jiān)視各節(jié)點資源分配情況,任務(wù)處理狀況和查看運行日志。

\

  2 食品安全預(yù)警系統(tǒng)架構(gòu)

  本系統(tǒng)的系統(tǒng)架構(gòu)如圖2所示。主要分為數(shù)據(jù)獲取模塊、數(shù)據(jù)分析存儲模塊和數(shù)據(jù)展示模塊。其中,數(shù)據(jù)獲取模塊首先分析用戶自定義的數(shù)據(jù)挖掘策略,然后通過網(wǎng)絡(luò)爬蟲結(jié)合食品安全數(shù)據(jù)庫來對網(wǎng)絡(luò)中的食品安全數(shù)據(jù)進行爬取。所獲取到的網(wǎng)絡(luò)輿情信息結(jié)合實驗室監(jiān)測數(shù)據(jù),共同存儲在云存儲服務(wù)器中,進行數(shù)據(jù)備份。

  在數(shù)據(jù)分析模塊,我們使用了統(tǒng)計學(xué)和數(shù)據(jù)挖掘的分析方法,來對數(shù)據(jù)獲取模塊得到的食品安全信息進行處理,從而得到食品安全預(yù)警信息。我們從食品安全數(shù)據(jù)的時間分布、空間分布以及違禁項分布3個方面來分析所獲取的數(shù)據(jù)。最后將所得到的預(yù)警信息生成食品安全預(yù)警報告,并將此報告通過數(shù)據(jù)展示模塊匯報給用戶。

  我們搭建的Hadoop集群在該食品安全預(yù)警系統(tǒng)中有兩處應(yīng)用。首先在使用爬蟲進行數(shù)據(jù)獲取的時候,爬蟲程序架設(shè)在Hadoop集群之上,充分利用集群的運算和處理性能,來使用爬蟲進行并行化爬取食品安全數(shù)據(jù);其次,在進行數(shù)據(jù)挖掘和分析的過程中,Hadoop集群被用于處理和分析網(wǎng)絡(luò)中獲取的食品安全數(shù)據(jù),最終得出食品安全預(yù)警信息,輸出到數(shù)據(jù)展示的用戶端。

  3 數(shù)據(jù)獲取模塊

  數(shù)據(jù)獲取模塊以爬蟲技術(shù)的應(yīng)用為核心,主要分為Frontier模塊、ToeThread模塊和Processor模塊,這3個模塊的作用分別為:爬取網(wǎng)頁中的URI,向線程提供鏈接;實現(xiàn)多線程運行;實現(xiàn)爬蟲處理信息的邏輯結(jié)構(gòu)等。見圖3。

\

  Frontier模塊用于向線程提供鏈接,它的作用主要是:保存等待處理的鏈接、記錄那些已經(jīng)被處理過的鏈接。在Frontier實現(xiàn)的過程中,為了解決大數(shù)據(jù)量,多并發(fā)存在的問題,因而實現(xiàn)了Berkeley Database嵌入式數(shù)據(jù)庫,它能夠按“key/value”方式來保存數(shù)據(jù)。

  在ToeThread模塊中,提供了一個標準的線程池ToePool,用于管理所有的抓取線程,從而更有效更快速的抓取網(wǎng)頁內(nèi)容。在Processor模塊中,首先進行預(yù)抓取,接著進行網(wǎng)頁抓取活動,然后進行網(wǎng)頁內(nèi)容的提取,并進行寫入,最后完成抓取活動的收尾工作。如圖4所示。

  4 食品安全預(yù)警系統(tǒng)

  功能設(shè)計

  為了從數(shù)據(jù)獲取模塊獲得的數(shù)據(jù)中提取預(yù)警信息,本系統(tǒng)設(shè)計了預(yù)警數(shù)據(jù)分析與挖掘模塊。通過對網(wǎng)絡(luò)食品安全信息進行數(shù)據(jù)分析和挖掘后,當(dāng)發(fā)現(xiàn)預(yù)警因子的數(shù)據(jù)值超過預(yù)警設(shè)定值時,預(yù)警系統(tǒng)發(fā)出預(yù)警信息,并呈遞給用戶處理。以下小節(jié)將詳細敘述該預(yù)警過程:

  4.1 預(yù)警因子的確定

  參考國家對食品安全的檢測標準,我們將預(yù)警因子設(shè)定為以下幾個分類:添加劑、重金屬超標、獸藥殘留、微生物超標、違禁物添加。并對這幾類因子設(shè)定了不同的預(yù)警閾值。比如,在國家標準中,添加劑、重金屬、獸藥殘留和微生物這4個指標允許有一定量的檢出,但不允許超過國家限定的含量。因而,當(dāng)這幾類預(yù)警因子達到一定標準的時候,預(yù)警提示才會發(fā)布;而作為違禁物添加的項目,國家規(guī)定不得檢出,這類物質(zhì)一旦出現(xiàn),無論含量是否較大都將發(fā)布預(yù)警提示。

  4.2 預(yù)警信息的獲取

  本系統(tǒng)通過兩類方法來獲取食品安全預(yù)警信息。

  數(shù)據(jù)分析的方法,主要是統(tǒng)計學(xué)分析和數(shù)據(jù)擬合。我們將各項食品的預(yù)警因子在時間上進行趨勢擬合,如近期擬合曲線明顯呈上升趨勢(如曲線斜率超過限定值),則認為該食品的此項預(yù)警因子的檢出呈明顯上升趨勢,此時即發(fā)布預(yù)警信息;否則則認為近期該項目處于安全狀況,不發(fā)布預(yù)警信息。

  數(shù)據(jù)挖掘方法,本項目使用關(guān)聯(lián)規(guī)則挖掘方法,來對各項因子之間的潛在規(guī)則進行探尋。例如,通過歷年數(shù)據(jù)關(guān)聯(lián)規(guī)則挖掘,發(fā)現(xiàn)當(dāng)預(yù)警因子A明顯升高時,預(yù)警因子B也隨之升高,且A和B出現(xiàn)的相關(guān)性R2大于0.8,則認為預(yù)警因子A和B呈強相關(guān)性。依照此規(guī)律,當(dāng)預(yù)警因子A的檢測超過閾值時,應(yīng)當(dāng)考慮同時發(fā)布預(yù)警因子B的預(yù)警信息。

  5 總結(jié)和展望

  本文通過對Hadoop平臺和爬蟲技術(shù)的研究,提出了一種基于Hadoop的食品安全預(yù)警系統(tǒng)架構(gòu)。該架構(gòu)以Hadoop分布式系統(tǒng)為底層框架,結(jié)合使用爬蟲技術(shù)來獲取食品安全數(shù)據(jù)。該架構(gòu)適合應(yīng)用于對海量網(wǎng)絡(luò)食品安全數(shù)據(jù)進行處理和預(yù)警。后續(xù)工作可集中在爬蟲策略的改進上,使其爬取過程更適合食品安全網(wǎng)站的信息發(fā)布特點;也可進一步研究Hadoop平臺上的任務(wù)調(diào)度和優(yōu)化問題,進行任務(wù)調(diào)度、優(yōu)化及負載的實驗,使該系統(tǒng)達到最合理的任務(wù)分配方式。

  參考文獻

  [1] Marvin H J P, Kleter G A, Prandini A, et al. Early identification systems for emerging foodborne hazards [J]. Food and Chemical Toxicology, 2009, 47(5):915-926.

  [2] Law W T Y, Chiu D K W, Hu H, et al. An advanced rapid alert system for food safety[C]//e-Business Engineering (ICEBE),2012 IEEE Ninth International Conference on. IEEE, 2012:361-366.

  [3] 劉文,李強.食品安全網(wǎng)絡(luò)輿情監(jiān)測與干預(yù)研究初探[J].中國科技論壇, 2012(7):44-49.

  [4] 王彥明.近年來Hadoop國內(nèi)研究進展[J].現(xiàn)代情報,2014,34(8):4-19.

微信關(guān)注

相關(guān)熱詞搜索:食品安全 架構(gòu) 系統(tǒng)

[責(zé)任編輯:]

參與評論

食安中國 Copyright ? nhzmytdj.cn 2012-2015 版權(quán)所有 海淀分局網(wǎng)絡(luò)備案編號:1101085079,1101055372京ICP備09075303號-1

地址:北京市海淀區(qū)西四環(huán)中路39號萬地名苑2號樓504室(郵編100039) 聯(lián)系電話: 010-88825653 業(yè)務(wù)咨詢:010-88825689