我通过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
答案 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
调用完成的,例如put
,get
,rm
,mkdir
。 ..而不是常规的操作系统命令行工具。
答案 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。