Guest User

Untitled

a guest
Mar 5th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #!/bin/bash
  2. # debug
  3. #set -x
  4. # abort if any error occured
  5. set -e
  6. # raise an error when an undefined variable has been used
  7. set -u
  8. # abort when a pipe failed = bash only: doesn't work in POSIX sh
  9. if [ "${BASH:-}" = '/bin/bash' ]; then set -o pipefail; fi
  10.  
  11. #############################
  12. # ENV VARIABLES #
  13. #############################
  14. WEBHDFS_URL=${WEBHDFS_URL}
  15. WEBHDFS_USER=${TECHNICAL_USER}
  16. WEBHDFS_PASSWORD=${TECHNICAL_PASSWORD}
  17. DEFAULT_FOLDER_PERMISSION=750
  18. BASE_HDFS_DIRECTORY=${BASE_HDFS_DIRECTORY}
  19. LOCAL_JOB_FOLDER=$(PWD)/$1
  20. REMOTE_JOB_FOLDER=$BASE_HDFS_DIRECTORY/$2
  21.  
  22.  
  23. create_hdfs_folder(){
  24. FOLDER_PATH=$1
  25. # echo "$WEBHDFS_URL/$FOLDER_PATH?op=MKDIRS&permission=$DEFAULT_FOLDER_PERMISSION"
  26. curl -i -k -u $WEBHDFS_USER:$WEBHDFS_PASSWORD -X PUT "$WEBHDFS_URL/$FOLDER_PATH?op=MKDIRS&permission=$DEFAULT_FOLDER_PERMISSION"
  27. }
  28.  
  29. upload_file()
  30. {
  31. HDFS_FILE_PATH=$1
  32. LOCAL_FILE_PATH=$2
  33. # echo "$WEBHDFS_URL/$HDFS_FILE_PATH?op=CREATE&overwrite=true"
  34. # echo "$LOCAL_JOB_FOLDER/$LOCAL_FILE_PATH"
  35. query=`curl -i -k -u $WEBHDFS_USER:$WEBHDFS_PASSWORD -X PUT "$WEBHDFS_URL/$HDFS_FILE_PATH?op=CREATE&overwrite=true" | grep Location | awk -F ' ' '{print $2}' | sed 's/[\r\n]//g'`
  36. curl -i -k -u $WEBHDFS_USER:$WEBHDFS_PASSWORD -X PUT -T "$LOCAL_JOB_FOLDER/$LOCAL_FILE_PATH" "$query"
  37. }
  38.  
  39. sync_job_dir(){
  40. DIRECTORY=$1
  41. for entry in $( find ${DIRECTORY});
  42. do
  43. if [ -f "$entry" ];then
  44. # echo "this is a file ${entry#"$LOCAL_JOB_FOLDER/"}"
  45. upload_file $REMOTE_JOB_FOLDER/${entry#"$LOCAL_JOB_FOLDER/"} ${entry#"$LOCAL_JOB_FOLDER/"}
  46. fi
  47. if [ -d "$entry" ];then
  48. # echo "this is a folder ${entry#"$LOCAL_JOB_FOLDER/"}"
  49. create_hdfs_folder $REMOTE_JOB_FOLDER/${entry#"$LOCAL_JOB_FOLDER/"}
  50. fi
  51. done
  52. }
  53.  
  54.  
  55. #####################
  56. # MAIN #
  57. #####################
  58. # Create remote folder baser on script parameter (2nd)
  59. create_hdfs_folder $REMOTE_JOB_FOLDER
  60. # Sync all local files to remote hdfs
  61. sync_job_dir "$LOCAL_JOB_FOLDER/*"
Add Comment
Please, Sign In to add comment