littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Netty和HDFS的分布式小文件存储系统

项目简介

本项目是基于Netty和HDFS(Hadoop Distributed File System)构建的分布式小文件存储系统,用于处理几KB到几百MB的小文件存储。通过分布式架构实现高可用性与高扩展性,系统包含NameNode、DataNode和BackupNode等组件,支持文件上传、下载、删除、属性读取等操作,还具备多租户机制和WebUI界面。

项目的主要特性和功能

  1. 分布式架构
    • NameNode:管理文件系统元数据,如文件目录树、文件副本信息。
    • DataNode:存储实际文件数据,定期向NameNode报告存储信息。
    • BackupNode:作为NameNode备份,NameNode宕机时接管服务。
  2. 高可用性
    • 主备切换:NameNode宕机后,BackupNode顶上。
    • 多NameNode集群:解决超大规模文件存储的内存压力。
  3. 数据一致性
    • 数据分包 + MD5文件校验:保证文件传输准确。
    • NameNode内存目录树:采用Trie数据结构,提升读写效率。
  4. 多租户机制
    • 用户认证:上传、下载文件需认证。
    • 文件物理隔离:可配置DataNode集群实现不同用户文件物理隔离。
  5. 文件操作
    • 文件上传:支持指定副本因子和自定义属性。
    • 文件下载:基于Netty实现HTTP协议下载。
    • 文件删除:删除文件移至垃圾箱,可恢复。
  6. WebUI界面
    • 用户管理:对用户进行CRUD操作。
    • 文件目录浏览:浏览、删除和恢复用户文件/文件夹。
  7. 运维功能
    • Maven打包:支持项目打包。
    • 节点管理:提供各节点启动、停止脚本。
    • 命令行工具:用于文件操作。
    • 监控接入:支持接入监控系统。

安装使用步骤

1. 环境准备

确保安装Java 8或更高版本、Maven(用于项目构建和依赖管理)、Protobuf(序列化框架)。

2. 下载源码

bash cd ruyuan-dfs

3. 编译项目

进入项目根目录,执行以下命令: bash cd ruyuan-dfs/ruyuan-dfs-common mvn protobuf:compile && mvn install

4. 配置文件

在项目根目录下的conf目录中,配置namenode.propertiesdatanode.properties文件,设置基础目录、端口号等参数。

5. 启动NameNode

修改namenode.properties文件中的base.dir参数为本地路径,启动NameNode: bash cd ruyuan-dfs-namenode mvn exec:java -Dexec.mainClass="com.ruyuan.dfs.namenode.NameNode"

6. 启动BackupNode

bash cd ruyuan-dfs-namenode mvn exec:java -Dexec.mainClass="com.ruyuan.dfs.backup.BackupNode"

7. 启动DataNode

修改datanode.properties文件中的base.dir参数为本地路径,启动DataNode: bash cd ruyuan-dfs-datanode mvn exec:java -Dexec.mainClass="com.ruyuan.dfs.datanode.DataNode"

8. 运行客户端单元测试

启动所有节点后,运行单元测试验证系统功能: bash cd ruyuan-dfs-client mvn test

9. 使用WebUI界面

启动Tomcat服务器,通过浏览器访问WebUI界面进行操作。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】