大数据HDFS基础操作

HDFS操作指南:Shell命令与API实战
本文详细介绍了HDFS的基础操作,包括Shell命令的使用,如创建目录、查看文件、移动文件等,以及客户端API的实现,如文件上传、下载、删除和重命名。还探讨了HDFS的数据流过程,包括写数据的步骤和节点距离计算。

第1章 HDFS概述



在这里插入图片描述
1.1 HDFS产出背景及定义

1.2 HDFS优缺点


1.3 HDFS组成架构
在这里插入图片描述

1.4 HDFS文件块大小(面试重点)

第2章 HDFS的Shell操作(开发重点)

#1.基本语法

bin/hadoop fs 具体命令 OR bin/hdfs dfs 具体命令
dfs是fs的实现类。
#2.命令大全
注意:在进行操作时一定要注意haddop 下的hdfs-site.xml中配置的节点数一定要和启动的datanode节点数一致,只能大不能小。

(0)启动Hadoop集群(方便后续的测试)
[jinghang@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
[jinghang@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
(1)-help:输出这个命令参数
[jinghang@hadoop102 hadoop-2.7.2]$ hadoop fs -help rm
(2)-ls: 显示目录信息
用法1:hadoop fs -ls /
功能:列出hdfs文件系统根目录下的目录和文件
用法2:hadoop fs -ls -R /
功能:列出hdfs文件系统所有的目录和文件
[jinghang@hadoop102 hadoop-2.7.2]$ hadoop fs -ls /
(3)-mkdir:在HDFS上创建目录
用法1:hadoop fs -mkdir
功能:只能一级一级的建目录,父目录不存在的话使用这个命令会报错
用法2:hadoop fs -mkdir -p
功能:所创建的目录如果父目录不存在就创建该父目录
[jinghang@hadoop102 had

### Hadoop 和 HDFS大数据处理中的应用 Hadoop 是一种分布式计算框架,旨在解决大规模数据集的储和分析问题。其核心组件之一是 HDFS (Hadoop Distributed File System),它是一种专为高吞吐量设计的分布式文件系统[^1]。 #### HDFS 的特点 HDFS 能够储超大文件并提供强大的扩展能力。它的硬件故障检测和自动快速恢复功能使得数据更加可靠。通常情况下,HDFS 中的数据会被切分成若干块,默认每块大小为 128 MB,并且每个块会有三个副本以增强冗余性和容错性[^3]。 #### HDFS 架构详解 HDFS 使用 Master/Slave 架构来管理集群内的数据储。具体来说,该体系结构由以下几个关键部件构成: - **NameNode**: 这是整个系统的管理者角色,负责维护元数据以及协调客户端请求。 - **DataNode**: 实际执行数据储工作的节点,在物理硬盘上保实际的数据块。 - **Secondary NameNode 或 Standby NameNode**: 辅助主 NameNode 工作的角色,主要用于定期合并编辑日志与镜像文件,防止单点失效风险[^2]。 当用户提交作业给 Hadoop 平台时,HDFS 客户端会先联系 NameNode 获取目标路径下的 block 列表信息,之后再直接同对应的 DataNodes 发起交互完成具体的 IO 操作过程。 #### 应用场景 由于上述特性决定,HDFS 更适用于那些需要频繁读取而较少更新的大批量静态数据分析任务。例如搜索引擎索引建立、社交媒体趋势预测等领域都非常依赖于这样的技术栈来进行高效离线批处理工作流调度。 以下是实现基本 MapReduce 程序的一个 Python 示例代码片段: ```python from hadoop import conf, fs def main(): configuration = conf.Configuration() input_path = "/input" output_path = "/output" # 创建 FileSystem 对象连接远程 HDFS filesystem = fs.FileSystem.get(configuration) try: if not filesystem.exists(input_path): raise Exception(f"{input_path} does not exist.") # 删除已在的输出目录以防报错 if filesystem.exists(output_path): filesystem.delete(output_path, True) finally: filesystem.close() if __name__ == "__main__": main() ``` 此脚本展示了如何检查输入路径是否在,并清理可能阻碍新运算启动的旧有结果集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值