如何删除docker容器中的hdfs数据

omvjsjqw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(500)

我在中运行hadoop集群 Docker 通过装入本地文件夹 -v .
然后,我登录hadoop集群并将“cd”放到mount文件夹并执行 hdfs dfs -put ./data/* input/ . 它起作用了。
但我的问题是我不能删除我复制到的数据 hdfs . 我删除容器 docker rm ,但数据仍然存在。现在我只能重置docker,数据可以删除。
还有别的解决办法吗?
这是我的 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

0vvn1miw

0vvn1miw1#

这是个问题。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回来了。

iqih9akk

iqih9akk2#

要删除hdfs中的数据,您需要进行类似于放置文件的调用,在本例中:

hdfs dfs -rm ./data/*

如果有目录,您应该添加-r

hdfs dfs -rm -R ./data/*

最后,默认情况下,hadoop会将删除的文件/目录移动到一个垃圾目录,该目录将位于您用于此请求的hadoop用户的主页中,类似于 /user/<you>/.Trash/ 关于hdfs
通常在namenode中有一些关于hdfs结构的元数据,比如其中的目录或文件,以及构成hdfs的块存储在哪里(哪些数据节点)。虽然datanodes将保留hdfs数据块,但存储的数据通常不可用,因为它通常只是hdfs中数据块的一部分。
因此,使用hdfs的所有操作都是通过namenode完成的 hdfs 电话,比如 put , get , rm , mkdir ... 而不是常规的操作系统命令行工具。

相关问题