大数据修炼之hadoop--HDFS

2024-09-02 12:32
文章标签 数据 hdfs hadoop 修炼

本文主要是介绍大数据修炼之hadoop--HDFS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 原理
    • 组件
  • 文件系统shell
  • java api
  • 数据流
  • NameNode
    • 作用:

原理

假设前提与设计目标

  • 硬件错误
  • 大规模数据集
  • 简单的一致性模型
  • 移动计算比移动数据共划算
  • 异构软硬件平台见的可以执行

组件

  • Namenode:HDFS的守护进程,用来管理文件系统的命名空间,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到哪些数据节点上,它的主要功能是对内存及IO进行集中管理。
  • Datanode:文件系统的工作节点,根据需要存储和检索数据块,并且定期向Namenode发送它们所存储的块的列表。
  • Secondary Namenode:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照,用以备份和恢复数据。

在Namenode节点上,fsimage保存了元数据镜像文件(文件系统的目录树),而edits中完整记录了元数据的操作日志(针对文件系统做的修改操作记录)。Namenode内存中存储的元数据可以用“fsimage+edits”来表达。而SecondaryNamenode负责定时(默认1小时)从Namenode上获取fsimage和edits进行合并,然后再发送给Namenode,减少Namenode的工作量。
在这里插入图片描述
每个文件存储成一系列的数据块(128MB)。为了容错,文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的。

文件系统shell

命令形式:hadoop fs -cmd
在这里插入图片描述

java api

maven依赖:

        <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>3.2.0</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>

代码:

    @org.junit.Testpublic void downloadFile() throws URISyntaxException, IOException {// 获得FileSystem对象FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.31.101:9000"), new Configuration());// 调用open方法进行下载,参数HDFS路径InputStream in = fileSystem.open(new Path("/wcinput/logs/hadoop-hadoop-namenode-hadoop1.log"));// 创建输出流,参数指定文件输出地址OutputStream out = new FileOutputStream("D://nn.log");// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置trueIOUtils.copyBytes(in, out, 4096, true);}@Testpublic void uploadFile() throws URISyntaxException, IOException, InterruptedException {FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.31.101:9000"), new Configuration(),"root");// 获得FileSystem对象,指定使用root用户上传
//        FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.0:9000"), new Configuration(), );// 创建输入流,参数指定文件输出地址InputStream in = new FileInputStream("D:\\apache-maven-3.6.3\\conf\\settings.xml");// 调用create方法指定文件上传,参数HDFS上传路径OutputStream out = fileSystem.create(new Path("/settings.xml"));// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置trueIOUtils.copyBytes(in, out, 4096, true);}

数据流

DataNode在写数据的时候创建packet(64k,包含多个chunk 512b数据+4b校验码),DateNode间建立数据通道。DataNode的选择与Hadoop的机架感知能力有关。
在这里插入图片描述

packet会放在一个dataQueue中,成功确认,失败回滚切换DN继续传输。
具体要看源码

NameNode

作用:

保存HDFS所有文件的元数据
接收客户端的请求
NameNode接收DataNode上报的信息,给DataNode分配任务

这篇关于大数据修炼之hadoop--HDFS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129957

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元