首页 > 其他分享 >HDFS入门

HDFS入门

时间:2023-09-18 21:12:12浏览次数:31  
标签:HDFS fs 入门 文件 dfs sanguo txt

  • HDFS的块大小设计原则
  • HDFS常用shell命令
  • HDFS的读写流程

第一章 HDFS概述

1.1 HDFS产生背景和定义

1.1.1 产生背景

大数据时代,需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统,HDFS就是分布式文件管理系统的一种

1.1.2 HDFS定义

  • HDFS(Haddop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由多个服务器联合起来实现功能
  • 适用场景:适合一次写入,多次读出的场景。

1.2 HDFS优缺点

优点:

  1. 高容错性
  2. 适合处理大数据
  3. 可构建在廉价机器上
    缺点:
  4. 不适合低延时数据访问
  5. 无法高效地对大量小文件进行存储
  6. 不支持并发写入、文件随机修改:仅支持数据数据append

1.3 HDFS组成架构

  • NameNode(NN): 管理者
    • 管理HDFS的名称空间
    • 配置副本策略
    • 管理数据库(Block)映射信息
    • 处理客户端读写请求
  • DataNode(DN):执行实际操作
    • 存储实际数据库
    • 执行数据库的读写操作
  • Client:客户端
  • SecondaryNameNode(2NN):并非NameNode的热备。当NameNode挂掉的时候,不能马上替换NameNode并提供服务
    • 辅助NameNode,分担其工作量,比如:定期合并fsimage和Edits,并推送给NameNode
    • 在紧急情况下,可辅助恢复NameNode

1.4 HDFS文件块大小

HDFS文件在物理上是分块存储的,块大小默认为128M,这是如何计算的?

  1. 寻址时间约为10ms
  2. 寻址时间约为传输时间1%,传输时间为1000ms = 1s
  3. 磁盘传输速率约为100m/s
  4. block大小 = 1 x 100 = 100m左右

第二章 HDFS的Shell操作

2.1 准备工作

  1. 启动Hadoop集群
    atguigu@hadoop102 $ sbin/start-dfs.sh
    atguigu@hadoop103 $ sbin/start-yarn.sh
  2. 输出这个命令的参数(查看命令帮助信息)
    atguigu@hadoop102 $ hadoop fs -help rm
  3. 创建/sanguo文件夹
    atguigu@hadoop102 $ hadoop fs -mkdir /sanguo

2.2 上传

  1. -moveFromLocal:从本地剪切粘贴到HDFS
hadoop fs -moveFromLocal ./shuguo.txt /sanguo
  1. -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
hadoop fs -copyFromLocal weiguo.txt /sanguo
  1. -put:等同与copyFromLocal,生产环境更习惯使用put
hadoop fs -put ./wuguo.txt /sanguo
  1. -appendToFile:追加一个文件到已经存在的文件末尾
hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt

2.3 下载

  1. -copyToLocal:从HDFS拷贝到本地
hadoop fs -copyToLocal /sanguo/shuguo.txt ./
  1. -get:等同于copyToLocal,生产环境更习惯使用get
hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt

2.4 HDFS直接操作

  1. -ls:显示目录信息
  2. -cat:显示文件内容
  3. -tail:显示一个文件末尾1kb的数据
  4. -chgrp, -chmode, chown:与Linux文件系统中的用法一样,修改文件所属权限
  5. -mkdir:创建路径
  6. -cp:从HDFS的一个路径拷贝到HDFS的另一个路径
  7. -mv:在HDFS目录中移动文件
  8. -rm:删除文件或文件夹
  9. -rm -r:递归删除目录及目录里面的内容
  10. -du:统计文件夹的大小信息
  11. -setrep:设置HDFS中文件的副本数量

第三章 HDFS的API操作

第四章 HDFS的读写流程

4.1 HDFS的写数据流程

4.1.1 剖析文件写入

4.1.2 网络拓扑-节点距离计算

  • 到达共同祖先的距离总和

4.1.3 机架感知(副本存储节点选择)

副本存储节点选择

  1. 本地节点
  2. 其他机架一个节点
  3. 其他机架另一个节点

4.2 HDFS的读数据流程

第五章 NameNode和SecondaryNameNode

5.1 FSimage和Edits解析

  • Fsimage文件:HDFS文件系统元数据的一个永久性检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息
  • Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中
  • seen_txid文件:保存一个数字,就是最后一个edits_的数字
  1. 查看oiv和oev命令
oiv
oev 
  1. 基本语法
hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径

hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径

5.2 CheckPoints时间设置

  1. 通常情况下,SecondaryNameNode每隔一小时执行一次,见hdfs-default.xml
<property>
	<name>dfs.namenode.checkpoint.period</name>
	<value>3600s</value>
</property>
  1. 一分钟检查一次操作次数,当操作次数达到一百万时,SecondaryNameNode执行一次
<property>
	<name>dfs.namenode.checkpoint.txns</name>
	<value>1000000</value>
	<descriptiong>操作动作次数</description>
</property>

<property>
	<name>dfs.namenode.checkpoint.period</name>
	<value>60s</value>
<description>一分钟检查一次操作次数</description>
</property>

第六章 DataNode

6.1 DataNode工作机制

  • DN向NN汇报当前解读信息的时间间隔,默认为6小时
<property>
    <name>dfs.blockreport.intervalMsec</name>
    <value>21600000</value>
    <description>Determines block reporting interval in milliseconds.</description>
</property>
  • DN扫描自己节点块信息列表的时间,默认为6小时
<property>
    <name>dfs.datanode.directoryscan.interval</name>
    <value>21600s</value>
<description>Interval in seconds for Datanode to scan data
directories and reconcile the difference between blocks in memory and on the disk.  Support multiple time unit suffix(case insensitive), as described in dfs.heartbeat.interval.
</description>
</property>

6.2 掉线时限参数设置

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>300000</value>
</property>

<property>
    <name>dfs.heartbeat.interval</name>
    <value>3</value>
</property>

标签:HDFS,fs,入门,文件,dfs,sanguo,txt
From: https://www.cnblogs.com/richiechuh/p/17713054.html

相关文章

  • 1.5万字长文:从 C# 入门 Kafka
    目录1,搭建Kafka环境安装docker-compose单节点Kafka的部署Kafka集群的部署2,Kafka概念基本概念关于Kafka脚本工具主题管理使用C#创建分区分区与复制生产者消费者修改配置3,Kafka.NET基础生产者批量生产使用Tasks.WhenAll如何进行性能测试消费4,生产者连接BrokerK......
  • HeadFirst设计模式学习之OO设计模式入门
    【一】引入---鸭子无论在哪门编程语言中,都离不开我们最熟悉的鸭子模型,因此作者在引入部分也是利用鸭子作为案例引入我们进行入门的学习【1】鸭子游戏现在我们需要做一款模拟鸭子游泳的游戏在游戏中,有不同的鸭子,不同的鸭子都会游泳和呱呱叫而这款游戏的实现思路就是一......
  • C++基础入门
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添......
  • BurpSuite入门指南
    ❤️拦截HTTP流量❤️1.开启拦截2.处理拦截 3.查看HTTP历史记录 ❤️修改HTTP请求❤️ ❤️重发请求❤️1.将报文发送到Repeater中继器2.在Repeater中重发请求 ......
  • 新手入门ArkTS调用NATIVE库的学习笔记
    【本文正在参加2023「盲盒」+码有奖征文活动】,活动链接https://ost.51cto.com/posts/25284前言本来想这周跟着HarmonyOS官网的codelabs学习一下ArkTS下对Native库的调用,不料harmonyos官网直接把这个Codelabs课程下线了,不知以后还会不会上线。上周五还看的挺正常的,自己还加入......
  • Mybatis 01 mybatis入门
    什么是MyBatis?MyBatis是一款优秀的持久层框架,用于简化JDBC开发MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis。2013年11月迁移到Github官网:https://mybatis.org/mybatis-3/zh/index.html......
  • Adobe Illustrator入门介绍
    “很多人在后台给小编留言想要学习一下AI。那么最近几期的内容主要着重如何利用AI绘制出高质量的数据图。想要学习AI的同学,可以关注一下近几期的内容。如果想要利用AI软件画出想要的高大上的图片,我们就需要对AI以及它的基本功能有一个了解,那么之后我们利用起来就不会一头雾水。”......
  • 03 CSS快速入门 , 和优势
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>学习css</title><!--规范,<style>写css,每一个声明,最好使用分号结尾-->选择器{声明1;声明2;声明3;}<linkrel="......
  • Python入门系列1-基础语法
    一、标识符标识符由字母、数字和下划线组成,但是不能以数字开头。标识符是区分大小写的。以下划线开头的标识有特殊意义。以单下划线开头_foo的代表不能直接访问的类属性,需要通过类提供的接口进行访问,以双下划线开头的__foo代表类的私有成员,以双下划线开头和结尾的__foo__代表Python......
  • CSP 20123 入门组第一轮
    2023CCF非专业级别软件能力认证第一轮,(CSP-J1)入门级C++语言试题考生注意事项:●试题纸共有10页。答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。●不得使用任何电子设备(如计算器、手机、电子网费等)或查阅任何书籍资料。一、单项选择题(共15题,每......