docker部署hdfs
时间: 2025-01-11 16:29:27 浏览: 94
### 使用 Docker 部署 Hadoop 分布式文件系统 (HDFS)
#### 准备工作
为了使用 Docker 来部署 HDFS,需要先确保主机上已经正确安装了 Docker。对于 Ubuntu 用户来说,可以按照官方指南完成 Docker 的安装与配置[^1]。
#### 构建 Hadoop 基础镜像
创建一个新的 `Dockerfile` 文件用于构建自定义的 Hadoop 镜像:
```dockerfile
FROM ubuntu:latest
# 设置环境变量
ENV HADOOP_VERSION=3.3.0 \
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \
PATH=$PATH:/opt/hadoop/bin/:/opt/hadoop/sbin/
# 更新包列表并安装必要的软件包
RUN apt-get update && \
apt-get install -y openjdk-11-jdk wget curl tar gzip vim && \
rm -rf /var/lib/apt/lists/*
# 下载并解压 Hadoop 发行版
WORKDIR /opt/
RUN wget https://archive.apache.org/dist/hadoop/core/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz && \
tar xf hadoop-$HADOOP_VERSION.tar.gz && \
mv hadoop-$HADOOP_VERSION hadoop && \
ln -s /opt/hadoop/etc/hadoop /etc/hadoop
# 复制配置文件到容器内
COPY core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml /etc/hadoop/
EXPOSE 8088 9870 9864 9866 9867
CMD ["bash"]
```
上述脚本会下载指定版本的 Hadoop 并将其路径加入系统的 `$PATH` 中以便后续可以直接调用命令工具;同时还会暴露几个常用的端口供 Web UI 访问和其他组件通信所用。
#### 修改核心配置文件
接下来要编辑两个重要的 XML 格式的配置文件——`core-site.xml` 和 `hdfs-site.xml`。这些文件通常位于 `/etc/hadoop/` 目录下,在这里可以通过挂载本地文件的方式覆盖默认设置或直接在 Dockerfile 中复制进去。
以下是针对单节点伪分布模式下的简单配置示例:
**core-site.xml**
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
```
**hdfs-site.xml**
```xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:9870</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:9864</value>
</property>
</configuration>
```
以上配置指定了 NameNode 和 DataNode 对应的服务地址以及副本因子等参数[^2]。
#### 启动服务
编写好所有的配置之后就可以通过下面这条指令来启动一个包含 Hadoop 环境的新容器实例:
```shell
docker run -it --rm --name=hadoop-distributed-file-system -p 9870:9870 -v $(pwd)/config:/etc/hadoop my-hadoop-image bash
```
进入容器内部后继续初始化 HDFS 文件系统,并启动相关守护进程:
```shell
hdfs namenode -format
start-dfs.sh
jps
```
如果一切顺利的话应该能够看到如下输出表示各个角色均已正常运行起来[^3]:
```text
2437 DataNode
2548 SecondaryNameNode
2647 NodeManager
2962 Jps
```
此时便可以在浏览器里访问 http://localhost:9870 查看 Namenode 的状态页面了。
#### 测试集群功能
最后一步就是测试整个集群的功能是否完好无损。为此可参照之前提到的例子创建一些简单的文本数据集作为输入源上传给 HDFS 存储层处理:
```shell
mkdir input
echo "hello world" > input/file.txt
hadoop fs -put ./input /
```
这样就完成了利用 Docker 技术快速搭建起一套简易版 Hadoop 分布式文件系统的全过程介绍。
阅读全文
相关推荐


















