點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了!!!
文章前言
我們在流式計算數據加工流程中,有個場景是實現一種基于流式數據里面ip轉換成對應的歸屬地信息,這個場景首先想到是如何找一個符合條件的ip映射庫,而這個ip映射庫需滿足如下條件:
1. 性能好:因為實時數據量大,每條數據都需要實時調用,獲取ip映射關系,所以性能要好,如果延時較大,會影響后面流程節點處理;
2. 開源,能擴展:開源,能內網部署,并提供擴展功能,支持加新的ip映射關系;
3. 方便調用:支持api調用,且精準率要高。
通過調研,開源ip2region.db數據庫符合我們上面實際場景需求,本文檔主要介紹在flink流式計算中如何使用了ip2region,通過測試程序了解flink 是如何加載外部文件機制,如需了解ip2region更多詳情,可自行到官網地址查閱https://github.com/lionsoul2014/ip2region
功能實現
1. 下載項目
git clone https://github.com/lionsoul2014/ip2region.git
2. 引用maven依賴
程序引用ip2region依賴。
<dependency>
<groupId>org.lionsoulgroupId>
<artifactId>ip2regionartifactId>
<version>1.7.2version>
dependency>
3. demo編寫
api比較簡單就三行代碼,采用的是memory查詢算法。
打包測試
程序打包成功后,將程序提交到flink on yarn 環境之前,我們要考慮ip2regiog.db存儲的位置及加載方式,否則在分布式環境下flink程序是無否讀到該數據庫:
方式一:ip2region.db庫放入hadoop各計算節點:
將ip2region.db數據庫文件放入hadoop各計算節點上指定位置上(如:/home/gpadmin/jar_repo/config/ip2region.db),由分配到此計算節點flink任務到指定目錄下加載對應的數據庫文件,實現ip歸屬轉換。
1)新建basic.config配置文件,加入配置項
ip2region.db.file.path:/home/ip2region.db //指定讀取的路徑。
2)提交測試程序到yarn
flink run -m yarn-cluster -p 1 -yjm 1024 -ytm 1024 -ynm
ipregiontest -c com.shsnc.fk.task.metricnormal.MetricsCollectTask regiondb.jar basic.config
輸出計算結果:
2021-12-17 16:27:26,470 INFO
com.XXXXX.fk.task.dataprocess.function.DataProcessPreRichMap
Func [] - regin:中國|0|XXX|XXX|XX
3)分析加載流程
我們在flink run 啟動命行里面,沒有直接指向ip2region.db加載方式,而是在應用程序加載配置項獲取對應的數據庫文件存儲位置,通過觀察任務提交到flink on yarn 環境過程中,發現提交任務過程,tm自動會將該數據庫文件放入yarn任務緩存目錄下(Task ClassPath),任務運行過程中會到緩存目錄下找到數據庫文件。
ps -ef|grep container_1636698971952_0029_01_000002(容器id)。
ll /proc/進程號。
這種方式測試程序可以找到ip2region.db數據庫文件,并且能計算出所需要ip歸屬,缺點是每臺hadoop計算節點上都要將ip2region.db數據庫文件放入指定位置,否則會提示讀不到數據庫文件現象,如果集群環境節點較多使用起來并不方便。
方式二:一次性加載方式
通過檢查flink run命令參數,發現-yt 參數方式很好解決我們當前面臨的問題,先看一下參數的使用說明:
參數方式方式是 -yt 目錄名,該參數意思是在指定目錄中傳輸文件,處理流程如下:
-yt 目錄名--hdfs(存儲)--tm(下載)-tm(classpath)。
1)提交任務
flink run -m yarn-cluster -p 1 -yjm 1024 -ytm 1024 -yt
/home/gpadmin/jar_repo/config -ynm ipregiontest -c com.XXXXX.fk.task.metricnormal.MetricsCollectTask regiondb.jar basic.config
注意這里指定是目錄,而不是指定的是具體加載的文件。
2)hdfs查找存儲位置
hdfs dfs -find hdfs://master:port/ -iname “ip2region.db”
可以看出flink 任務在提交過程中,會將ip2region.db自動存儲在hdfs上flink對應的任務目錄下,同時把-yt 提向的目錄(config )也存儲了。
3)自動下載
檢查每個haoop計算節點,tm會自動到hdfs上下載ip2region.db存放到緩存目錄下(Task ClassPath),所以任務運行過程就要讀到ip2region.db數據庫文件,通過api很方便獲取ip歸屬。
文章小結
方案二相比方案一優勢明顯,只需提交任務的時候指定外部文件在存儲的目錄,提交的過程,會自動分發到各個計算節占的任務所在的classpath中,很好解決了外部文件加載的問題。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129568.html
摘要:實際時間以官網為準地址在線查詢這個工具不錯的,可以同時查詢純真數據的數據,還有淘寶數據這四個平臺顯示的數據,可以作為歸屬地的參考最后如果您還有哪些純真數據庫的查詢網站,也可以分享一下哦國內目前查詢IP的地方有很多,比如:ip138、ipip.net、ip.cn等很多平臺,都可以查詢到IP。一般國內民用查詢較多的是ip138.com,目前國內很多比如:百度查詢IP或站長工具等都是調用ip138...
自研實時計算模塊介紹及運維數據應用場景實施 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...
摘要:可以通過大數據生態的一系列工具生態來解決大數據問題數據分片主要有兩種方式哈希和范圍。哈希的問題是范圍查詢支持不佳,范圍的問題是可能冷熱數據不均。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續)后端好書閱讀與推薦(續二)后端好書閱讀與推薦(續三)后端好書閱讀與推薦(續四)后端好書閱讀與推薦(續五)后端好書閱讀與推薦(續六) Elasticsearch權威指南 El...
摘要:可以通過大數據生態的一系列工具生態來解決大數據問題數據分片主要有兩種方式哈希和范圍。哈希的問題是范圍查詢支持不佳,范圍的問題是可能冷熱數據不均。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續)后端好書閱讀與推薦(續二)后端好書閱讀與推薦(續三)后端好書閱讀與推薦(續四)后端好書閱讀與推薦(續五)后端好書閱讀與推薦(續六) Elasticsearch權威指南 El...
摘要:為了方便廣大的開發者,特此統計了網上諸多的免費,為您收集免費的接口服務,做一個的搬運工,以后會每月定時更新新的接口。將長段中文切詞分開。 為了方便廣大的開發者,特此統計了網上諸多的免費API,為您收集免費的接口服務,做一個api的搬運工,以后會每月定時更新新的接口。有些接口來自第三方,在第三方注冊就可以成為他們的會員,免費使用他們的部分接口。 百度AccessToken:針對HTTP ...
閱讀 1347·2023-01-11 13:20
閱讀 1685·2023-01-11 13:20
閱讀 1133·2023-01-11 13:20
閱讀 1860·2023-01-11 13:20
閱讀 4101·2023-01-11 13:20
閱讀 2705·2023-01-11 13:20
閱讀 1386·2023-01-11 13:20
閱讀 3599·2023-01-11 13:20