2.6.4 DN数据硬链接

创建脚本文件vim DN_asd.sh

编写脚本如下:

#!/bin/bash

##配置文件路径
export CONF_PATH=${HADOOP_HOME}/etc/hadoop

if [ -z "${HADOOP_HOME}" ];then
{
    read -p "hadoop配置文件路径获取错误,请输入正确目录路径:" -e FILE_PATH

    while [ -z "${FILE_PATH}" ]
    do
    {
        read -p "您输入目录路径为空,请重新输入:" -e FILE_PATH
    }
    done

    CONF_PATH=${FILE_PATH}
}
fi

while [ ! -e "${CONF_PATH}" ]
do
{
    read -p "您输入的路径 ${CONF_PATH} 不存在,请重新输入配置文件目录路径:" -e FILE_PATH
    export CONF_PATH=${FILE_PATH}
}
done

if [ ! -e "${CONF_PATH}/hdfs-site.xml" ];then
{
    read -p "hdfs-site.xml文件不存在,请重新输入正确文件名:" -e FILE_NAME

    while [ -z "${FILE_NAME}" ]
    do
    {
        read -p "您的输入为空,请重新输入配置文件:" -e FILE_NAME
    }
    done

    if [ ! -e "${CONF_PATH}/${FILE_NAME}" ];then
    {
        echo -e "不存在您输入的配置文件路径:\033[31m ${CONF_PATH}/${FILE_NAME}\033[0m"
        exit
    }
    else
        ##datanode数据目录
        DATA_PATH=`grep "dfs.datanode.data.dir" ${CONF_PATH}/${FILE_NAME} -A 1 |tail -n1 |grep -E -o "/.*<" |awk -F '<' '{print $1}'|awk -F ',' '{for (i=1;i<=NF;i++)print $i}'`
    fi
}
else
    ##datanode数据目录
    DATA_PATH=`grep "dfs.datanode.data.dir" ${CONF_PATH}/hdfs-site.xml -A 1 |tail -n1 |grep -E -o "/.*<" |awk -F '<' '{print $1}'|awk -F ',' '{for (i=1;i<=NF;i++)print $i}'`
fi


cp_link()
{
    cnt=0
    if [ ! -z "${DATA_PATH}" ];then
    {
        for i in ${DATA_PATH}
        do
        {
            cnt=`expr $cnt + 1`
            id=$cnt
            DNdata_path=`echo $i |grep -o "/.*"`
            file_root_path=`df -h ${DNdata_path}|grep -v Filesystem |awk '{print $NF}'`

            if [ ! -z "${file_root_path}" ];then
            {
                link_path=${file_root_path}/Backup_hard_links

                ##判断路径是否存在
                if [ ! -e "${link_path}" ] ; then
                {
                    mkdir -p ${link_path}/file_dir_${id}
                }
                else
                    rm -rf ${link_path}/file_dir_${id} && mkdir -p ${link_path}/file_dir_${id}
                fi

                cp -lr ${DNdata_path} ${link_path}/file_dir_${id}
echo -e "DN硬链路径为:\033[34m ${link_path}/Backup_hard_links \033[0m"
            }
            else
                echo -e "\033[31m ${DNdata_path} 所在磁盘根路径获取异常!!!\033[0m"
                exit
            fi
        }
        done
    }
    else
        echo -e "\033[31m datanode数据目录获取异常,请检查配置文件!!!\033[0m"
        exit
    fi
}

cp_link

执行命令

sh DN_asd.sh

hdfs-site.xml文件名未变更,输入正确的路径

​ 图 2.6.4.1 文件名未改变

hdfs-site.xml文件名发生变更,输入正确路径+正确文件名

​ 图 2.6.4.2文件名改变

验证: 查看所有数据盘的Backup_hard_links目录,示例如下图

​ 图 2.6.4.3 Backup_hard_links目录

注意:硬链接,仅能支持同盘硬链接;硬链之后,已有文件会同步修改,新增文件无法同步。

注意2:使用硬连接会导致磁盘不够用,磁盘空间不足的情况下不建议使用

Copyright © lucene.xin 2020 all right reserved修改时间: 2021-07-05 10:55:22

results matching ""

    No results matching ""