基于Hadoop的食品安全預警系統架構
摘 要:針對海量的食品安全數據,傳統食品安全預警系統架構往往存在運算速度慢、處理效率低等缺點,本文提出了一種基于Hadoop的食品安全預警系統架構,該架構以Hadoop框架為基礎,分別設定了基于分布式爬蟲的數據獲取模塊、基于數理統計和數據挖掘的數據分析、存儲模塊和預警模塊。該架構具有層次清晰、擴展性高等特點,適合運用和推廣。
關鍵詞:Hadoop 食品安全 系統
食品安全指的是食品應當符合無毒害、對人體健康不造成任何急慢性危害,并且包含一定營養物質的特點。為了維護人民群眾在食品安全與保障方面的相關權益,國內外建立了相應的食品安全預警和快速反應系統,來預防食品突發性、群發性事件。
目前較大的食品安全預警系統有:世界衛生組織(WHO)的國際食品安全網絡(INFOSAN)、歐盟食品和飼料快速預警系統(RASFF)、美國疾病和預防中心(CDC)的FoodNet系統等[1]。我國國家質檢總局建立了食品安全風險快速預警與快速反應系統,來快速報告和處理食品突發事件[2];香港行政區在2007年啟動了食品安全快速預警系統(RAS);北京市在2012年啟用了食品安全短信預警平臺,來防治食品安全突發事件。
國內外通用的系統大多采用檢驗檢疫產生的數據來對食品安全進行預警,這些數據的特點是,準確、可靠且容易被處理。然而,食品安全數據不僅限于此來源,在互聯網絡中具有海量的食品安全相關信息。這些信息大多與媒體報導、網友發帖、政府發布為主要來源,具有多種來源渠道和廣泛的受眾[3]。因而,有效地利用網絡中海量的食品安全數據來搭建食品安全預警系統具有廣闊的前景。
Hadoop是一個使用Java編寫的開源分布式框架,它在存儲和計算方面(分別由Hadoop分布式文件系統HDFS和Map/Reduce編程模型實現)與普通的現有的單節點計算相比具有顯著優勢[4]。使用Hadoop平臺來獲取和處理網絡信息、搭建食品安全預警系統,具有處理速度快、并行化程度高、預警及時的特點。
1 Hadoop開發環境搭建
本文使用的Hadoop版本是其在Linux平臺上的一個Java開源版本。在開源操作系統Linux環境中進行Hadoop開源平臺的搭建,首先需要安裝Java軟件開發工具包(Java SE Development Kit,JDK)并配置環境變量,使得基于Java語言的Hadoop代碼能夠順利運行;然后進行網絡橋接和配置,將各物理機和虛擬機的IP地址設置在同一個網段,且固定IP;最后進行Hadoop平臺的安裝及配置,并監控各個節點的運行狀況。以下我們將詳細闡述各個階段的配置過程。
1.1 網絡橋接和配置
為使分布式平臺的各主機節點能被其他節點通過網絡地址訪問到,將網絡地址改寫為同局域網內的固定IP,因為本文中使用了KVM虛擬機技術配置網絡,因而需要對虛擬機進行網絡橋接,使主機和節點在同一個網段上。本文使用的是bridge的網絡連接方式,將宿主機和客戶機設定在同一個局域網中,有利于相互訪問。
另外,為了使得各個虛擬機之間能夠順暢訪問,我們關閉了Linux系統中自帶的防火墻功能。為了保障Hadoop系統間的信息安全,我們使用SSH協議來為遠程登錄會話提供安全性。在創建一對密鑰后,將公用密鑰寄放在NameNode宿主機中,實現NameNode和DataNode之間的連通(DataNode之間并無網絡相連)。在通信過程中,我們使用RSA加密算法加密。網絡橋接和配置完成后,形成了倒樹狀的邏輯結構。
1.2 Hadoop平臺的安裝及配置
本文使用兩臺服務器,分別部署2個和3個虛擬機來假設Hadoop平臺,共計為7個節點。這些節點均為CentOS系統,并統一安裝了JDK1.7.0_25。本系統使用Apache基金會發布的Hadoop2.2.0版本,該版本的特點為運行較為穩定,且與JDK1.7.0_25互相兼容。在配置Hadoop的過程中,需要在hadoop/slaves文件中加入DataNode的IP地址,使得Hadoop在項目運行過程中可通過該IP訪問DataNode。我們將服務器的/etc/hosts文件中設置為對應的主機名和固定IP地址,來方便SSH的訪問。
然后配置SSH的RSA加密訪問,首先使用ssh-keygen生成一對密鑰,接著將公鑰/root/.ssh/id_rsa.pub拷貝到DataNode服務器中,使得DataNode可與NameNode進行安全的數據交流。接下來我們啟動hadoop并進行測試,首先啟動NameNode,接著分別啟動DataNode,并設置好日志存儲位置,以便對任務運行狀況進行監視。
1.3 在Hadoop平臺上進行任務部署
本系統通過網頁http協議訪問相關端口(定為localhost:50030端口和localhost:50070端口)前者監控MapReduce任務的運行情況,資源占用等,后者為監控各個DataNode子節點的運行狀況。如圖1所示。
同時,可通過控制臺的hadoop命令來運行所編寫的Java程序,首先需要將編寫的Java程序導入到HDFS分布式文件系統中,然后運行hadoop命令對程序進行執行。在程序執行的過程中,同樣可使用網頁端口來監視各節點資源分配情況,任務處理狀況和查看運行日志。
2 食品安全預警系統架構
本系統的系統架構如圖2所示。主要分為數據獲取模塊、數據分析存儲模塊和數據展示模塊。其中,數據獲取模塊首先分析用戶自定義的數據挖掘策略,然后通過網絡爬蟲結合食品安全數據庫來對網絡中的食品安全數據進行爬取。所獲取到的網絡輿情信息結合實驗室監測數據,共同存儲在云存儲服務器中,進行數據備份。
在數據分析模塊,我們使用了統計學和數據挖掘的分析方法,來對數據獲取模塊得到的食品安全信息進行處理,從而得到食品安全預警信息。我們從食品安全數據的時間分布、空間分布以及違禁項分布3個方面來分析所獲取的數據。最后將所得到的預警信息生成食品安全預警報告,并將此報告通過數據展示模塊匯報給用戶。
我們搭建的Hadoop集群在該食品安全預警系統中有兩處應用。首先在使用爬蟲進行數據獲取的時候,爬蟲程序架設在Hadoop集群之上,充分利用集群的運算和處理性能,來使用爬蟲進行并行化爬取食品安全數據;其次,在進行數據挖掘和分析的過程中,Hadoop集群被用于處理和分析網絡中獲取的食品安全數據,最終得出食品安全預警信息,輸出到數據展示的用戶端。
3 數據獲取模塊
數據獲取模塊以爬蟲技術的應用為核心,主要分為Frontier模塊、ToeThread模塊和Processor模塊,這3個模塊的作用分別為:爬取網頁中的URI,向線程提供鏈接;實現多線程運行;實現爬蟲處理信息的邏輯結構等。見圖3。
Frontier模塊用于向線程提供鏈接,它的作用主要是:保存等待處理的鏈接、記錄那些已經被處理過的鏈接。在Frontier實現的過程中,為了解決大數據量,多并發存在的問題,因而實現了Berkeley Database嵌入式數據庫,它能夠按“key/value”方式來保存數據。
在ToeThread模塊中,提供了一個標準的線程池ToePool,用于管理所有的抓取線程,從而更有效更快速的抓取網頁內容。在Processor模塊中,首先進行預抓取,接著進行網頁抓取活動,然后進行網頁內容的提取,并進行寫入,最后完成抓取活動的收尾工作。如圖4所示。
4 食品安全預警系統
功能設計
為了從數據獲取模塊獲得的數據中提取預警信息,本系統設計了預警數據分析與挖掘模塊。通過對網絡食品安全信息進行數據分析和挖掘后,當發現預警因子的數據值超過預警設定值時,預警系統發出預警信息,并呈遞給用戶處理。以下小節將詳細敘述該預警過程:
4.1 預警因子的確定
參考國家對食品安全的檢測標準,我們將預警因子設定為以下幾個分類:添加劑、重金屬超標、獸藥殘留、微生物超標、違禁物添加。并對這幾類因子設定了不同的預警閾值。比如,在國家標準中,添加劑、重金屬、獸藥殘留和微生物這4個指標允許有一定量的檢出,但不允許超過國家限定的含量。因而,當這幾類預警因子達到一定標準的時候,預警提示才會發布;而作為違禁物添加的項目,國家規定不得檢出,這類物質一旦出現,無論含量是否較大都將發布預警提示。
4.2 預警信息的獲取
本系統通過兩類方法來獲取食品安全預警信息。
數據分析的方法,主要是統計學分析和數據擬合。我們將各項食品的預警因子在時間上進行趨勢擬合,如近期擬合曲線明顯呈上升趨勢(如曲線斜率超過限定值),則認為該食品的此項預警因子的檢出呈明顯上升趨勢,此時即發布預警信息;否則則認為近期該項目處于安全狀況,不發布預警信息。
數據挖掘方法,本項目使用關聯規則挖掘方法,來對各項因子之間的潛在規則進行探尋。例如,通過歷年數據關聯規則挖掘,發現當預警因子A明顯升高時,預警因子B也隨之升高,且A和B出現的相關性R2大于0.8,則認為預警因子A和B呈強相關性。依照此規律,當預警因子A的檢測超過閾值時,應當考慮同時發布預警因子B的預警信息。
5 總結和展望
本文通過對Hadoop平臺和爬蟲技術的研究,提出了一種基于Hadoop的食品安全預警系統架構。該架構以Hadoop分布式系統為底層框架,結合使用爬蟲技術來獲取食品安全數據。該架構適合應用于對海量網絡食品安全數據進行處理和預警。后續工作可集中在爬蟲策略的改進上,使其爬取過程更適合食品安全網站的信息發布特點;也可進一步研究Hadoop平臺上的任務調度和優化問題,進行任務調度、優化及負載的實驗,使該系統達到最合理的任務分配方式。
參考文獻
[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] 劉文,李強.食品安全網絡輿情監測與干預研究初探[J].中國科技論壇, 2012(7):44-49.
[4] 王彥明.近年來Hadoop國內研究進展[J].現代情報,2014,34(8):4-19.

[責任編輯:]

相關閱讀
- (2014-06-16)家樂福與您一起努力建設食品安全誠信
- (2014-06-16)以誠信保障安全 中國食品安全誠信宣言大會在京召開
- (2014-06-16)張志剛:提高誠信自律,共為食品安全獻計獻策
- (2014-06-17)食品安全治理:挖根去皮方得實質效果
- (2014-06-17)搞好食品安全農產品生產是關鍵
參與評論