一.背景
在某些业务创建下,用户需要将自己的大文件通过FTP工具上传到自己的FTP服务器文件下,然后在为了保证服务的高可用,我们可以采用监听同步的方式备份对应的数据文件。甚至可以通过该机制将文件同步到用户下的HDFS的集群中。
二.方案
2.1rsync + inotify
业务流程图
上述是整体的业务逻辑,后面部分的hadoop同步到HDFS是其他业务场景,可以不考虑。
步骤
- 安装rsync同步操作
Bash #生成相应的公私钥 ssh-keygen #第一行,密钥存放位置,建议选默认,也可以自己更改路径 #第二行,输入密钥密码,也可以不输入(为了后续实验,建议不输入) #第三行,再次确认密码 ls /root/.ssh #查看密钥生成情况 ssh-copy-id root@XXX.XXX.XXX.XXX #传输公钥到虚拟机A rsync -av /root/sftp/XX/1.txt root@XXX.XXX.XXX.XXX:/root
- 在需要监听的服务器上安装inotify工具
Bash #安装make 和 gcc yum -y install make gcc tar -xf /root/inotify-tools-3.14.tar.gz -C /usr/local cd /usr/local/inotify-tools-3.14/ ./configure make #编译,生成可执行的二进制文件 make install #make install 安装,将编译好的文件复制到安装目录 #.查看监控程序的生成 ls /usr/local/bin/inotifywait
- 在目录下创建远程同步shell脚本
Shell #!/bin/bash Monitor="inotifywait -mrq -e modify,create,attrib,move,delete /home/" Sync="rsync -azH --delete --timeout=30 --exclude=$FILE /home/ root@XXX.XXX.XXX.XXX:/sftp" $Monitor | while read path action file; do #filepath="$path$file" #echo "File path: $filepath" $Sync done
- inotify + hdfs + supervisor
Shell #!/bin/bash Monitor="inotifywait -mrq -e modify,create,move --exclude "^.bash*" /sftp/" $Monitor | while read path action file; do filepath="$path$file" username=`echo "${filepath}" | cut -d "/" -f 3` #echo "${filepath} ${username}" case "$action" in "MODIFY") echo "file ${filepath} has been modified." ;; "CREATE") echo "file ${filepath} has been created." ;; "MOVED_TO") echo "file ${filepath} has been moved." sudo -u $username hdfs dfs -put "$filepath" "/appcom/$username/" ;; *) echo "action $action" ;; esac done
-
验证是否上传成功,并设置开机自启动
sudo -u hadoop hdfs dfs -ls /user/hadoop #给脚本赋权 chmod +x /etc/rc.d/rc.local #设置开机自启动 echo "/rsync.sh" >> /etc/rc.d/rc.local
2.1通过NiFi监听SFTP上传文件到HDFS
业务流程图:
步骤
需要学习相关技术工具,作者也在学习中期待后续进展。
参考文章:
rsync:
https://blog.youkuaiyun.com/hahaxixi131/article/details/119430983?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-119430983-blog-116577028.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3NIFI:
https://blog.youkuaiyun.com/weixin_45568892/article/details/105396032