Hadoop分布式文件系统(HDFS)指南

随着数据量的爆炸性增长,传统的存储系统已经无法满足需求。Hadoop分布式文件系统HDFS)应运而生,它是一个为处理大规模数据集而设计的分布式文件系统,能够在成本效益高的硬件上部署,并且具有高容错性。HDFS是Apache Hadoop生态系统的核心组件之一,它遵循“写一次读多次”的原则,从而减少了数据加载的开销。

为什么选择HDFS?

HDFS因其能够处理海量数据集、快速从硬件故障中恢复、高度可移植性以及对流数据的访问能力而受到青睐。以下是选择HDFS的一些理由:

  • 大规模数据集:HDFS可以在单个集群中扩展数千个节点,确保了高聚合数据带宽,适用于数据量从TB到PB的实际场景。
  • 快速从硬件故障中恢复:硬件故障是常见问题,可能导致数据丢失或服务器宕机。HDFS内置了自动故障检测和恢复功能。
  • 可移植性:HDFS对硬件平台高度可移植,并且与普通硬件兼容。
  • 流数据访问:即“写一次读多次”的能力,提高了数据吞吐量。

HDFS架构和组件

HDFS架构遵循主从模式,包含以下组件:

  • NameNode:负责接收客户端任务的控制节点,管理文件系统命名空间和客户端对文件的访问。
  • Secondary NameNode:不是备份节点,而是NameNode的辅助节点或检查点节点。
  • 文件系统:HDFS遵循传统的层次文件系统,存储所有用户数据,并允许用户执行文件操作。
  • DataNode:也称为代理节点,负责根据NameNode的指令存储实际数据。
  • 块(Block):HDFS将大量用户数据以文件形式存储,文件可以进一步划分为小块,这些块是数据的物理表示,用于存储HDFS文件系统可以写入/读取的最小数据量。

启动HDFS

要在分布式模式下启动HDFS,首先需要格式化配置好的HDFS文件系统。执行以下命令以启动HDFS服务器(NameNode):

$ Hadoop Namenode -format

格式化HDFS后,可以启动分布式文件系统。运行以下命令以启动NameNode和DataNode作为集群:

$ start-dfs.sh

注意:.sh是Hadoop shell的扩展名。

在HDFS中列出文件

一旦将文件信息加载到服务器,就可以找到HDFS中所有文件和目录的特定列表。使用“ls”命令获取文件和目录的名称及其状态:

$HADOOP_HOME/bin/hadoop fs -ls

HDFS中插入数据

在将数据插入Hadoop文件系统之前,数据应该存在于本地系统中。以下是将数据插入Hadoop分布式文件系统的步骤:

  1. 在HDFS中创建输入目录:
  2. $HADOOP_HOME/bin/hadoop fs -mkdir /user/input
  3. 使用“put”命令将数据从本地系统传输并存储到Hadoop文件系统中。
  4. $HADOOP_HOME/bin/hadoop fs -put /home/sample.txt /user/input
  5. 使用“ls”命令验证文件。
  6. $HADOOP_HOME/bin/hadoop fs -ls /user/input

从HDFS检索数据

  1. 使用cat命令查看名为sample的Hadoop文件的内容。
  2. $HADOOP_HOME/bin/Hadoop fs -cat /user/output/sample
  3. 运行“get”命令将文件从HDFS检索到本地文件系统。
  4. $HADOOP_HOME/bin/hadoop fs -get /user/output/ /home/cloudera/
$ stop-dfs.sh
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485