点击上方“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中,很好解决了外部文件加载的问题。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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 ...
阅读 1235·2023-01-11 13:20
阅读 1543·2023-01-11 13:20
阅读 996·2023-01-11 13:20
阅读 1651·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1290·2023-01-11 13:20
阅读 3454·2023-01-11 13:20