大数据技术之Hadoop(HDFS)_大数据hadoop-程序员宅基地

技术标签: # 后端(旧)  hdfs  hadoop  大数据  

HDFS简介

HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
产生原因:迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。
HDFS总体的组成架构:
在这里插入图片描述

HDFS的Shell操作

我使用的是hadoop fs 这种格式的指令比较多。

创建文件夹

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /sanguo

从本地上传文件到HDFS上。我习惯使用-put这个指令比较多

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -put ./wuguo.txt /sanguo

把一个文件追加到另一个文件尾部,因为HDFS只适合文件的追加。

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt

把一个文件从HDFS复制到本地

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt

显示目录信息

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /sanguo

显示文件内容

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo.txt

创建文件夹

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /jinguo

从HDFS的一个路径拷贝到HDFS的另外一个路径

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo.txt /jinguo

在 HDFS 目录中移动文件

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -mv /sanguo/weiguo.txt /jinguo

显示一个文件的末尾 1kb 的数据

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -tail /jinguo/shuguo.txt

删除文件或文件夹

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -rm /sanguo/shuguo.txt

递归删除目录及目录里面内容

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /sanguo

-du 统计文件夹的大小信息

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -du -s -h /jinguo
27 81 /jinguo
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -du -h /jinguo
14 42 /jinguo/shuguo.txt
7 21 /jinguo/weiguo.txt
6 18 /jinguo/wuguo.tx

设置 HDFS 中文件的副本数量

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -setrep 10 /jinguo/shuguo.txt

HDFS的写数据流程

在这里插入图片描述

  1. 要将ss.avi上传到HDFS中,客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在。
  2. NameNode 返回是否可以上传。(没有的话就可以上传啦)
  3. 客户端请求第一个 Block 上传到哪几个 DataNode 服务器上。
  4. NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3。(dn1,dn2,dn3这三个dn存三份儿数据)
  5. 客户端通过 FSDataOutputStream 模块请求 dn1 上传数据,dn1 收到请求会继续调用dn2,然后 dn2 调用 dn3,将这个通信管道建立完成。(先建立管道通信)
  6. dn1、dn2、dn3 逐级应答客户端。(返回消息的管道确立)
  7. 客户端开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地内存缓存),以 Packet 为单位,dn1 收到一个 Packet 就会传给 dn2,dn2 传给 dn3;dn1 每传一个 packet会放入一个应答队列等待应答。
  8. 当一个 Block 传输完成之后,客户端再次请求 NameNode 上传第二个 Block 的服务器。(重复执行 3-7 步)。

网络拓扑- 节点距离计算

节点距离就是NameNode通过计算要将数据存储到哪几个DataNode当中,选择最优的DataNode。
节点距离:两个节点到达最近的共同祖先的距离总和。
在这里插入图片描述

机架感知

这个就是副本存储数据的选择,在很多的DataNode当中,选择较合适的DataNode存储副本。
在这里插入图片描述
第一个副本在Client所处的节点上。如果客户端在集群外,随机选一个。
第二个副本在另一个机架的随机一个节点。
第三个副本在第二个副本所在机架的随机节点。

HDFS的读数据流程

在这里插入图片描述
(1)客户端通过 DistributedFileSystem 向 NameNode 请求下载文件,NameNode 通过查询元数据,找到文件块所在的 DataNode 地址。
(2)挑选一台 DataNode(就近原则,然后随机)服务器,请求读取数据。
(3)DataNode 开始传输数据给客户端(从磁盘里面读取数据输入流,以 Packet 为单位来做校验)。串行传输的。
(4)客户端以 Packet 为单位接收,先在本地缓存,然后写入目标文件。

NN 和 和 2NN 工作机制

在这里插入图片描述
第一 阶段:NameNode 启动
(1)第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode 记录操作日志,更新滚动日志。
(4)NameNode 在内存中对元数据进行增删改

第二 阶段:Secondary NameNode 工作
(1)Secondary NameNode 询问 NameNode 是否需要 CheckPoint。直接带回 NameNode是否检查结果。
(2)Secondary NameNode 请求执行 CheckPoint。
(3)NameNode 滚动正在写的 Edits 日志。
(4)将滚动前的编辑日志和镜像文件拷贝到 Secondary NameNode。
(5)Secondary NameNode 加载编辑日志和镜像文件到内存,并合并。
(6)生成新的镜像文件 fsimage.chkpoint。
(7)拷贝 fsimage.chkpoint 到 NameNode。
(8)NameNode 将 fsimage.chkpoint 重新命名成 fsimage。

DataNode工作机制

在这里插入图片描述
(1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
(2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上报所有的块信息
(3)心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台机器,或删除某个数据块。如果超过 10 分钟没有收到某个 DataNode 的心跳,则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器。

补充

在搭建hadoop集群的时候,遇到问题的解决方案。

  1. 搭建好集群之后,测试wordcount案例时候,出现错误,对/opt/module/hadoop-3.1.3/etc/hadoop路径下的mapred-site.xml进行编辑,添加下面内容。
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52077949/article/details/125812552

智能推荐

python读取excel数据绘制简单曲线图_python 读取excel数据绘制曲线图-程序员宅基地

python读写excel文件有很多种方法:用xlrd和xlwt进行excel读写用openpyxl进行excel读写用pandas进行excel读写本文使用xlrd读取excel文件(xls,sxls格式),使用xlwt向excel写入数据一、xlrd和xlwt的安装安装很简单,windos+r调出运行窗口,输入cmd,进入命令行窗口,输入以下命令。安装xlrd: pip install xlrd安装xlwt: pip install xlwtxlrd的API(applica_python 读取excel数据绘制曲线图

mkfs.ext4 磁盘分区-程序员宅基地

在linux上格式化一个磁盘分区时,出现如下错误 root@d:~# mkfs.ext4 /dev/sdb1 mke2fs 1.41.12 (11-May-2015) mkfs.ext4: inode_size (128) * inodes_count (0) too big for a filesystem with 0 blocks, spec...

tp5 三元运算符嵌套使用-程序员宅基地

判断 [男, 女 ,保密] 三种状态 {$v['sex']==0 ? '女' : ($v['sex'] == 1 ? '男' : '保密') }

golang winForm开发-程序员宅基地

2019独角兽企业重金招聘Python工程师标准>>> ..._golang winform

鸿蒙不支持手机,华为第一款鸿蒙手机确认!不是P50系列,也不支持5G_旋斡勃人的博客-程序员宅基地

由于芯片受阻,华为手机业务不断萎缩,不仅丢掉了国内市场老大哥的位置,在全球市场排名中更是沦为了“其他”,令消费者无奈的是,芯片稀缺直接影响了华为手机的出货量,为了买到华为手机不得不多花钱在第三方购买。也就是说,5G芯片缺货问题一天不解决,这些情况都不会改善,不过4G手机或许一大突破口!近日,华为官方网站悄悄上架三款新手机,这里的新手机并非常规的新手机,而是华为MateX2折叠屏手机、华为Mate4..._华为不支持鸿蒙系统的手机

Sobel算子matlab实现 分类: 图像处理 2...-程序员宅基地

算子实际上是用来对图像进行卷积处理,其本质是用变分法来处理梯度问题,用途就是边缘检测。45度和135度效果一般,水平检测加垂直检测效果还可以。function Sobel(name,Threshold) f = imread(name); f = rgb2gray(f); f = im2double(f); subplot(231);...

随便推点

Webstorm 中npm不是内部或外部命令也不是可运行的程序-程序员宅基地

1.在官网下载Node.js2.配置webstrom支持node.js语法检测 在file-->settings-->languages&frameworks-->node.js and NPM重新添加Node.js的路径就好了3.重新启动Webstorm完美解决...

安卓手机端运行的adb工具_苹果、安卓手机端 移动营销、办公+华为云-程序员宅基地

企业欠帐、业务员手机下单收款 管理软件试用18092778127王肖华为云+速达天耀S3:给您稳定的软件使用环境,24小时的随时使用,极速的扫码出货速度,严谨的客户权限控制;让您的移动营销、办公,管理不再是梦想安卓手机(百度手机助手搜索下载安装:天耀云进销存)苹果手机(苹果商店下载:天耀S3)3系进销存手机端 单据有:销售机会 销售报价 销售订单 销售开单..._安卓手机用adb,ios手机用什么

59——EXPLORING THE LIMITS OF DATA AUGMENTATION FORRETINAL VESSEL SEGMENTATION-程序员宅基地

论文信息:Exploring The Limits Of Data Augmentation For Retinal Vessel Segmentation | Papers With Code在我们的研究中,我们使用U-Net架构,我们依靠大量的数据增强来获得更好的性能。数据扩充的成功与否取决于能否成功地解决输入图像的问题。通过分析输入图像并进行相应的增强,我们表明U-Net模型的性能可以显著提高。报告的结果使用了最广泛使用的视网膜数据集DRIVE。血管的边缘非常薄,很难分割,输入图像的质量也有问题。此外

java 基础知识复习总结笔记_java基础总结大全笔记-程序员宅基地

对java基础面试题进行总结,将面试题分类型,分重点,以及提供了答题的思路文章目录1.java语言基础1.java 语言有什么特点2. java和c++区别3. Oracle JDK 和 OpenJDK 的对⽐4. 关于 JVM JDK 和 JRE 最详细通俗的解答5. 八种数据类型字节大小6. 自动拆箱自动装箱️7.java中方法的参数传递机制️8. == 和equals 以及HashCode8.1 == 和 equals 区别8.2 hashCode的作用8.3 **hashCode() 和 ._java基础总结大全笔记

Flink State 管理与恢复_flink state 恢复-程序员宅基地

  Flink 是一个默认就有状态的分析引擎,前面的 WordCount 案例可以做到单词的数量的累加,其实是因为在内存中保证了每个单词的出现的次数,这些数据其实就是状态数据。但是如果一个 Task 在处理过程中挂掉了,那么它在内存中的状态都会丢失,所有的数据都需要重新计算。从容错和消息处理的语义(At -least-once 和 Exactly-once)上来说,Flink引入了 State 和 CheckPoint。State 一般指一个具体的 Task/Operator 的状态,State 数据默认_flink state 恢复

Day10_04目标:字符缓冲输入流的使用_14、获取列表元素,15、将元素写入到缓冲流-程序员宅基地

目标:字符缓冲输入流的使用结构: 字节流 字符流 字节输入流 字节输出流 字符输入流 字符输出流 InputStream OutputStream Reader Writ..._14、获取列表元素,15、将元素写入到缓冲流

推荐文章

热门文章

相关标签