HDFS简介
HDFS (分布式文件系统) 是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
client:切分文件,访问HDFS时,首先与NameNode交互,获取目标文件的位置信息,然后与DataNode交互,读写数据
NameNode:master节点,每个HDFS集群只有一个,管理HDFS的名称空间和数据块映射信息,配置相关副本信息,处理客户端请求。
DataNode:slave节点,存储实际数据,并汇报状态信息给NameNode,默认一个文件会备份3份在不同的DataNode中,实现高可靠性和容错性。
Secondary NameNode:辅助NameNode,实现高可靠性,定期合并fsimage和fsedits,推送给NameNode;紧急情况下辅助和恢复NameNode,但其并非NameNode的热备份。
Hadoop 2为HDFS引入了两个重要的新功能 ——Federation和高可用(HA):
- Federation允许集群中出现多个NameNode,之间相互独立且不需要互相协调,各自分工,管理自己的区域。 DataNode 被用作通用的数据块存储设备。每个 DataNode 要向集群中所有NameNode 注册,并发送心跳报告,执行所有 namenode的命令。
- HDFS中的高可用性消除了Hadoop 1中存在的单点故障,其中,NameNode故障将导致集群中断。HDFS的高可用性提供故障转移功能(备用节点从失败的主NameNode接管工作的过程)以实现自动化。
常用命令
使用Java程序对HDFS文件系统进行操作
通过HDFS文件系统提供的Java API,我们可以完成如下的操作:
① 在HDFS文件系统中创建目录;
1 | /** |
② 查看HDFS文件系统中的目录及文件信息;
1 | /** |
③ 通过FileSystem API读取数据(下载文件);
1 | /** |
④通过FileSystem API上传数据到HDFS文件系统中;
1 | /** |
⑤ 删除HDFS文件系统中的数据。
1 | /** |