这篇文章主要介绍“自动化HDFS数据复制机制的简单用法”,在日常操作中,相信很多人在自动化HDFS数据复制机制的简单用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”自动化HDFS数据复制机制的简单用法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在本章的前半部分,我们研究了两种可以将半结构化和二进制数据转换为HDFS的机制:开源HDFS File Slurper项目和Oozie,它们触发了数据入口工作流程。使用本地文件系统进行输入(以及输出)的挑战是,在集群上运行的map和reduce任务将无法访问特定服务器上的文件系统,将数据从HDFS移动到文件系统有三个广泛的选择:
在服务器(例如Web服务器)上托管agent,然后使用MapReduce将其写入。
在MapReduce中写入本地文件系统,然后在后处理步骤中触发远程服务器上的脚本以移动该数据。
在远程服务器上运行进程以直接从HDFS提取数据。
第三种选择是首选方法,因为最简单且最有效,因此这是本节的重点。我们将了解如何使用HDFS File Slurper自动将文件从HDFS移出到本地文件系统。
从HDFS导出文件的自动机制
假设有MapReduce用HDFS编写的文件,你想要将它们自动提取到本地文件系统。任何Hadoop工具都不支持此类功能,因此必须查看其他方法。
问题
自动将文件从HDFS移动到本地文件系统。
解决方案
HDFS文件Slurper可用于将文件从HDFS复制到本地文件系统。
讨论
这里的目标是使用HDFS File Slurper项目(https://github.com/alexholmes/ hdfs-file-slurper)来协助自动化。我们在前文详细介绍了HDFS File Slurper,请在继续使用此技术之前阅读该部分。
HDFS Slurper支持将数据从HDFS移动到本地目录,我们需要做的就是翻转源目录和目标目录,如Slurper配置文件以下所示:
你会注意到,HDFS中不仅有源目录,而且还有工作,完成和错误目录。这是因为需要能够在目录之间自动移动文件,而不会产生跨文件系统复制的昂贵开销。
总结
此时,你可能想知道如何触发Slurper来复制刚刚使用MapReduce作业编写的目录。当MapReduce作业成功完成时,它会在作业输出目录中创建一个名为_SUCCESS的文件。这似乎是启动输出进程将该内容复制到本地文件系统的完美触发器。事实证明,Oozie有一种机制可以在检测到这些Hadoop文件“成功”时触发工作流程,但这里的挑战是Oozie执行的任何工作都是在MapReduce中执行的,所以它不能用于执行直接转移。可以编写自己的脚本,轮询HDFS以查找已完成的目录,然后触发文件复制过程。如果源文件需要保持不变,那么文件复制过程可以是Slurper或简单的hadoop fs -get命令。
到此,关于“自动化HDFS数据复制机制的简单用法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!