大数据组件存储策略设置

大数据组件存储策略设置 #

一、背景 #

大数据组件设计到存储是几个组件分别是MinIO、Hbase、ES。我们需要根据项目需求,动态配置数据存储的策略,根据集群的存储容量配置策略。

二、如何设置 #

1. MinIO对象存储 #

MinIO可以在管理界面直接进行相应的存储策略设置

2. Hbase存储策略 #

在Hbase创建表的时候设置hbase_ttl_init.sh

#!/bin/bash
# 7天
ttl=604800
hbase shell  <<EOF
create 'face',{NAME => 'info', TTL=>'$ttl'}
create 'person',{NAME => 'info', TTL=>'$ttl'}
create 'motor_vehicle',{NAME => 'info', TTL=>'$ttl'}
create 'subscribe_notification',{NAME => 'info', TTL=>'$ttl'}
create 'disposition_notification',{NAME => 'info', TTL=>'$ttl'}
create 'thing',{NAME => 'info', TTL=>'$ttl'}
create 'scene',{NAME => 'info', TTL=>'$ttl'}
create 'image',{NAME => 'info', TTL=>'$ttl'}
create 'image_info',{NAME => 'info', TTL=>'$ttl'}
create 'video_slice',{NAME => 'info', TTL=>'$ttl'}
create 'video_slice_info',{NAME => 'info', TTL=>'$ttl'}
create 'video_label',{NAME => 'info', TTL=>'$ttl'}
create 'file',{NAME => 'info', TTL=>'$ttl'}
create 'file_info',{NAME => 'info', TTL=>'$ttl'}
create 't_case',{NAME => 'info', TTL=>'$ttl'}
create 't_case_info',{NAME => 'info', TTL=>'$ttl'}
exit
EOF
echo "hbas 初始化成功!"

如果之前的表已经存在了,进行相应的修改操作hbase_ttl_change.sh

#!/bin/bash
# 7天
ttl=604800
hbase shell  <<EOF
disable 'face'
alter 'face',{NAME=>'info', TTL => '$ttl'}
enable 'face'
disable 'motor_vehicle'
alter 'motor_vehicle',{NAME=>'info', TTL => '$ttl'}
enable 'motor_vehicle'
disable 'subscribe_notification'
alter 'subscribe_notification',{NAME=>'info', TTL => '$ttl'}
enable 'subscribe_notification'
exit
EOF
echo "hbas 修改成功!"

3. ElasticSearch存储策略 #

我的ES版本是6.8.6,暂时没找到存储策略方案,这里在程序里面手动进行定时删除过期数据的功能 es_delete.sh

#!/bin/bash
# 注释这里的时间表示  d:天  m:分钟  now-7d:7天前
esaddr='172.17.0.1:9200'
timefields=('FaceAppearTime' 'AppearTime' 'TriggerTime')

function httpRequest()
{
    paramd="{\"query\":{\"range\":{\"$1\":{\"lt\":\"now-7d\",\"format\":\"epoch_millis\"}}}}"
    #curl 请求
    info=`curl -s -m 10 --connect-timeout 10 -i -H'Content-Type:application/json' -d"$paramd" -XPOST "http://$esaddr/*-*/_delete_by_query?pretty"`
    echo $info
 
    #获取返回码
    code=`echo $info|grep "HTTP"|awk '{print $2}'`
    #对响应码进行判断
    if [ "$code" == "200" ];then
        echo "$1 请求成功,响应码是$code"
    else
        echo "$1 请求失败,响应码是$code"
    fi
}

function forcemerge(){
    #echo "准备forcemerge"
    info=`curl -s -m 10 --connect-timeout 10 -i -XPOST "http://$esaddr/_forcemerge?only_expunge_deletes=true&max_num_segments=1"`
    echo $info
    #获取返回码
    code=`echo $info|grep "HTTP"|awk '{print $2}'`
    #对响应码进行判断
    if [ "$code" == "200" ];then
        echo "forcemerge 请求成功,响应码是$code"
    else
        echo "forcemerge 请求失败,响应码是$code"
    fi
}

function main(){
    for i in "${!timefields[@]}"; 
    do
        field=${timefields[$i]}
        # do something....
        httpRequest $field
    done
    forcemerge
}

main