hadoop fs -copyFromLocal localfile.txt cos://remotefile.txt => 创建失败 /disk2/s3a

hadoop fs -copyFromLocal localfile.txt cos://remotefile.txt => Failed to create /disk2/s3a

我正在尝试将文件从 IBM Analytics Engine 上传到云对象存储:

$ hadoop fs -copyFromLocal LICENSE-2.0.txt \
   cos://xxxxx/LICENSE-2.0.txt

但是,我收到有关创建磁盘失败的警告:

18/01/26 17:47:47 WARN fs.LocalDirAllocator$AllocatorPerContext: Failed to create /disk1/s3a 18/01/26 17:47:47 WARN fs.LocalDirAllocator$AllocatorPerContext: Failed to create /disk2/s3a

请注意,即使我收到此警告,文件仍在上传:

$ hadoop fs -ls cos://xxxxx/LICENSE-2.0.txt

-rw-rw-rw- 1 clsadmin clsadmin 11358 2018-01-26 17:49 cos://xxxxx/LICENSE-2.0.txt

问题似乎是:

$ grep -B2 -C1 'disk' /etc/hadoop/conf/core-site.xml
    <property>
      <name>fs.s3a.buffer.dir</name>
      <value>/disk1/s3a,/disk2/s3a,/tmp/s3a</value>
    </property>

$ ls -lh /disk1 /disk2
ls: cannot access /disk1: No such file or directory
ls: cannot access /disk2: No such file or directory

这些警告的含义是什么? /tmp/s3a 文件夹确实存在,那么我们可以忽略关于这些其他文件夹的警告吗?

hadoop 属性 'fs.s3a.buffer.dir' 支持列表(逗号分隔值)并指向本地路径。当路径丢失时,警告确实会出现,但可以安全地忽略它们,因为它们是 harmless.If 来自数据节点的相同命令 运行,警告不会显示 up.Regardless警告后,文件将被复制到 Cloud Object Store,因此不会产生任何其他影响。

fs 有多个值的想法。s3a.buffer.dir 到'/disk1/s3a,/disk2/s3a,/tmp/s3a' 是当 hadoop 作业 运行在 Cloud Object Store 的集群中,map-reduce 任务被安排在具有额外磁盘的数据节点上,即 /disk1 和 /disk2 与管理节点相比具有更多的磁盘容量。