我有一堆文件,我需要在我的映射器类访问。我的假设是,如果我将这些文件打包到我的作业jar文件,我不需要把它们放在DistributedCache中,因为jar文件被复制到所有节点作为一个整体,当提取这些文件会在那里?我的假设正确吗?如果没有,是否可以将这些文件与我的jar文件一起发送,而不是单独将它们复制到HDFS ?
您可以将它们包含在jar中。根据大小的大小,您将有网络带宽的使用。
使用分布式缓存也是一个不错的选择,可以发送文件、zip文件或jar文件。您可以在运行Hadoop jar命令时单独使用每个选项。这些文件将被移动到任务节点,并可供应用程序jar使用。移动jar文件(map reduce依赖的jar)的一个区别是,它们将被添加到mp reduce jar运行的类路径中。对于其他文件,如文件和zip文件,它们将被移动到任务节点。