如何删除Docker容器中的HDFS数据

时间:2016-11-22 08:59:57

标签: hadoop docker

我通过Docker安装本地文件夹,在-v中运行hadoop群集。

然后我登录hadoop集群并将'cd'登录到mount文件夹并执行hdfs dfs -put ./data/* input/。它有效。

但我的问题是我无法删除我复制到hdfs的数据。我按docker rm删除容器,但数据仍然存在。现在我只能重置Docker并且可以删除数据。

还有其他解决方案吗?

这是我的码头信息

➜ hadoop docker info Containers: 5 Running: 5 Paused: 0 Stopped: 0 Images: 1 Server Version: 1.12.3 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 22 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: null bridge host overlay Swarm: inactive Runtimes: runc Default Runtime: runc Security Options: seccomp Kernel Version: 4.4.27-moby Operating System: Alpine Linux v3.4 OSType: linux Architecture: x86_64 CPUs: 5 Total Memory: 11.71 GiB Name: moby ID: NPR6:2ZTU:CREI:BHWE:4TQI:KFAC:TZ4P:S5GM:5XUZ:OKBH:NR5C:NI4T Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 56 Goroutines: 81 System Time: 2016-11-22T08:10:37.120826598Z EventsListeners: 2 Username: chaaaa Registry: https://index.docker.io/v1/ WARNING: No kernel memory limit support Insecure Registries: 127.0.0.0/8

2 个答案:

答案 0 :(得分:0)

要删除HDFS中的数据,您需要进行与放置文件时类似的调用,在这种情况下:

hdfs dfs -rm ./data/*

如果有目录,则应添加-r

hdfs dfs -rm -R ./data/*

最后,默认情况下,Hadoop会将已删除的文件/目录移动到垃圾箱目录,该目录位于您用于此请求的hadoop用户的家中,例如/user/<you>/.Trash/

关于HDFS

通常在namenode中有一些关于HDFS结构的元数据,比如它中的目录或文件以及存储它的块(哪些数据节点)。虽然数据节点将保留HDFS数据块,但存储的数据通常不可用,因为它通常只是HDFS中数据块的一部分。

因此,HDFS的所有操作都是通过名称节点使用hdfs调用完成的,例如putgetrmmkdir。 ..而不是常规的操作系统命令行工具。

答案 1 :(得分:0)

这是一个问题。 https://github.com/docker/for-mac/issues/371

  

如果您可以删除所有图像/容器,那么:

     
      
  • 停止Docker。

  •   
  • 运行

  •   
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls |awk '{print $2}')
rm -rf ~/Library/Containers/com.docker.docker/Data/*
  
      
  • 启动Docker,你有你的GB。
  •