例如:
减少结果:part-00000
、part-00001
。。。CCD_ 3,集群有3个数据节点,我想
- 将
part-00000
、part-00001
和part-00002
放入slave0
- 将
part-00003
、part-00004
和part-00005
放入slave1
- 将
part-00006
、part-00007
和part-00008
放入slave2
我该怎么做?
它不是那样工作的。HDFS中的文件不存储在任何特定的数据节点中。每个文件都由块组成,每个块都复制到多个节点(默认为3个)。因此,每个文件实际上都存储在不同的节点中,因为组成它的块存储在不同节点中。
引用官方文件,我建议您阅读:
HDFS公开了一个文件系统名称空间,并允许用户数据存储在文件中。在内部,文件被拆分为一个或多个块,这些块存储在一组DataNodes中。NameNode执行文件系统命名空间操作,如打开、关闭和重命名文件和目录。它还确定块到DataNodes的映射。DataNodes负责提供来自文件系统客户端的读写请求。DataNodes还根据NameNode的指令执行块创建、删除和复制。
看到您问题中的partition标记,可能值得说明的是,Partitioner定义了分区(而不是datanode),每个键最终都会出现在哪个分区中。例如,知道您有9个reduce任务(9个分区),您可能希望平均分配每个此类任务的工作负载。为了做到这一点,你可以定义,例如,以字母"s"开头的密钥应该发送到分区0,以字母"a"或"b"开头的密钥发送到分区1,等等(这只是一个愚蠢的例子来说明分区器的作用)。