到目前为止,我们已经看到了从HDFS复制数据的不同选择。大多数机制没有自动化或调度功能,不过是用于访问数据的低级方法。如果希望自动化数据副本,可以将其中一种低级技术包含在调度引擎(如cron或Quartz)中。但是,如果正在寻找开箱即用的自动化工具,本节很适合你阅读。
在本章的前半部分,我们研究了两种可以将半结构化和二进制数据转换为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命令。
在本章的下一篇文章中,我们将介绍如何将Hadoop中的数据写入关系数据库。
相关文章:
1、《第一章:Hadoop生态系统及运行MapReduce任务介绍!》链接: http://blog.itpub.net/31077337/viewspace-2213549/
2、《学习Hadoop生态第一步:Yarn基本原理和资源调度解析!》链接: http://blog.itpub.net/31077337/viewspace-2213602/
3、《MapReduce如何作为Yarn应用程序运行?》链接: http://blog.itpub.net/31077337/viewspace-2213676/
4、《Hadoop生态系统各组件与Yarn的兼容性如何?》链接: http://blog.itpub.net/31077337/viewspace-2213960/
5、《MapReduce数据序列化读写概念浅析!》链接: http://blog.itpub.net/31077337/viewspace-2214151/
6、《MapReuce中对大数据处理最合适的数据格式是什么?》链接: http://blog.itpub.net/31077337/viewspace-2214325/
7、《如何在MapReduce中使用SequenceFile数据格式?》链接: http://blog.itpub.net/31077337/viewspace-2214505/
8、《如何在MapReduce中使用Avro数据格式?》链接: http://blog.itpub.net/31077337/viewspace-2214709/
9、《企业自有数据格式杂乱,MapReduce如何搞定?》链接: http://blog.itpub.net/31077337/viewspace-2214826/
10、《企业使用Hadoop的重大挑战:如何在HDFS中组织和使用数据?》链接: http://blog.itpub.net/31545816/viewspace-2215158/ 》
11、《如何在HDFS中进行数据压缩以实现高效存储?》链接: http://blog.itpub.net/31545816/viewspace-2215281/
12、《Hadoop数据传输:如何将数据移入和移出Hadoop?》链接: http://blog.itpub.net/31545816/viewspace-2215580/
13、《如何将日志和二进制文件连续移入HDFS?》链接: http://blog.itpub.net/31545816/viewspace-2215948/
14、《如何将传统关系数据库的数据导入Hadoop?》链接: http://blog.itpub.net/31545816/viewspace-2216000/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31545816/viewspace-2216448/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31545816/viewspace-2216448/