- 拉取Hadoop镜像(可以在docker hub上找合适的镜像):
docker pull singularities/hadoop
- 创建docker-compose.yml文件(可以在文本编辑器中写好后,复制),内容如下:
version: "2"
services:
namenode:
image: singularities/hadoop
command: start-hadoop namenode
environment:
HDFS_USER: hdfsuser
ports:
- "8020:8020"
- "14000:14000"
- "50070:50070"
- "10020:10020"
- "13562:13562"
- "19888:19888"
datanode:
image: signularities/hadoop
command: start-hadoop datanode namenode
environment:
HDFS_USER: hdfsuser
links:
- namenode
基于yaml的语法,要注意空格,否则解析失败。
- 创建hadoop,执行如下命令
docker-compose up -d
docker ps
- 开启多个datanode
docker-compose scale datanode=3
docker ps
- 查看hadoop控制面板。由于服务刚初始化,可能需要等一会。访问类似如下url:
http://10.250.115.210:50070/dfshealth.html#tab-datanode
- 进入任意hadoop相关容器,进行hdfs基础操作
在任意datanode的容器中操作hdfs,会自动同步到其他的datanode容器中。
# 查看所有命令
hadoop fs
# 创建目录
hadoop fs -mkdir /hdfs #在根目录下创建hdfs文件夹
# 查看目录
hadoop fs -ls / #列出根目录下的文件列表
# 创建多级目录
hadoop fs -mkdir -p /hdfs/d1/d2
# 上传文件到HDFS
echo "hello world" >> local.txt #创建文件
hadoop fs -put local.txt /hdfs/ #上传文件到hdfs
# 下载hdfs文件
hadoop fs -get /hdfs/local.txt
# 删除hdfs中的文件
hadoop fs -rm /hdfs/local.txt
# 删除hdfs中的目录
hadoop fs -rmdir /hdfs/d1/d2