当前位置: 首页 > news >正文

小记一次海量数据实时查询域名库设计(下)

二. WHOIS库设计

根据WHOIS数据查询业务场景、响应性能等需求,该库采用Hbase + ES 技术组合设计,其中HBASE存储全量WHOIS数据,ES库作为查询索引库,只存储查询WHOIS数据时的索引项数据。当提交一条查询请求时,首先从ES库中利用索引检索出记录的唯一键【_id】,再使用该唯一键从Hbase中查询出全量数据。
HBASE库配置:同PDNS库设计中HBASE配置。
ES库配置:7服务器集群【与HBASE共用硬件服务器】,JDK版本1.8,单节点JVM堆内存固定为12G。

2.1 WHOIS数据业务字典及样例数据

2.1.1 业务字典
WHOIS业务字典见《whois数据说明.pdf》文档。
WHOIS原始数据为.CSV格式,第三方数据样例文件见whoisdemo.csv文件

2.1.2 数据规模
WHOIS第三方数据以CSV文本文件格式存储,经粗略统计,全量数据大小约180G,索引数据大小约80G,包含WHOIS记录约3亿4千万。

2.2 WHOIS查询需求说明

WHOIS数据查询需求简单描述为,根据约定的可查询业务字段项进行查询,查询时可根据多条件项进行逻辑匹配,需要支持等值匹配、模糊查询。无聚合查询、分组查询等复杂查询需求。

2.2.1 根据约定业务字段查询

查询输入:

在这里插入图片描述

查询输出:全量WHOIS记录,具体字段见《whois数据说明.pdf》

若查询项不能满足需求,后续可从全量数据中增加。

2.3 WHOIS表设计

2.3.1 whois_data_index索引表设计

ES中的索引数据表名为: whois_data_index。
id的格式为 : {domain}{reg_data}_{expir_data}
{domain}表示域名;
{reg_data}表示注册时间,格式为13位时间戳;
{expir_data}表示过期时间,格式为13位时间戳,且该字段不存在与ES查询字段中,该字段为WHOIS全量数据中的记录,需要在导入ES库时,写入_id。
number_of_shards:21
Replicas:0

在这里插入图片描述

建表脚本为:

PUT whois_data_index
{
"settings":{"number_of_shards":21,"number_of_replicas":0},"mappings": {"doc": {"dynamic": "strict","properties": {"domain": {"type": "text"},"domain_status": {"type": "text"},"registrar": {"type": "text"},"reg_email": {"index": true,"type": "keyword"},"registrar_whois_server": {"type": "text"},"name_server": {"type": "text"},"reg_data": {"index": true,"type": "keyword"},"registrar_abuse_contact_email": {"index": true,"type": "keyword"},"reg_name": {"index": true,"type": "keyword"},"registrant_organization": {"index": true,"type": "keyword"},"registrant_city": {"index": true,"type": "keyword"},"registrant_state_province": {"index": true,"type": "keyword"},"reg_country": {"index": true,"type": "keyword"},"registrar_IANA_id": {"index": true,"type": "keyword"} }}}}

2.3.2 whois表设计

WHOIS原始数据表保存在HBASE中,建表脚本如下:
create ‘whois’,{NAME =>‘meta’,COMPRESSION => ‘SNAPPY’}
其中,列簇为 meta;具体列见《whois数据说明.pdf》
经数据导入后,列名对应的列会自动填充到列簇中。

2.3.3关于数据导入

对于ES索引库,需要开发导入程序将第三方原始WHOIS中索引数据导入。
对于HBASE库,需要开发导入程序将第三方原始WHOIS导入,在导入数据时,需要将对应列的数据填充到列族中。

2.4 REST API使用

2.4.1 ES REST API
利用POSTMAN工具,简单列举几种典型查询场景。

  • 分词器查询【对分词列使用match关键字查询】

在这里插入图片描述
输出:

在这里插入图片描述

  • 多条件查询【must、term、match混用】
    在这里插入图片描述

输出:

在这里插入图片描述

2.4.2 HBASE REST API

HBASE表名为WHOIS, REST API同1.5.2

2.5 ES配置流程

  • 修改配置文件
    修改ES中配置文件,elasticsearch.yml和jvm.options

  • Linux下创建es用户
    useradd es

  • LINUX服务器修改内核参数
    vi /etc/security/limits.conf
    *soft nofile 65535
    *hard nofile 65535

  • 查看当前用户资源限制
    ulimit -a

  • 修改LINUX内核MMAP使用限制
    vi /etc/sysctl.conf
    vm.max_map_count=262144
    sysctl -p

  • ES节点启动
    su es
    cd /grid/elasticsearch-6.6.2/bin
    cd /opt/elasticsearch/elasticsearch-6.6.2/bin
    ./elasticsearch -d
    http://192.168.10.23:9200/_cat/health?v //验证集群状态

  • 启动KIBANA
    查看端口被进程占用
    netstat -lnp| grep 5601
    启动(192.168.10.21)
    cd /grid/kibana-6.6.3-166SNAPSHOT-linux-x86_64/bin
    ./kibana -q &
    exit


http://www.taodudu.cc/news/show-3146852.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 色彩中的加减法
  • 写给前端工程师的色彩常识:色彩三属性及其在CSS中的应用
  • Python图像处理库PIL中图像格式转换(一)
  • mysql五中约束_大学计算机基础B答案
  • 【计算机视觉】图像形成与颜色
  • 计算机图形学---颜色视觉知识点
  • 【办公自动化】Python图像操作术
  • 数字图像处理-第八周-理论课2
  • 【计算机视觉】完整版复习
  • 图像处理基础之颜色
  • 牛人的人工智能教程
  • 一个巨牛的人工智能教程
  • 人工智能教程 - 前言
  • 五子棋AI教程
  • python ai教程_带有Python的AI教程
  • 人工智能教程 - 1.1.1 什么是神经网络
  • AI教程之 Stable Diffusion在自己电脑上运行稳定的AI自动艺术创作
  • OpenAI教程
  • OpenAI教程之OpenAI 的 Dall-E2 令人印象深刻
  • This primary key of “id“ is primitive !不建议如此请使用包装类 in Class
  • This primary key of id is primitive 不建议如此请使用包装类 in Class
  • 2022考研写作不过如此pdf电子版
  • 皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?
  • buuctf-ZJCTF,不过如此
  • Java培训:为什么java如此流行且经久不衰?
  • C++解角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。若输入自然数为1,则不需要运算,运算次数为1(用循环和递归分别实现)
  • 你能做的,岂止如此
  • 电信诈骗为何如此难以根治?
  • 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m
  • EasyFloat:浮窗从未如此简单