一、系统架构
二、构成部分
1、Client 客户端,负责客户端和hdfs系统的交互。
2、NameNode 文件系统管理者,维护文件metadata信息。
3、DataNode 文件系统的文件存储者,提供文件的读/写操作。
4、Secondary NameNode 文件系统的监控者,监控hdfs状态和日志记录,备用NameNode
5、ResourceManager 资源管理者,负责集群中所有资源的统一管理和分配。
6、NodeManager 应用管理者,负责每台DS的管理。
三、性质
1、适合大文件类型的处理,采用分块存储,以64M为一块。
2、文件存储时,会备份多份文件到不同服务器。
3、文件一旦写入,不能修改,只能追加。
四、原理
1、Client调用API进行读/写操作;
2、连接NameNode获取文件元数据/创建文件元数据;
3、连接DataNode,读取文件内容/写入文件内容,写入时,会备份文件到不同节点;
五、缺陷
(1)不适合大量小文件存储,如果有这个需求,要对小文件进行压缩
(2)文件不允许修改(可以追加),只能删了重新上传
六、环境搭建(系统:utunbu18)
1、Hadoop 3.2.0
2、JDK1.8
3、修改配置文件:
①hadoop-env.sh 配置环境变量
②core-site 配置namenode和datanode之间的通讯
③hdfs-site 配置系统相关参数,比如备份数、页面监听地址
④mapred-site.xml 配置资源调用模式为yarn
⑤yarn-site.xml 配置resourceManager和nodeManager
4、启动hdfs和yarn集群
5、访问HDFS和YARN集群的Web可视化页面
七、项目接入
1.本地解压hadoop.gz.tar压缩包,并配合环境变量
2.项目pom添加hadoop-common、hadoop-client、hadoop-hdfs依赖
3.添加相关bean
4.测试
5.文件可正常下载
github地址:https://github.com/YhcAndHc/dfs-demo.git
注意里面有hdfs和fastdfs两个demo,请按需下载。