- 拉取Hadoop鏡像(可以在docker hub上找合適的鏡像):
docker pull singularities/hadoop
- 創(chuàng)建docker-compose.yml文件(可以在文本編輯器中寫好后,復(fù)制),內(nèi)容如下:
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的語法,要注意空格,否則解析失敗。
- 創(chuàng)建hadoop,執(zhí)行如下命令
docker-compose up -d
docker ps
- 開啟多個(gè)datanode
docker-compose scale datanode=3
docker ps
- 查看hadoop控制面板。由于服務(wù)剛初始化,可能需要等一會(huì)。訪問類似如下url:
http://10.250.115.210:50070/dfshealth.html#tab-datanode
- 進(jìn)入任意hadoop相關(guān)容器,進(jìn)行hdfs基礎(chǔ)操作
在任意datanode的容器中操作hdfs,會(huì)自動(dòng)同步到其他的datanode容器中。
# 查看所有命令
hadoop fs
# 創(chuàng)建目錄
hadoop fs -mkdir /hdfs #在根目錄下創(chuàng)建hdfs文件夾
# 查看目錄
hadoop fs -ls / #列出根目錄下的文件列表
# 創(chuàng)建多級(jí)目錄
hadoop fs -mkdir -p /hdfs/d1/d2
# 上傳文件到HDFS
echo "hello world" >> local.txt #創(chuàng)建文件
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