大数据-HDFS-实操
问题:
为啥配置文件只需要指定主服务,无须指定从服务?
为啥需要客户端节点?
怎么逐一启动HDFS和统一启动HDFS?
咋在HDFS中上传文件?
master上部署主服务NameNode;
slave上部署从服务DataNode;
client上部署HDFS客户端。
HDFS基本特性:
- HDFS 分布式文件系统,为大数据其他组件提供了存储功能。具有高容错、高可靠、可扩展、高吞吐率的特征。
- HDFS的主节点NameNode、从节点DataNode
1 2 | NameNode管理文件系统的元数据 DataNode存储实际的数据。 |
3. HDFS开放文件系统的命名空间以便用户以文件形式存储数据,秉承“一次写入,多次读取”的原则。
4. 客户端通过NameNode和DataNode的交互访问文件系统,联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。
HDFS基本命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | hdfs文件的相关操作主要使用hadoop fs、hadoop dfs、hdfs dfs 命令,以下对最常用的相关命令进行简要说明。 hadoop fs - ls 显示当前目录结构, - ls - R 递归显示目录结构 hadoop fs - mkdir 创建目录 hadoop fs - rm 删除文件, - rm - R 递归删除目录和文件 hadoop fs - put [localsrc] [dst] 从本地加载文件到HDFS hadoop fs - get [dst] [localsrc] 从HDFS导出文件到本地 hadoop fs - copyFromLocal [localsrc] [dst] 从本地加载文件到HDFS,与put一致 hadoop fs - copyToLocal [dst] [localsrc] 从HDFS导出文件到本地,与get一致 hadoop fs - test - e 检测目录和文件是否存在,存在返回值$?为 0 ,不存在返回 1 hadoop fs - text 查看文件内容 hadoop fs - du 统计目录下各文件大小,单位字节。 - du - s 汇总目录下文件大小, - du - h 显示单位 hadoop fs - tail 显示文件末尾 hadoop fs - cp [src] [dst] 从源目录复制文件到目标目录 hadoop fs - mv [src] [dst] 从源目录移动文件到目标目录 |
HDFS适用场景
数据密集型并行计算:数据量极大,但是计算相对简单的并行处理,如大规模Web信息搜索。
计算密集型并行计算:数据量相对不是很大,但是计算较为复杂的并行处理,如3D建模与渲染、气象预报和科学计算;
数据密集与计算密集混合型的并行计算:如3D电影的渲染。
HDFS在使用过程中有以下限制:
(1)HDFS不适合大量小文件的存储,由于NameNode将文件系统的元数据存放在内存中,因此存储的文件数目受限于NameNode的内存大小。
(2)HDFS适用于高吞吐量,而不适合低时间延迟的访问;
(3)流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写),不支持随机写。
部署HDFS
配置安装环境
安装
修改配置文件
(1)设置JDK安装目录
1 2 3 | vim [ HADOOP-DIR ] /hadoop/etc/hadoop/hadoop-env .sh export JAVA_HOME=${JAVA_HOME} |
(2)指定HDFS主节点
1 | vim [ HADOOP-DIR ] /hadoop/etc/hadoop/core-site .xml |
将如下内容嵌入此文件里最后两行的<cofiguration> </configuration>标签之间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < property > < name > hadoop.tmp.dir </ name > < value > [ HADOOP-DIR ]/hadoop/cloud </ value > </ property > < property > < name > fs.defaultFS </ name > < value > hdfs://master:8020 </ value > </ property > |
HDFS参数介绍
fs.defaultFS
默认文件系统的名称。一个URI和权威确定文件系统实现的方案。uri的计划决定配置属性(fs.SCHEME.impl)命名文件系统实现类。uri的权威是用来确定主机、端口等对于一个文件系统
1 2 3 4 | < property > < name >fs.defaultFS</ name > < value >hdfs://172.18.11.2:9000</ value > </ property > |
dfs.name.dir
1 2 3 4 | < property > < name >dfs.name.dir</ name > < value >/pvdata/hadoopdata/name/,/opt/hadoopdata/name/</ value > </ property > |
dfs.data.dir
1 2 3 4 | < property > < name >dfs.data.dir</ name > < value >/dev/sda3/hadoopdata/,/dev/sda1/hadoopdata/</ value > </ property > |
hadoop-env.sh里面:
HADOOP_LOG_DIR日志存放的目录
XML文件里主要的参数:
core-site.xml
fs.default.name,namenodeRPC服务运行的地址和端口,默认端口是8020,一般它的值是hdfs:开头指向namenode加端口号
hadoop.tmp.dir,默认是放在/tmp的一个子目录,建议设置在别的目录
手工备份namenode的办法:只要备份dfs.name.dir目录下的两个文件fsimageandedits文件
可以通过WEb界面备份,方法是:
curl http://master1:50070/getimage?getimage=1>$BACKUP_DIR/fsimage
curl http://master1:50070/getimage?getedit=1>$BACKUP_DIR/edits
恢复的时候,先停掉namenode:hadoop-deamon.shstopnamenode
把文件拷回去,再启动:hadoop-deamon.shstartnamenode
一般要用hadoopfsck检查完整性。
现在新版的hadoop这个属性改为dfs.namenode.name.dir
启动HDFS服务
验证服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2019-12-08 英语
2019-12-08 ES的索引查询和删除
2018-12-08 java运算符