0. HDFS集群的配置
Hadoop集群配置后start-dfs.sh启动hdfs服务
Hadoop集群配置见前文
CentOS7下配置Hadoop集群和Zookeeper集群
https://blog.csdn.net/wxfghy/article/details/80417691
<https://blog.csdn.net/wxfghy/article/details/80417691>
1. Hadoop官方文档
http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
<http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html>
2. HDFS概念
Hadoop Distributed File System
Hadoop的分布式文件系统
HDFS被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。
3. 基本特点
高容错性,部署在低廉的硬件上,高吞吐量,适用于海量数据的可靠性存储和数据归档
4. HDFS设计目标
* 硬件失效
将硬件失效看作一种常态,健壮性,高可用.检查错误,快速和自动恢复是核心架构
* 流式访问
允许通过流的方式访问数据集,批量处理非交互,高吞吐量访问非低延迟
* 大数据集
支持PB级数据量,具有高带宽,可扩展到集群中
* 简单一致性模型
一次写入,多次读取,文件创建后无须修改(日志等),支持追加,不支持任意位置修改
* 移动计算要比移动数据更划算
以文件块管理,提供接口去移动计算到数据所在位置,非移动数据到应用位置
* 轻便的跨异构的软硬件平台
可轻便从一个平台跨到另一个平台,包括版本不同和运行环境不同
5. 重要特性
* 分块存储(block)
默认大小128M(2.x版本),64M(老版本),可修改
* 统一的抽象目录树
可通过路径访问文件(hdfs://namenode:port/…)
* 统一管理
目录结构和元数据的管理都由namenode(集群主节点)承担
负责维护目录树和文件所对应的block块id和所在datanode服务器
* datanode存储管理
集群从节点,每个block可在多个datanode上存储多个副本,副本数量可修改
* 一次写多次读,可追加不可改
* 一些缺点:
不便修改,延迟大,网络开销大,仅适用于数据分析任务
6. 常用命令
* hadoop fs 等同于 hdfs fs,作为命令头
功能 命令
hdfs协议访问namenode hadoop fs -ls hdfs://master:9000/
http协议访问datanode hadoop fs -ls http://slavea:50075/ <http://slavea:50075/>
在根目录下创建文件夹 hadoop fs -mkdir /mydemo
上传文件到目标文件夹 hadoop fs -copyFromLocal h1.txt /mydemo
下载文件到当前文件夹 hadoop fs -copyToLocal /mydemo/h1.txt ./d1.txt
查看文件 hadoop fs -cat /mydemo/h1.txt
查看目录下所有文件 hadoop fs -ls -R /
追加文件内容到目标文件中 hadoop fs -appendToFile ./h2.txt /mydemo/h1.txt
删除文件或文件夹 hadoop fs -rm -r /mydemo
7. HDFS工作机制
* datanode损坏
如配置10个datanode,备份数为3,则损坏1个datanode时会自动寻找新的datanode补充进来,保证备份数为设定值
* 写数据的流程
* 首先,客户端要和namenode通信以确认可以写文件并获得接收文件block的datanode
* 然后,客户端按顺序将文件逐个block传递给相应的datanode
* 最后,由接收到block的datanode负责向其他datanode复制block的副本
* 读数据的流程
* 首先,客户端将要读取的文件路径发送给namenode
* 然后,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端
* 最后,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件
8. HDFS常用功能
1.元数据
* Metadata,维护文件和目录信息,分为内存元数据和元数据文件
* NameNode主要存储元数据镜像文件Fsimage和日志文件Edits
* Fsimage记录某一永久性检查点时整个HDFS的元信息
* Edits所有对HDFS的写操作都会记录在此文件
2.检查点
* 定期对NameNode中的文件进行备份,NameNode启动时会将最新的Fsimage加载到内存中
* 由secondary namenode完成namenode备份,后者损坏后前者将fsimage拷贝到namenode工作目录,恢复其元数据
* 触发条件分为两次检查点间隔时间和两次检查点操作数两种
3.DataNode功能
* 存储管理用户的文件块数据,默认128M/block
* 定期汇报块信息给namenode,默认3600000ms(1小时一次)
热门工具 换一换