


摘 要 隨著網絡應用的普及和網絡的深入發展,網絡上傳輸的數據量越來越大,在網絡安全管理方面要求越來越嚴格,如何有效的存儲、查詢、分析海量的網絡日志就成了網絡安全管理方面的新挑戰。云計算技術的完善和普及,為解決這類問題提供了新的方法,云計算機就是通過網絡系統將多臺計算機組成一個分布式系統,從而完成海量數據的存儲和計算。Hadoop是一個用于構建云計算機平臺的開源系統,為了存儲和分析這些海量的數據,可以利用Hadoop分布系統下對網絡日志的存儲、查詢、分析,通過該系統的應用可以節約存儲成本、提高查詢效率,為網絡的安全管理、網絡優化提供數據支持。
【關鍵詞】Hadoop 大數據 Hive
1 引言
隨著網絡應用的深度普及,人們在學習、工作、生活越來越離不開網絡,所以在網絡的運行過程中,會產生海量的網絡日志,如何通過海量的日志,來分析用用戶上網行的特點,為校園網絡的優化、網絡安全、提供科學決策的依據,我們首先要解決的問題是如何存存儲、查詢、分析這些大數,如果用傳統的單一節點的計算機能力來處理這些海量的數據已經不能滿足需求。利用云計算技術,通過一定的算法,可以把這些大數據進進行清洗、存儲、分析,為校園網絡安全運行提供數據支持,本文通過Hadoop系統,實現了基于Hive數據倉庫的網絡日志行為的存儲和分析。
2 主要相關技術
2.1 hadoop系統
Hadoop是應用于大規模數據的開發和運行處理的軟件平臺,是Appach的一個用java語言實現開源軟件框架,實現了在大量計算機組成的集群中對海量數據進行分布式計算,Hadoop框架中最核心設計就是:HDFS和MapReduce,HDFS提供了海量數據的存儲,MapReduce提供了對數據的計算。
2.2 Hive數據倉庫
Hive是運行于Hadoop下的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能。Hive 的本質是將SQL轉換為MapReduce程序,可以將結構化的數據文件映射為一張數據庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行。并按照該計劃生成MapReduce任務后交給Hadoop集群處理,Hive的體系結構可以分為以下部分:
(1)用戶接口,Hive主要有三個用戶接口,分別為:命令接品(CLI)、Jdbc/Odbc接口、WEB接口。
(2)Hive將元數據存儲在數據庫中,如mysql, Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。
(3)解釋器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,并在隨后有MapReduce調用執行。
(4)Hive的數據存儲在HDFS中,大部分的查詢、計算由MapReduce完成, Hive將元數據存儲在RDBMS中。
3 存儲和分析網絡日志
3.1 利用hive存儲網絡日志
3.1.1 數據采集及格式
測試的數據來源于校園網絡用戶上網行為記錄的日志,該日的特點是實時記錄了認證用戶訪問網絡的行為,記錄數據量非常大,每天將近有30G,每條記錄包含如下信息:流水號、訪問時間、訪問的目標url或IP、登錄賬號、源MAC、源IP、目標端口、訪問類型、訪問目標IP、源端口,其格式為TXT文件,日志記錄的信息可以分析校園網絡的運行情況、用戶上網行為特點及網絡輿情的監控。
3.1.2 數據的存儲
用戶在校園網絡上每一個動作都會產生一條記錄,所以經過長時間的網絡運行,這些海量的數據查詢存儲就成為一個必須解決的問題,如果用傳統的數據庫如:MSsql、mysql、orc等,就顯得力不從心.如果這些數據不加以分析利用,就失去了它的價值,根據Hive的特點,可以將網絡日志存儲在Hive數據倉庫中,利用Hadoop分布式計算提高數據的運算速度,其存儲的過程設計如圖1所示。
整個流程的工作過程:
(1)原始記錄獲取,可以通過網關設備或認證服務器獲取原始數據,在原始的數據中包含了許多干擾的數據,所以必須對數據進行處理。
(2)數據清洗,我們可以利簡單的python腳本語言進行數據的清洗,提取對我們分析數據有用的信息,如用戶賬號、登時間、注銷時間、在線時長、源IP地址、源MAC地址、目標IP、訪問類型等,經過清洗的數據大小只是原來的二分之一,把原始數據分別存為兩個hive能夠導入的TXT文件,這兩個文件分別存有用戶登陸校園網絡的信息和用戶訪問網絡行為記錄。
(3)建立hive數據倉庫,可以使用hive提供的CLI接口,編寫相應的shell腳本進行批量的導入,也可以使用hive提供的API接口,通過編寫程序進行導入,其實現如下:
方法一、選擇最簡單的CLI接口,首選在Linux 創建如下腳本:
#!/bin/bash
hive< create external tableuserlog(id string) row format delimited fields terminated by'\t' lines terminated by'\n' stored as textfile; load data local inpath'/home/hadoop/hd/test*.txt' into table test_1; EOF 以上的shell腳本功能實現了在hive上創建用戶登陸網絡信息記錄表,并把相應的記錄文件導入到hive數據倉庫中,我可以應用相同的方法在hive中創網絡用戶行為記錄user_activit表。
方法二,可以用編寫程序的方式實現,例如用python程序實現的操作。
以上兩種方法的最終目的是把數據存儲到hive數據倉庫中,通過比較方法一操作簡單執行效率高。
3.2 利用Hive數據倉庫進行網絡日志的分析
Hive數據倉庫的特點是基于hadoop系統之上的數據庫,并將SQL轉換為MapReduce程序,hive不適合用于聯機online事務處理,也不提供實時查詢功能。它最適合應用在基于大量不可變數據的批處理作業,所以可以用hive來分析大數據,在校園網絡環境中,由于長時間的運行,產生了大量的日志,如果我們用傳統的數據庫工具只能存儲部分數據,對于分析網絡的運行情況及關鍵數據的查尋就會變得非常困難和耗時。所以我可以利用hive數據工具對網絡行為的分析,在hive中提供了類似sql的操作。
3.2.1 在網絡安全管理中查詢
在網絡安全分析中我們可以利用Hive的SQL語句進行查詢,例如某個網址或IP地址是否被學生大量訪問,我們要及時了解學生的思想狀況及形為表現,就可以利用hive查詢分析大量的網絡日志并對其進行思想教育,或者我們查詢非法IP地址在一個星期內被訪問的情況,可以在hive的CL下輸入語句:selecuserId,usertim,fromuserlog where ip=“a.b.c.d”and usetime=”x”就可以查詢到我們想要的結果。
3.2.2 在網絡帶寬的優化
為了提高網絡的服務質量,我們可以從網絡日志中,通過hive的內置窗口函數進行分區排序、動態Group by、Top N 、累計計算、層次查詢,可以統計和分析某段時間內被大量訪問的目標地址和提供的服服類型,例如視頻服務網站,我們就可通增加緩存服務器,提高訪問速度,減輕出口帶寬的壓力。
3.2.3 為進一步數據挖掘提供數據
在hive中內置了大量的分析函數,可以根據需要的數據內容來選擇相應的操作,為我們數據深度分析面提供有用的數據,例如可以通行列轉的函數得到某個用戶一分鐘內訪問網址的記錄,為下一步運用mouht進行用戶行為深度分析分析提供準確的數據。
3.3 實驗環境搭建
為了驗證Hive數據倉庫的可行性,所搭建的實驗環境為:
(1)硬件環境:CPU: 四個Intel 8核Xeon E7-4820處理器,內存128G,硬盤空間3T。
(2)虛擬機系統:基于VMWare ESXI5.0 創建5臺虛擬,每臺的配置為:2個雙核CPU,8G內存,60G硬盤,ubuntu14.04操作系統。
(3)Hadoop/hive集群:5臺虛擬機都安裝Hadoop2.6.0,其中的一臺用來作為HDFS的名稱節點,并安裝Hive-1.2.1,其余4臺作為數據節點。
3.3.1 數據的存儲驗證
在Hadoop集群的主節點下利用Hive提供的CLI接口,將網絡用戶一個星期的日志導入到Hive數據倉庫中,經過驗證在hive 數據倉庫中的數據勻可以正常操作,如圖2運行。
通過圖2所示,Hive 能在hadoop中把SQL命令解析為并生23個Map和25個Reduce任務后交給Hadoop集群處理,所以經過驗證,利用Hive 存儲網絡用戶日志的方案是可行的。
3.3.2 數據的分析驗證
在hive中統計每天點擊率最高的網站,可以在hive的命令接口中輸入如下的命令:
Select usetime,usIP,count(*),C from userlog group by usetimeusIP>>dt.txt
以上命令執行后會生成一個結果文件,如圖3所示。
用以上的分析方法分別對不同大小的數據進行驗證,圖4是運行時間對比。
從以上結果可以看出,hive 對小文件操作時,延時性比較大,但是對大文件的作操作時,他的優勢就發揮出來。
4 結語
本文結合具體的實例,運用Hadoop系統下的Hive數據倉庫進行存儲校園網絡用戶上網行為的大量日志,通過驗證Hive 數據倉庫可以應用于校園網絡數據非時實交互的應用環境,并且利用hive 分析數據,可以省設計程序代碼的復雜的工作,提高我們分數據的效率,能夠從大量的網絡日志中取有用的數據,使其成為學校貴的數字資產。
參考文獻
[1]林和,安王強.云計算與云計算[EB/OL]ttp://www.linkwan.com/gb/tech/htm/1490.htm,2011.
[2]吳朝暉,陳華鈞.空間大數據信息基礎設施[M].浙江:浙江大學出版社,2013(01):38.
[3]陸嘉恒.Hadoop實戰[M].北京:機械工業出版社,2012(11):2.
[4]張良均,樊哲.Hadoop大數據分析與挖掘實戰[M].北京:機械工業出版社,2015(12):34.
作者簡介
楊丕仁(1979-),男,云南省云縣人。現工作于大理大學現代教育技術中心,實驗師、碩士。主要研究方向為網絡安全與管理。
作者單位
大理大學現代教育技術中 心云南省大理白族自治州大理市 671003