大数据-重新学习hadoop篇(第一天)-未完成

前言:

首先这次重新学习为了后面校招,我会把我每天复习学到的一些觉得重要的知识点进行总结下来,持续更新,为实习做准备,加深记忆,从今天开始可能就不会法leetcode的相关题解了,但是每天还是会做每日一题的,加油。

hadoop优势

1.高可靠性:Hadoop底层的hdfs会进行副本存储,当一台机器挂了的时候,它有副本就可以重新启动恢复
2.高扩展性:当双11这种网络拥堵情况出现的时候,可以扩充机器进行负载均衡,所以扩展性也是非常不错的
3.高效性:可以多节点同时工作和高可靠性相互依赖
4.高容错性:任务失败可以重新调度

hadoop的三个大版本显著区别(1.0,2.0,3.0)

对于hadoop1.0来说不存在YARN,没有资源调度,没有高可用,会出现单点故障

对于hadoop2.0来说增加了YARN,也有了多机器操作

对于hadoop3.0来说增加了HA,MapReduce得到了性能优化

hadoop的shell命令

首先有三个命令:

  1. hadoop fs:通用的文件系统命令,针对任何系统,比如本地文件,HDFS......(当文件系统是HDFS时候,与下面两个等效)

  1. hadoop dfs:特定针对HDFS的文件系统,但hadoop3.0之后不推荐用(但是这个bug比较少)

  1. hdfs dfs:hdfs文件系统的操作命令,建议用这个代替hadoop dfs的命令

我推荐用hadoop dfs因为我用hdfs dfs命令老有错误。。。

操作命令:
  1. 移动本地文件夹到HDFS端-moveFromLocal(注意一般的hdfs操作命令都是驼峰命名法)

hadoop dfs -moveFromLocal (本地文件夹位置) (HDFS文件夹位置)
  1. 复制本地文件到HDFS端-copyFromLocal

hadoop dfs -copyFromLocal (本地文件夹位置) (HDFS文件夹位置)

3.复制本地文件到HDFS端-put(与copyFromLocal用法一致,这个简单用的多)

hadoop dfs -put (本地文件夹位置) (HDFS文件夹位置)

4.复制HDFS端文件到本地-copyToLocal

hadoop dfs -copToLocal (HDFS文件夹位置) (本地文件夹位置)

5.复制HDFS端文件到本地-get

hadoop dfs -get (HDFS文件夹位置) (本地文件夹位置)

6.追加命令(因为HDFS不支持文件修改,或者说文件修改效率很低下)-appendToFile

如果要修改两种方法1.将hdfs文件get拉取到本地磁盘修改之后在put上去进行覆盖 2.追加

hadoop dfs -appendToFiile (本地文件夹位置) (HDFS文件夹位置)

7.一些其他的命令,类似于linux命令,Eg:ls,ll,cat,touch,chmod,tail .......

hadoop dfs -ls /

javaapi实现hdfs的读写过程

比较简单,没啥演示的,导入jar包,配置config,就可以使用了......

hdfs写入数据的流程

1. 用户请求数据namenode数据是否可以上传
2. namenode进行数据响应 第一点:查看该用户是否有权限进行写 第二点:查看上传目录是否可行
3. namenode响应结果(根据复制负载均衡和节点可用性来选择datanode)给用户(并且自己会将元数据存入本地磁盘保存,后面会说),用户开启流传输通达通道,每次发送一个block(0-128m)大小的资源
4. 用户准备发送,FsDataoutStream流发送,以最小单位chunk开始(512byte内容+4byte头文件),当chunk到达64k时候进行打包以流的形式发送到datanode
5. datanode被namenode选择好了之后,建立两个管道,第一个是传输管道,第二个是ACK应答管道(保证数据的完整性,如果机器挂断,后面还可以恢复)
6.数据传输采用串行方式进行传输,传给第一个datanode后,它一边接受一般往后面其他副本datanode进行传输,然后等代它们的ACK应答

网络括扑,节点距离计算

简单,不重要,了解即可,类似与树找父母节点

副本选择(根据源码读取得到结论)

1.第一步找到一个最近机架放至第一个副本
2.第二个是与第一个节点不同机架的最近机架(高可用性)
3.第三个是与第二个节点相同机架的不同节点(高效性)
解释:首先第一个节点找最近的是没啥好说的,第二个节点找不同就是为了宕机之后的恢复,高效性的体现,第三个与第二个在同一个机架是为了防止网络传输导致性能损失,因为第一个节点与第二个节点传递时候要建立一个网络连接(跨机架连接),第二个与第三个也要建立,但如果第二个和第三个在同一个机架的话,就可以避免跨机架传输减少网络资源浪费

为什么block大小一般是128m??(新浪面试题)

因为这个与硬盘传递效率有关,当hdfs找资源的时间为10ms时,我们理想状态下,当寻找时间是传递时间的百分之10的时候最为理想,所以传递时间为1s,正常我们的机械硬盘传递速度是100mb/s,好公司的固态硬盘可以达到200mb/s,所以当100mb/s的时候我们block为128mb时是最理想的(1024进制,不能是100mb吧?),所以大公司一般的block大小是256m

Hdfs读取数据流程

1.首先客户端向namenode发送读取请求,namenode根据1.用户权限 2.内容有效性(根据元数据是否存在)
2.namenode将元数据返回给客户端,客户端创建FsDataInputStream流进行block读取
3.根据负载均衡(每个datanode都有副本)来读取对应的datanode
4.串行从datanode读取好对应的block后,进行拼接就可以得到

namenode和Secondnamenode工作原理(重点)

一般开发环境下是不存在2nn的,因为有HA可以完美完成2nn的工作(因为2nn的内容没有nn完全,毕竟是秘书)
有个问题就是将namenode的元数据存在内存还是磁盘呢?
1.内存 计算速度快,但是宕机之后数据就没了,安全性不好
2.磁盘 计算速度慢,但是持久化到磁盘的话是安全的
有人说两个一起用?只会更慢........
我们根据core-site.xml发现了元数据和hdfs的存储数据在data目录里面

找到这个目录查询档期那namenode到底存了什么,进入这个目录?

发现有两个目录dfs和nm-local-dir

进入nm-local-dir,我们发现是一些内存缓存(cache)

进入dfs,第一个data文件进去一直点是我们hdfs的副本的实时存储文件,里面存放我们的hdfs内容

进入第二个name,in_use.lock是缓存

再进入current,发现了namenode的存储内容(重点)

1. edits_0000000000000011702-0000000000000011703 是我们的操作内容(加密了无法查看)
2. edits_inprogress_0000000000000011704 可以理解为我们正在操作的内容(和后面的2nn有关系)
3. fsimage_0000000000000011701 和 fsimage_0000000000000011701.md5 是镜像序列话的文件,md5是加密文件
4. seen_txid记录当前操作的id,VERSION记录当前版本

然后我们进入2nn的目录,因为我是集群,所以我的2nn在另一个虚拟机上面

进入namesecondary

一直进到底

发现和我们的nn是一样的配置,但是少了一个edits_inprogress_0000000000000011704,seen_txid

所以我们现在来看两个的工作机制会更清楚,再说之前提一句,fsimage文件是存储数据结果的,因为hdfs无法进行修改只能追加,edits是将操作过程记录下来,最后服务器启动的时候就会将二者合起来生成新的edits加载到内存

1.当启动服务器的时候fsimage(镜像文件)文件和edits(编辑日志)合并起来放到内存里面
2.当用户的CRUD操作来了之后,我们会先修改inprogress文件再同步到内存的edits(因为这样安全,防止突然宕机引起丢失数据)
3.2nn会规律的向nn发送checkpoint请求(1.一小时 2.当edits内容到100w条的时候)
4.如果checkpoint得到响应之后,2nn会把nn里面的inprogress和edits拉到磁盘进行合并,在自己磁盘里面进行备份(就是我们看到的那些edits文件, 但是没有inprogress,因为2nn不做资源调度
5.合并完成之后备份了之后,发送给nn,形成新的edits,并且nn建立一个新的fsimage覆盖原来的fsimage,之后用户的CRUD都会在新的fsimage进行备份存储

(2023.3.15.23点05分 )

我找到了一些方法查看fsimage镜像文件的方法

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

查看edits文件的方法

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

我们用上面方法打开文件进行查看

打开xml文件

往下翻,下面有我们的树目录,里面记载了我们的父节点和子节点,也就是我们所说的上级目录和下级目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】不同路径,编辑距离题解及代码实现

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

【前端】深入浅出缓存原理

缓存的基本原理 对于前端来说,缓存主要分为浏览器缓存(比如 localStorage、sessionStorage、cookie等等)以及http缓存,也是本文主要讲述的。 当然叫法也不一样,比如客户端缓存大概包括浏览器缓存和http缓存 所谓htt…

“选用育留”,让AI搞定人力资源那点事

人工智能可以渗透应用到各行各业,在人力资源领域,技术已经重构了我们对人力资源的想象力,许多企业都在应用AI技术改善人力工作,人力资源的数智化不仅仅是将一部分日常事务性的工作交由AI处理,节约工作时间,…

到底什么是线程?线程与进程有哪些区别?

上一篇文章我们讲述了什么是进程,进程的基本调度 http://t.csdn.cn/ybiwThttp://t.csdn.cn/ybiwT 那么本篇文章我们将了解一下什么是线程?线程与进程有哪些区别?线程应该怎么去编程? 目录 http://t.csdn.cn/ybiwThttp://t.csdn…

HTTP详解

一,什么是HTTPHTTP(全称为“超文本传输协议”),是一种应用非常广泛的应用层协议,之前在《初识网络原理》的博客(初识网络原理_徐憨憨!的博客-CSDN博客)中,有详细讲解过TCP/IP五层模型,其中应用层描述了数据…

算法---完成任务的最少工作时间段

题目: 你被安排了 n 个任务。任务需要花费的时间用长度为 n 的整数数组 tasks 表示,第 i 个任务需要花费 tasks[i] 小时完成。一个 工作时间段 中,你可以 至多 连续工作 sessionTime 个小时,然后休息一会儿。 你需要按照如下条件…

即时通讯系列-N-客户端如何在推拉结合的模式下保证消息的可靠性展示

结论先行 原则: server拉取的消息一定是连续的原则: 端侧记录的消息的连续段有两个作用: 1. 记录消息的连续性, 即起始中间没有断层, 2. 消息连续, 同时意味着消息是最新的,消息不是过期的。同…

CKA最新考试费用是多少?考试内容是什么?

CKA认证考试是由Linux基金会和云原生计算基金会(CNCF)创建的,以促进Kubernetes生态系统的持续发展。该考试是一种远程在线、有监考、基于实操的认证考试,需要在运行Kubernetes的命令行中解决多个任务。CKA认证考试是专为Kubernetes管理员、云管理员和其他…

YOLOv8初体验:检测、跟踪、模型部署

安装 YOLOv8有两种安装方式,一种是直接用pip命令安装: pip install ultralytics另外一种是通过源码安装: git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e .[dev]安装完成后就可以通过yolo命令在命令…

Yolov8详解与实战

文章目录摘要模型详解C2F模块Losshead部分模型实战训练COCO数据集下载数据集COCO转yolo格式数据集(适用V4,V5,V6,V7,V8)配置yolov8环境训练测试训练自定义数据集Labelme数据集摘要 YOLOv8 是 ultralytics …

Git规范

Commit 规范 常见的开源社区 commit message 规范: 比如 Angular 规范: 语义化:commit message 被归为有意义的类型用来说明本次 commit 的类型。 规范化:commit message 遵循预先定义好的规范,比如格式固定、都属…

GIS(地理信息系统/地理信息科学)职称评审三:中科院和人社部职称评审结果公示对比

目录1.前言2.中科院3.人社部3.1 初级、中级3.2 高级、正高级3.3 公示时间4. 证书5. 程序员要不要评职称?6.总结1.前言 我们在前两篇已经讲过了GIS(地理信息系统/地理信息科学)怎么评职称?以及中科院和人社部职称评审所需材料内容对…

Qss样式表语法

QSS样式表语法 更多精彩内容👉个人内容分类汇总 👈👉QSS样式学习 👈文章目录QSS样式表语法[toc]概述一、样式规则二、选择器类型三、子控件四、伪状态五、样式表冲突解决六、级联七、继承八、命名空间中的控件概述 Qt样式表的概念…

2023年了,还是没学会内卷....

先做个自我介绍:我,普本,通信工程专业,现在飞猪干软件测试,工作时长两年半。 回望疫情纪元,正好是实习 毕业这三年。要说倒霉也是真倒霉,互联网浪潮第三波尾巴也没抓住,狗屁造富神…

软件缺陷详解

软件缺陷报告 知识点 软件缺陷的定义缺陷产生的原因如何编写缺陷报告缺陷报告的书写准则 简介 软件测试的目的是为了发现尽可能多的缺陷,这里的缺陷是一种泛称,他可以指功能的错误,也可以指性能低下,或者易用性差等。执行软件…

深度学习必备知识——模型数据集Yolo与Voc格式文件相互转化

在深度学习中,第一步要做的往往就是处理数据集,尤其是学习百度飞桨PaddlePaddle的小伙伴,数据集经常要用Voc格式的,比如性能突出的ppyolo等模型。所以学会数据集转化的本领是十分必要的。这篇博客就带你一起进行Yolo与Voc格式的相互转化&…

力扣-超过经理收入的员工

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:181. 超过经理收入的员工二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其…

Android之屏幕适配方案

在说明适配方案之前,我们需要对如下几个概念有所了解:屏幕尺寸,屏幕分辨率,屏幕像素密度。 屏幕尺寸 屏幕尺寸指屏幕的对角线的物理长度,单位是英寸,1英寸2.54厘米。 比如常见的屏幕尺寸:5.0、5…

组件库项目搭建

创建项目 使用pnpm create vite@latest 命令创建项目。 输入项目名,选择对应参数。 删除不需要的文件 添加pnpm-workspace.yaml 在项目根目录下创建一个pnpm-workspace.yaml文件,配置如下: packages:- demo # 存放组件示例代码- packages # packages 目录下都是组件包…

【pygame游戏】Python实现蔡徐坤大战篮球游戏【附源码】

前言 话说在前面,我不是小黑子~😏 本文章纯属技术交流~娱乐 前几天我获得了一个坤坤打篮球的游戏,也给大家分享一下吧~ 好吧,其实并不是这样的游戏,往下慢慢看吧。 准备工作 开发环境 Python版本:3.7.8 …