我想将数据同步到Hadoop文件系统。此数据旨在用作计划的MapReduce作业的输入。
这个例子可能解释更多:
假设我有一个包含大量单词的文档输入流,这些单词需要作为MapReduce WordCount作业的输入。因此,对于每个文档,应解析所有单词并将其上载到文件系统。但是,如果同一文档再次从输入流到达,我只希望从文件系统上传(或删除)更改。
如何存储数据;我应该使用HDFS还是HBase?数据量不是很大,可能是几GB。
是否可以使用HDFS和/或HBase的输入启动预定的MapReduce作业?
答案 0 :(得分:0)
我会首先选择最适合这项工作的工具,或做一些研究以做出合理的选择。你问的是这个问题,这是最重要的一步。鉴于您计划处理的数据量,Hadoop可能只是一个选项。如果这是朝着更大更好的方向迈出的第一步,那么这将缩小这个领域。
然后我会开始使用我期望工作的最简单的方法,这通常意味着使用我已经知道的工具。灵活编写代码,以便在您了解更多或遇到障碍时更容易用更好的选择替换原始选择。鉴于您在问题中所说的内容,我首先使用HDFS,使用Hadoop命令行工具将数据推送到HDFS文件夹(hadoop fs -put ...)。然后,我会写一个MR作业或作业来进行处理,手动运行它们。当它工作时,我可能会使用cron来处理作业的调度。
这是一个开始的地方。在构建过程时,如果您达到HBase看起来非常适合您要存储的内容的点,那么请切换到该过程。一次解决一个问题,这将使您明确哪一个工具是每个步骤的正确选择。例如,您可能会进入调度步骤并且知道当时cron将不会执行您所需的操作 - 也许您的组织对cron无法满足的作业调度有要求。所以,你选择了一个不同的工具。