项目简介
本项目是基于Netty和HDFS(Hadoop Distributed File System)构建的分布式小文件存储系统,用于处理几KB到几百MB的小文件存储。通过分布式架构实现高可用性与高扩展性,系统包含NameNode、DataNode和BackupNode等组件,支持文件上传、下载、删除、属性读取等操作,还具备多租户机制和WebUI界面。
项目的主要特性和功能
- 分布式架构
- NameNode:管理文件系统元数据,如文件目录树、文件副本信息。
- DataNode:存储实际文件数据,定期向NameNode报告存储信息。
- BackupNode:作为NameNode备份,NameNode宕机时接管服务。
- 高可用性
- 主备切换:NameNode宕机后,BackupNode顶上。
- 多NameNode集群:解决超大规模文件存储的内存压力。
- 数据一致性
- 数据分包 + MD5文件校验:保证文件传输准确。
- NameNode内存目录树:采用Trie数据结构,提升读写效率。
- 多租户机制
- 用户认证:上传、下载文件需认证。
- 文件物理隔离:可配置DataNode集群实现不同用户文件物理隔离。
- 文件操作
- 文件上传:支持指定副本因子和自定义属性。
- 文件下载:基于Netty实现HTTP协议下载。
- 文件删除:删除文件移至垃圾箱,可恢复。
- WebUI界面
- 用户管理:对用户进行CRUD操作。
- 文件目录浏览:浏览、删除和恢复用户文件/文件夹。
- 运维功能
- 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.properties
和datanode.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】