大数据HDFS存储过程

随着大数据时代的到来,第三次信息化浪潮已经开幕了(15年一次),在第四次信息化浪潮的到来之前,各种新兴企业的兴起也愈发迅速,大数据HADOOP体系的技术也愈发成熟

HDFS存储过程

       有客户端发送提交请求,首先与namenode进行交互,然后namenode与datanode实时发送心跳(即ping),然后将文件切分成block进行上传,但是其实HDFS默认有三个机架,这里就先不讲机架感知策略,只要知道机架感知是存放副本的就行.上传block时,是将以比block的单元进行传输的(即chunk---最小的存储单元),当block上传到第一个datanode时,它就会默认复制三份(dfs.replication设置),以chunk传输完一个存储单元,后立即往下一个副本传递.利用了时间重叠技术;然后datanode以一张map映射表告知namenode的block存储情况.

     副本存放策略:

       默认有两种算法,一是namenode查询datanode(CPU,内存等信息),然后找一个资源充足的datanode节点存放副本.

 

### HadoopHDFS大数据处理中的应用 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、付费专栏及课程。

余额充值