ищу bash скрипт, который может перемещать данные HDFS - PullRequest
0 голосов
/ 30 января 2020

Я хочу организовать / переместить данные из hdfs: // data / backup в соответствующую папку HDFS.

e.g: hdfs://data/backup/a/1 to hdfs://data/a/1
hdfs://data/backup/b/1 to hdfs://data/b/2
hdfs://data/backup/c/1 to hdfs://data/c/3
hdfs://data/backup/d/1 to hdfs://data/d/4

Данные в этих папках указаны по дате и по часам

Если данные этого часа уже существуют в папке назначения, переопределите их данными из ecbackup.

например,

hdfs://data/backup/a/1/merged/20190608/1 -> hdfs://data/a/1/merged/20190608/01
......
hdfs://data/backup/a/1/merged/20190608/17 -> hdfs://data/a/1/merged/20190608/17
....
hdfs://data/backup/a/1/merged/20190608/23 -> hdfs://data/a/1/merged/20190608/23

, это мой сценарий

#!/usr/bin/env bash



SOURCE='hdfs://data/backup/audio_archive'
DEST='hdfs://data/a'
source_files=( $(hdfs dfs -ls -r "${SOURCE}" | awk '/^-/ {print $NF}') )
SOURCE="${SOURCE%/}"
SOURCE_DIR="${SOURCE//hdfs:\//}"
DEST="${DEST%/}"
for file_ in "${source_files[@]}"; do
    if [[ ! $file_ =~ /[[:digit:]]+/[[:digit:]]+ ]]; then
    continue
    fi
    dest_="${file_#${SOURCE_DIR}}"
    dest="${DEST}${dest_}"
    dest_dir="${dest%/*}"
    # NOTE: Remove `echo` after checking the output to
    # perform the real actions
    echo hdfs dfs -mkdir -p "${dest_dir}"
    echo hdfs dfs -mv -f "hdfs:/${file_}" "${dest}"
    echo
done

Я получаю ниже ошибка

20/01/31 18:16:10 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
20/01/31 18:16:10 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
20/01/31 18:16:10 INFO retry.RetryInvocationHandler: java.io.IOException: Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]; Host Details : local host is: ; destination host is:  , while invoking ClientNamenodeProtocolTranslatorPB.getFileInfo over ... after 1 failover attempts. Trying to failover after sleeping for 1423ms.
...