本發(fā)明屬于計算機系統(tǒng)領域,尤其涉及一種高效處理ip地址區(qū)域定位的方法和系統(tǒng)。
背景技術:
隨著internet技術的飛速發(fā)展,運行于internet上的各種應用和服務也隨之大量涌現(xiàn),大數(shù)據(jù)的時代已經(jīng)來臨。在生活中,通常需要對ip地址進行提取區(qū)域地址,但是隨著數(shù)據(jù)海量增加,直接利用本地計算對ip地址進行提取區(qū)域地址,會消耗大量資源和內(nèi)存,并且效率以及ip地址定位覆蓋率低。
為了解決上述技術問題,人們進行了長期的探索,例如中國專利公開了一種ip地址定位方法和cdn調(diào)度方法以及裝置[申請?zhí)枺篶n201410401480.2],該ip地址定位方法包括獲取與目標ip地址關聯(lián)的ip地址,所述關聯(lián)的ip地址是至少一個,所述關聯(lián)的ip地址的地理位置信息是已知的;根據(jù)預先設置的所述關聯(lián)的ip地址對應的參數(shù),以及所述關聯(lián)的ip地址的地理位置信息,計算所述目標ip地址對應已知地理位置信息的置信度數(shù)值;根據(jù)所述置信度數(shù)值,確定所述目標ip地址的地理位置信息。
再如,中國專利公開了一種主動式ip地址分配方法及系統(tǒng)[申請?zhí)枺篶n200810068746.0],特點是,服務器內(nèi)存儲用戶屬性的數(shù)據(jù),每個用戶屬性對應分配一個固定的ip地址,客戶端通過pppoe網(wǎng)絡連接,服務器分配臨時ip地址,與客戶端建立連接;然后服務器將客戶端的用戶屬性進行認證,找出與用戶屬性所對應的ip地址,將該ip地址賦予客戶端設備,并且客戶端斷開與服務器的臨時連接。本發(fā)明將用戶屬性與ip地址進行強制對應和綁定,由服務器對ip地址進行統(tǒng)一的分配和主動式管理,可以解決用戶隨意更換ip及mac、pppoe服務的隨機分配、用戶身份確認及源地址認證等問題。可以實現(xiàn)ip地址定位、管理和控制,方便進行各種延伸管理和用戶跟蹤及身份強制認證。
上述方案雖然解決了現(xiàn)有技術的部分問題,但是仍然存在不足,例如,消耗資源過多,提取效率仍然不夠高等。
技術實現(xiàn)要素:
本發(fā)明的目的是針對上述問題,提供一種能夠通過udf功能定位ip地址的高效處理ip地址區(qū)域定位的方法;
本發(fā)明的另一目的是針對上述問題,提供一種基于高效處理ip地址區(qū)域定位的方法的高效處理ip地址區(qū)域定位的系統(tǒng);
為達到上述目的,本發(fā)明采用了下列技術方案:
本發(fā)明的高效處理ip地址區(qū)域定位的方法包括如下步驟:
s1:通過日志文件收集單元收集包括ip地址的日志文件數(shù)據(jù)并存入文件池;
s2:通過部署在hadoop中的etl對步驟s1中收集到的數(shù)據(jù)進行包括過濾動作的預處理,并將預處理好的數(shù)據(jù)收集到hadoop集群中并再次通過etl對數(shù)據(jù)進行壓縮處理;
s3:通過hive的udf功能對步驟s2中提取到的數(shù)據(jù)進行進一步提取并進行分析處理以獲取ip地址定位信息。
通過上述技術方案,將ip地址定位功能通過hive的udf功能開發(fā)集成,以完成對ip地址區(qū)域定位的高效處理。
在上述的高效處理ip地址區(qū)域定位的方法中,在步驟s1中,所述的日志收集單元為用于對分布式的海量日志文件進行采集、聚合和傳輸?shù)膄lume系統(tǒng)。
在上述的高效處理ip地址區(qū)域定位的方法中,在步驟s3之后,還包括將數(shù)據(jù)結構化處理的步驟:
通過hive建立數(shù)據(jù)文件的表結構,并通過mysql將hive和hdfs進行建表關聯(lián)以將數(shù)據(jù)結構化處理。
在上述的高效處理ip地址區(qū)域定位的方法中,在步驟s2中,所述的etl的程序包括用于對數(shù)據(jù)進行清洗處理、合并處理、上傳處理、壓縮處理和分布式提取處理的一系列程序,且所述的對數(shù)據(jù)進行壓縮處理通過調(diào)用hive的orc格式中的高壓縮算法完成。
在上述的高效處理ip地址區(qū)域定位的方法中,在步驟s3中,獲取ip地址定位信息的方法包括:
在本地連接hadoop集群,并通過基于udf完成的基于hive的ip地址區(qū)域定位程序在ip-區(qū)域庫中尋找與當前ip地址相匹配的結果,若匹配成功,返回當前ip地址所對應的區(qū)域信息。
在上述的高效處理ip地址區(qū)域定位的方法中,所述hadoop的分布式系統(tǒng)通過以下方法構建:
搭建部署有至少一臺主機和至少一臺從機的hadoop2.7.1的集群環(huán)境,對hive和hdfs的環(huán)境與配置進行配置,且將hivemetastore、mysql和hiveserver2組建在一臺主機上,并對namenodeha和resourcemanagerha進行設置以構建分布式系統(tǒng)。
在上述的高效處理ip地址區(qū)域定位的方法中,在分布式系統(tǒng)的各節(jié)點搭建有tomcat分布式集群,并通過nginx對tomcat所在機器的流量進行調(diào)配。
在上述的高效處理ip地址區(qū)域定位的方法中,在步驟s3之后,還包括以下步驟:
在對提取到的ip地址區(qū)域定位結果進行輸出后對結果進行進一步分析和/或生成報表。
在上述的高效處理ip地址區(qū)域定位的方法中,輸出的結果通過可視化配置進行可視化顯示,所述的可視化配置包括數(shù)據(jù)采集可視化配置、數(shù)據(jù)接入可視化配置、數(shù)據(jù)計算可視化配置和數(shù)據(jù)輸出可視化配置中的任意一種或多種組合的配置。
一種基于高效處理ip地址區(qū)域定位的方法的高效處理ip地址區(qū)域定位的系統(tǒng)。
本發(fā)明高效處理ip地址區(qū)域定位的方法和系統(tǒng)相較于現(xiàn)有技術具有以下優(yōu)點:1、利用hive調(diào)用hadoop進行分布式計算來完成ip地址定位,效率高且消耗資源低;2、對各臺機器進行流量調(diào)配,實現(xiàn)負載均衡;3、將數(shù)據(jù)進行結構化處理,以便于ip地址區(qū)域的提取。
附圖說明
圖1是本發(fā)明實施例一的技術架構圖;
圖2是本發(fā)明實施例一的數(shù)據(jù)流程圖。
具體實施方式
本發(fā)明可用于高效處理ip地址區(qū)域定位,克服了現(xiàn)有技術直接利用本地計算對ip地址進行提取區(qū)域地址,導致消耗大量資源和內(nèi)存,并且效率低下的問題。
以下是本發(fā)明的優(yōu)選實施例并結合附圖,對本發(fā)明的技術方案作進一步的描述,但本發(fā)明并不限于這些實施例。
實施例一
如圖1和圖2所示,高效處理ip地址區(qū)域定位的方法包括如下步驟:
s1:通過日志文件收集單元收集包括ip地址(internetprotocoladdress,互聯(lián)網(wǎng)協(xié)議地址)的日志文件數(shù)據(jù)并存入文件池;
其中日志收集單元為能夠對分布式的海量日志文件進行采集、聚合和傳輸?shù)膄lume系統(tǒng)。
flume系統(tǒng)是一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。
ip地址:被用來給internet(互聯(lián)網(wǎng))上的電腦一個編號,并且服務提供商為每個用戶動態(tài)分配的ip地址都是唯一的,并且與寬帶帳號對應,因此根據(jù)ip區(qū)域庫可以提取用戶實際地址。
s2:通過部署在hadoop(分布式系統(tǒng)基礎架構)中的etl(extracttransformandload,提取、轉換和加載)對步驟s1中收集到的數(shù)據(jù)進行包括過濾動作的預處理,并將預處理好的數(shù)據(jù)收集到hadoop集群中并再次通過etl對數(shù)據(jù)進行壓縮處理;
s3:通過hive(數(shù)據(jù)倉庫架構)的udf(用戶自定義函數(shù))功能對步驟s2中提取到的數(shù)據(jù)進行進一步提取并進行分析處理以獲取ip地址定位信息。
其中,結果分析格式如下:
8cab8e8c2a30;101.227.10.59;上海市;100
8cab8e8cad18;101.226.129.182;杭州市;67
8cab8e8cfe90;101.201.179.38;北京市670
……
進一步地,hadoop的分布式系統(tǒng)通過以下方法構建:
搭建部署有至少一臺主機和至少一臺從機的hadoop2.7.1的集群環(huán)境,對hive和hdfs(hadoopdistributedfilesystem,分布式文件系統(tǒng))的環(huán)境與配置進行配置,且將hivemetastore(數(shù)據(jù)元存儲工具倉)、mysql(關系型數(shù)據(jù)庫)和hiveserver2組建在一臺主機上,并對namenodeha(namenodehighavailability,高可用性數(shù)據(jù)分發(fā)服務器)和resourcemanagerha(resourcemanagerhighavailability,高可用資源配置管理器)進行設置,設置參數(shù)以使分布式系統(tǒng)滿足高可用性為準,且優(yōu)選地,本實施例中部署4臺主機和7臺從機。
hivemetastore:數(shù)據(jù)元存儲工具倉,用于存儲表的元數(shù)據(jù)信息;
mysql:一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi)以增加速度并提高靈活性;
hiveserver2:hive服務器。
其中,本實施例的方法中還包括將數(shù)據(jù)結構化處理的步驟,具體過程如下:
通過hive建立數(shù)據(jù)文件的表結構,并通過mysql將hive和hdfs進行建表關聯(lián)以將數(shù)據(jù)結構化處理。
為了將數(shù)據(jù)結構化處理,需要通過hive建立數(shù)據(jù)文件的表結構,所以,通過實現(xiàn)hive和hdfs建表關聯(lián)以完成數(shù)據(jù)結構化處理,其中hive和hdfs建表關聯(lián)通過mysql管理完成,將數(shù)據(jù)保存在不同的表中,以增加速度并提高靈活性。
etl的程序部署于hadoop集群中,且etl的程序包括能夠對數(shù)據(jù)進行清洗處理、合并處理、上傳處理、壓縮處理和分布式提取處理的一系列程序,且所述的對數(shù)據(jù)進行壓縮處理通過調(diào)用hive的orc(optimizedrowcolumnar,最佳化的柱狀排列結構)格式中的高壓縮算法完成。
hadoop:分布式系統(tǒng)基礎構架,提供高吞吐量來訪問應用程序的數(shù)據(jù),適合有著超大數(shù)據(jù)集的應用程序;
其最核心的設計:hdfs和mapreduce(映射規(guī)約),hdfs為海量的數(shù)據(jù)提供存儲,mapreduce為海量的數(shù)據(jù)提供計算。
hive:是基于hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql(structuredquerylanguage,結構化查詢語言)查詢功能,可以將sql語句轉換為mapreduce任務進行運行。
hive:是apache(apachehttpserver的代稱,一種web服務器軟件)開源的技術,數(shù)據(jù)倉庫軟件提供對存儲在分布式中的大型數(shù)據(jù)集的查詢和管理,它本身是建立在apachehadoop之上,具體地說,hive是基于hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql(structuredquerylanguage,結構化查詢語言)語句轉換為mapreduce任務進行運行。
etl處理:用于描述將數(shù)據(jù)從源端經(jīng)過抽取、轉換、加載至目的端的過程。
具體地,在步驟s3中,通過以下方法對數(shù)據(jù)進行分析處理以獲取ip地址定位信息:
s3-1:為了進一步完成數(shù)據(jù)的提取,開發(fā)相對應的hive的對ip地址具有正常提取功能的udf函數(shù)編程接口使hive具有udf功能,udf函數(shù)具有能夠正常提取ip地址的功能即可。
也就是說,hive增加udf定位功能的方法:
主要根據(jù)hive提供的udf函數(shù)編程接口,安裝接口開發(fā)定位功能,此定位是指根據(jù)ip地址在ip-區(qū)域庫里去匹配,如果匹配成功,返回該ip地址所對應的區(qū)域信息,這樣就能完成定位功能。
s3-2:在本地連接hadoop集群,并在通過udf完成基于hive的ip地址區(qū)域定位程序后,通過ip地址區(qū)域定位程序在ip-區(qū)域庫中尋找與當前ip地址相匹配的結果,若匹配成功,返回當前ip地址所對應的區(qū)域信息。
為了添加負載均衡,在分布式系統(tǒng)的各節(jié)點搭建有tomcat(服務器)分布式集群,并利用nginx(反向代理服務器)對tomcat所在機器的流量進行調(diào)配,nginx是一種高性能的http和反向代理服務器,通過負載均衡的設計使集群中各臺機器,包括主機和從機的流量實現(xiàn)均衡負載,提高各臺機器的利用率,同時由于均衡了負載,提高了各臺機器的處理速度。
進一步地,在步驟s3之后,還包括以下步驟:
在對提取到的ip地址區(qū)域定位結果進行輸出后對結果進行進一步分析和/或生成報表。
不同的路由器地址,對應不同的ip地址,通過關聯(lián)到不同的家庭路由器mac,并計算出在不同路由器下的不同終端的出現(xiàn)次數(shù),這樣通過高效的分布式計算,能從海量的用戶數(shù)據(jù)里得到用戶真正的終端訪問情況,并以此精準到用戶的區(qū)域訪問情況,為用戶帶來更優(yōu)質的服務。
進一步地,輸出的結果通過可視化配置進行可視化顯示,所述的可視化配置包括數(shù)據(jù)采集可視化配置、數(shù)據(jù)接入可視化配置、數(shù)據(jù)計算可視化配置和數(shù)據(jù)輸出可視化配置中的任意一種或多種組合的配置,且對結果顯示保持具有可定制化可視化的功能。
下面結合附圖1,對本實施例進行具體說明:
日志文件通過現(xiàn)有架構,例如flume系統(tǒng)架構、分布式系統(tǒng)基礎構架等進行采集處理后存入本地大文件池,然后通過使用python語言設計的etl程序對文件進行積累、清洗、合并等預處理操作后上傳至hadoop集群的hdfs,再次通過hive進行分布式提取得到有效的ip地址,同時,hive對tez計算框架發(fā)起計算請求,通過調(diào)用hive的orc格式例的高壓算法完成etl中的數(shù)據(jù)壓縮,之后通過hive的udf自適應功能將初步提取到的ip地址在ip-區(qū)域庫進行匹配,如果匹配成功,就返回ip地址所對應的區(qū)域信息,并通過mysql對提取結果結構化處理后進行可視化的結果顯示,達到利用hive調(diào)用hadoop進行分布式計算來完成ip地址定位,效率高且消耗資源低。
其中,tez是apache最新的支持dag作業(yè)的開源計算框架,它可以將多個有依賴的作業(yè)轉換為一個作業(yè)從而大幅提升dag作業(yè)的性能,它允許開發(fā)者為最終用戶構建性能更快、擴展性更好的應用程序,在本實施例中用于擴展udf函數(shù)以使hive具有udf的自適應開發(fā)供,更精準的提取ip地址。hadoop傳統(tǒng)上是一個大量數(shù)據(jù)批處理平臺,tez用于幫助hadoop處理一些需要實時查詢處理功能等用例場景。
tez項目的目標是支持高度定制化,這樣它就能夠滿足各種用例的需要,讓人們不必借助其他的外部方式就能完成自己的工作,如果hive和pig這樣的項目使用tez作為其數(shù)據(jù)處理的骨干,那么將會顯著提升它們的響應時間。
下面結合附圖2,對本實施例進行具體說明:
分布式的海量的日志的小文件通過flume系統(tǒng)進行采集、聚合,并將其傳輸?shù)酱笪募?,然后使用python語言設計的etl程序對數(shù)據(jù)進行清洗和合并以分篩處有效的ip地址和無效的ip地址,并對無效的ip地址進行過濾檢查處理,對不合格的ip地址進行刪除處理,之后對新的ip地址區(qū)域數(shù)據(jù)進行合并后將初步提取的數(shù)據(jù)上傳至hdfs進行保存,然后通過etl對數(shù)據(jù)壓縮編碼處理后采用udf的自適應開發(fā)功能對數(shù)據(jù)進行進一步定位提取。
本實施例通過hadoop分布式架構,將ip地址定位功能通過hive的udf功能開發(fā)集成,完成對ip地址區(qū)域定位的高效處理,通過在hive中增加udf定位功能達到高效目的:
1、對hive數(shù)據(jù)進行高壓縮處理,提高處理效率;
2、對無效的ip地址進行過濾,以避免在無效的ip地址上消耗過多的資源;
3、本實施例的數(shù)據(jù)收集、etl處理、數(shù)據(jù)高壓縮、數(shù)據(jù)區(qū)域識別等一系列步驟都在hadoop集群中完成,提高處理效率。
實施例二
本實施例提出了一種基于高效處理ip地址區(qū)域定位的方法的高效處理ip地址區(qū)域定位的系統(tǒng)。
本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬技術領域的技術人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權利要求書所定義的范圍。
盡管本文較多地使用了hive、udf功能、hadoop集群、mysql等等術語,但并不排除使用其它術語的可能性。使用這些術語僅僅是為了更方便地描述和解釋本發(fā)明的本質;把它們解釋成任何一種附加的限制都是與本發(fā)明精神相違背的。