HDFS(学习笔记),终于找到一个看得懂的JVM内存模型了

格式:hdfs dfs -moveFromLocal

作用:和put命令类似,但是源文件localsrc拷贝之后自身被删除

hdfs dfs -moveFromLocal /root/install.log /

moveToLocal

未实现

get

格式 hdfs dfs -get [-ignorecrc ] [-crc]

作用:将文件拷贝到本地文件系统。CRC校验失败的文件通过-ignoecrc选项拷贝。文件和CRC校验和可以通过-CRC选项拷贝

hdfs dfs -get /install.log /export/servers

mv

格式:hdfs dfs -mv URI

作用:将hdfs上的文件从原路径移动到目标路径(移动之后文件删除),该命令不能跨文件系统

hdfs -dfs -mv /dir1/a.txt /dir2

rm

格式:hdfs dfs -rm[-r] [-skipTrash] URI [URI…]

作用:删除参数指定的文件,参数可以有多个。此命令值删除文件和非空目录

如果指定-skipTrash选项,那么在回收站可用的情况下,该选项将跳过回收站儿直接删除文件;

否则,在回收站可用时,在HDFS Shell中执行此命令,会将文件暂时放到回收站中

hdfs dfs -rm -r /dir1

cp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWvVz3Zq-1629014721323)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814122518856.png)]

cat

hdfs dfs -cat URI [uri …]

作用:将参数所指示的文件内容输出到stdout

hdfs dfs -cat /install.log

chmod

格式:hdfs dfs -chmod [-R] URI[URI …]

作用:改变文件权限,如果使用-R选项,则对整个目录有效递归执行,使用这一命令的用户必须是文件的所属用户,或者超级用户

hdfs dfs -chmod -R 777 /install.log

chown

格式:hdfs dfs -chmod [-R] URI[URI …]

作用:改变文件的所属用户和用户组,如果使用-R选项,则对整个目录有效递归执行,使用这一命令的用户必须是文件的所属用户,或者超级用户

hdfs dfs -chown -R hadoop:hadoop /install.log

appendToFile

格式:hdfs dfs -appendToFile …

作用:追加一个或者多个文件到hdfs指定文件中,也可以从命令行读取输入

hdfs dfs -appendToFile a.xml b.xml /big.xml

hdfs的高级使用命令


HDFS文件 限额配置

hdfs dfs -count -q -h /user/root/dir1 #查看配额信息

数量限额


hdfs dfs -mkdir -p user/root/dir #创建hdfs文件夹

hdfs dfsadmin -setQuota 2 dir #给该文件夹下面设置最多上传两个文件,发现只能上传一个文件

hdfs dfsadmin -clrQuota /user/root/dir #清楚文件数量限制

空间大小限额

在设置空间配额时,设置的空间至少是block_size*3大小

hdfs dfsadmin -setSpaceQuota 4k /user/root/dir #限制空间大小4kb

hdfs dfs -put /root/a.txt /user/root/dir

生成任意大小文件的命令

dd if=/dev/zero of=1.txt bs=1M count=2 #生成2M的文件

清楚空间配额限制

hdfs dfsadmin -setSpaceQuota dirq

hdfs的安全模式


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbN1YHpQ-1629014721324)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814174354575.png)]

安全模式操作命令

hdfs dfsadmin -safemode get #查看安全模式状态

hdfs dfsadmin -safemode enter #进入安全模式

hdfs dfsadmin -safemode leave #离开安全模式

HDFS基准测试


测试写入速度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x9T2oTvp-1629014721325)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814174905487.png)]

完成之后查看写入速度结果

hdfs dfs -text /benchmarks/TestDFSIO/io_write/part-0000

测试读取速度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IE8bPbFT-1629014721325)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814175737924.png)]

清除测试数据


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ugWw4fV-1629014721326)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814204225595.png)]

HDFS文件写入过程


  1. Client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否存在,父目录是否存在,返回是否可以上传

  2. Client请求第一个block该传输到哪些DataNode服务器上

  3. NameNode根据配置文件中指定的被封数量及机架感知原理进行文件分配,返回可用的DataNode地址如:A,B,C

Hadoop在设计时3考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储测量为本地一份,同机机架内其他某一节点上一份,不同机架的某一节点上一份。

  1. Client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client

  2. Client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C,A每传爱一个packet会放入一个应答队列等待应答

  3. 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给Client

  4. 当一个block传输完成之后,Client再吃请求NameNode上传第二个block到服务1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMBOpW5h-1629014721326)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814205646759.png)]

HDFS文件读取过程


  1. Client向NameNode发起RPC请求,来确定请求文件block所在的位置

  2. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址;这些返回的DN地址,会按照集群拓扑结构得出DataNode与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离Client近的排靠前;心跳机制中超时汇报的DN状态为STALE,这样的排靠后

  3. Client选取排序靠前的DataNode来读取block,然后客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性)

  4. 底层上本质是建立Socket Stream(FSDataInputStream),重复的的调用父类DataInputStream的read方法,直到这个块上的数据读取完毕;

  5. 当读完列表的block后,若文件读取还没有结束,客户端会继续想NameNode获取下一批block列表;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOiRiZ3H-1629014721327)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814212944070.png)]

HDFS的元数据辅助管理


当Hadoop的集群当中,NameNode的所有元数据信息都保存到FsImage与Eidts文件当中,这两个文件啊就记录了所有的是数据的元数据信息,元数据信息的保存目录配置在了hdfs-site.xml当中

dfs.namenode.name.dir

file:///export/servers/hadoop2.7.5/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2

dfs.namenode.edits.dir

file:///export/servers/hadoop-2.7.5/hadoopoDatas/nn/edits

FsImage和Edits详解


edits

  • edits存放了客户端最近一段时间的操作日志

  • 客户端对HDFS进行写文件时会首先记录在edits文件中

  • edits修改时元数据也会更新

fsimage

  • NameNode中关于元数据的镜像,一般称为检查点,fsimage存放了一份比较完整的元数据信息

  • 因为fsimage是NameNode的完整的镜像,如果每次加载到内存生成树拓扑结构,这是非常耗内存和CPU,所以一般开始时对NameNode的操作都放在edits中

  • fsimage内容包含了NameNode管理下的所有DataNode文件及文件block及block所在的DataNode的元数据信息

  • 随着edits内容增大,就需要一定时间点和fsimage合并

fsimage中的文件信息查看

使用命令 hdfs oiv

cd /export/servers/hadoop2.7.5/hadoopDatas/namenodeDatas

hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml

edits中的文件信息查看

使用命令 hdfs oev

cd /export/servers/hadoop2.7.5/hadoopDatas/namenodeDatas

hdfs oev -i edits_0000000000000000865-0000000000000000866 -p XML -o myedit.xml

SecondaryNameNode如何辅助管理fsimage与edits文件?


  • SecondaryNameNode定期合并fsimage和edits,把edits控制在一个范围内

  • 配置SecondaryNameNode

  • SecondayNameNode在conf/masters中指定

  • 在masters指定的机器上,修改hdfs-site.xml

dfs.http.address

host:50070

  • 修改core-site.xml,这一步不做配置保持默认也可以

//多久记录一次 HDFS镜像,默认1小时

fs.checkpoint.period

3600

//一次记录多大,默认64M

fs.checkpoint

67108864

  1. SecondaryNameNode通知NameNode切换editlog

  2. SecondaryNameNode从NameNode中获得fsimage和editlog(通过http方式)

  3. SecondaryNameNode将fsimage载入内存,然后开始合并editlog,合并之后称为新的fsimage

  4. SecondaryNameNode将新的fsimage发回给NameNode

  5. NameNode用新的fsimage替换旧的fsimage

特点

完成合并的SecondaryNameNode,会请求NameNode停止使用edits,暂时将新鞋操作放入一个新的文件夹中edits_new

Hadoop核心-HDFS

==============================================================================

HDFS的API操作


配置Window下的Hadoop环境

在windows系统需要配置hadoop运行环境,否则直接运行代码会出现以下问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXzJTdOh-1629014721328)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210814233506617.png)]

步骤:

第一步:将hadoop2.7.5文件夹拷贝到一个没有中文没有空格的路径下面

第二步:在windows上面配置hadoop的环境变量:HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中

第三步:把hadoop2.7.5文件夹中bin目录下的hadoop.dll文件放到系统盘:C:\Window\System32目录

第四步:关闭windows重启

导入Maven依赖

org.apache.hadoop

hadoop-common

2.7.5

org.apache.hadoop

hadoop-client

2.7.5

org.apache.hadoop

hadoop-hdfs

2.7.5

org.apache.hadoop

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

[外链图片转存中…(img-cafZxlT8-1712178462093)]

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-EUlariYW-1712178462093)]

搜集费时费力,能看到此处的都是真爱!

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值