基于Hadoop的食品安全預警系統架構

2015-06-05 14:37:42 來(lái)源: 食品安全導刊

  □ 凌文婧 鄭麗敏 中國農業(yè)大學(xué)信息與電氣工程學(xué)院

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

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

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

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

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

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

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

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

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

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

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

  1.2 Hadoop平臺的安裝及配置

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

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

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

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

  同時(shí),可通過(guò)控制臺的hadoop命令來(lái)運行所編寫(xiě)的Java程序,首先需要將編寫(xiě)的Java程序導入到HDFS分布式文件系統中,然后運行hadoop命令對程序進(jìn)行執行。在程序執行的過(guò)程中,同樣可使用網(wǎng)頁(yè)端口來(lái)監視各節點(diǎn)資源分配情況,任務(wù)處理狀況和查看運行日志。

  2 食品安全預警系統架構

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

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

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

  3 數據獲取模塊

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

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

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

  4 食品安全預警系統

  功能設計

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

  4.1 預警因子的確定

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

  4.2 預警信息的獲取

  本系統通過(guò)兩類(lèi)方法來(lái)獲取食品安全預警信息。

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

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

  5 總結和展望

  本文通過(guò)對Hadoop平臺和爬蟲(chóng)技術(shù)的研究,提出了一種基于Hadoop的食品安全預警系統架構。該架構以Hadoop分布式系統為底層框架,結合使用爬蟲(chóng)技術(shù)來(lái)獲取食品安全數據。該架構適合應用于對海量網(wǎng)絡(luò )食品安全數據進(jìn)行處理和預警。后續工作可集中在爬蟲(chóng)策略的改進(jìn)上,使其爬取過(guò)程更適合食品安全網(wǎng)站的信息發(fā)布特點(diǎn);也可進(jìn)一步研究Hadoop平臺上的任務(wù)調度和優(yōu)化問(wèn)題,進(jìn)行任務(wù)調度、優(yōu)化及負載的實(shí)驗,使該系統達到最合理的任務(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ò )輿情監測與干預研究初探[J].中國科技論壇, 2012(7):44-49.

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

微信關(guān)注

相關(guān)熱詞搜索:食品安全 架構 系統

[責任編輯:]

食安觀(guān)察網(wǎng) ? 2012-2025 健食視界版權所有

京ICP備2023024400號 京公網(wǎng)安備11010702002614

地址:北京市石景山區城通街26號院(郵編100043)

值班電話(huà):18500121702

国产亚洲成AⅤ人片在线观看麻豆_国产毛片久久久久久国产毛片_精品国产自在久久现线拍_久久天天躁狠狠躁夜夜