04.hadoopHDFS
创始人
2025-06-01 07:32:40
0
  1. win java访问hadoop
   //复制文件夹,配置环境变量//配置HADOOP_HOME为我们的路径 ,hadoop-3.3.0 ,记得JAVA_HOME不要带有空格,!!!默认java安装环境有空格C:\Program Files//要在cmd hadoop -fs 查看是否配置成功//%HADOOP_HOME%\bin到path//maven添加依赖hadoop3.1.0//创建目录@BeforeURI uri=new URI("hdfs://hadoop102:8020");new Configuration();String user="atguigu";FileSystem.get(uri,configuration,user);fs.mkdirs(new Path("xiyou/huaguoshan")); //ctrl+alt+f变私有变量,可以通用fs.close();//没有权限,不知道用户是atguigu//上传 删除源数据,是否覆盖,相当于 移动 复制fs.copyFromLocalFile(false,false,new Path("D:\\sun.txt"),new Path("hdfs://hadoop102/xiyou"));

2.!!!参数优先级

    hdfs-default.xml(hadoop内部)(默认3) 

3.文件(/夹)下载

   //源文件是否删除, hdfs路径, 目标地址路径win,是否开启本地文件校验(几乎不用)fs.copyToLocalFile(false,new Path("hdfs://hadoop102/xiyou/ngs.txt"),new Path("D:\\"),false);fs.copyToLocalFile(false,new Path("hdfs://hadoop102/xiyou"),new Path("D:\\"),false);

//crc是校验文件是否错误的文件,发生错误与远程crc文件不一样
4.文件删除

  //递归删除,文件夹要使用递归删除,注意这里的/是指当前hadoop路径的文件fs.delete(new Path("/aaa.txt"),false)fs.delete(new Path("/xiyou"),true);

5.文件的更名和移动

  //更名fs.rename(new Path("/input/nn.txt"),new Path("/input/ss.txt"));//文件移动fs.rename(new Path("/xiyou"),new Path("/xiyou1"));fs.rename(new Path("/input/ss.txt"),new Path("/ss.txt"));

6.得到 所有文件信息(权限,文件名,大小,组) 类似于 select * from xx

   fs.listFiles(new Path("/"),true);while(listFiles.hasNext()){LocatedFileStatus fileStatus =listFiles.next();sout(fileStatus.getPermission());}    

7.判断一个文件夹里面是文件还是目录

   fs.listStates(new Path("/"));for(FileStatus status:listStatus){if(status.isFile()){sout("文件"+status.getPath().getName())}else{sout("文件夹"+status.getPath().getName())}}//代码public void listFile() throws IOException, URISyntaxException, InterruptedException {RemoteIterator listFiles = fs.listFiles(new Path("/"), true);while(listFiles.hasNext()){LocatedFileStatus fileStatus =listFiles.next();System.out.println("permission"+fileStatus);System.out.println("permission"+fileStatus.getPermission());System.out.println("getGroup"+fileStatus.getGroup());System.out.println("getOwner"+fileStatus.getOwner());System.out.println("getAccessTime"+fileStatus.getAccessTime());System.out.println("getBlockSize"+fileStatus.getBlockSize());System.out.println("getModificationTime"+fileStatus.getModificationTime());System.out.println("getReplication"+fileStatus.getReplication());if(fileStatus.isFile()){System.out.println(  "文件"+fileStatus.getPath().getName());}else{System.out.println( "文件夹"+fileStatus.getPath().getName());}}

8.(重要面试题)写数据的流程

   1.namenode检查是否有权限写操作,检查目录结构(目录是否存在)2.开始传数据3.namenode要存储到哪里?  1.本地节点 2.其他机架以后节点 3.其他机架另外一个节点4.传输packet(c数据512byte 校验4byte)(充满64k发送)(效率高)dataNode1--写数据时同时传给下一节点 建立通道->dataNode2-写数据时同时传给下一节点建立通道->dataNode3没有成功继续传

9.节点距离计算.,像服务器机架

   从节点出发找共同祖先,如机架r1的n-0到机架r2的n-0//自己和自己  是0n-0 -->机架r1-->d1-->机架r2---> n-2   是4 r2的 n-0 -->d2的r4的n-1:()n-0 -->r2 -->d1-->祖先-->d2-->r4--->n-1    是6

10.机架感知(面试高频)

   第一个节点在第一个机架上,第二个在第二个机架上rack(可靠性)第三个在第二个机架上的随便节点(性能高)//看源码 ctrl+n查找BlockPlacementPolicyDefault的chooseTargetOrder方法

11.hdfs读数据的流程

   0.客户端发起请求到NameNode,NameNode返回元数据,客户端创建FSDataInputStream1.选择节点距离最近的,如果这个节点负载太高,选择另外一个节点2.使用并行读,(如图dataNode会有两份备份)

如图hd5
请添加图片描述

12.NN和2NN工作机制

   内存:好处快但是可靠性差磁盘:慢但是可靠性好内存+磁盘 效率低,fsimage存储数据 (2nn用内存辅助生成存储数据)Edits 追加数据a=10 a+10 a=20  

请添加图片描述

13.查看fsImage镜像文件

   hdfs oiv -p XML -i fsimagexxx  -o /opt/software/fsimage.xml//下载到win,可以查看目录的结构关系sz fsimage.xml //记录了块信息,和追加的过程hdfs oiv -p XML -i edit_inprogess_xxx  -o /opt/software/fsimage.xml

14.CheckPoint基本不用

hdfs-default.xml设置更新数据的时间checkpint.txns, secondaryNameNode
checkpoint.che.period 检查数据时间和触发条件

15.dataNode

 开机向nameNode通知存活    --->dn6小时上报块信息,   -->dn 向nn3秒一次心跳 超过10分钟+10*3秒没有响应自动删除节点hdfs-default.xml的dfs.blockreport.intervalMsec的21600000 6小时 自己调整

16.数据完整性

  //数据传输可能错误的元素代码奇偶校验码 : 二进制加起来是奇数加个1  偶数加个0//hdfs使用的crc校验位(后三位) hdfs传输过去有个crc文件,去crc循环校验验证结果,crc320100 1001 110    传输后 0100 1001 110 说明文件传输没有错误,错误的话会不同

17.掉线时限参数设置 有公式

nn和(dn掉线)10分钟才掉线
hdfs-default.xml的dfs.heartbeat.interval
//关闭hadoop104的datanode jps kill
//恢复hdfs --daemon start datanode

18.总结

1.hdfs块大小 面试重点根据硬盘读写速度挑选合适的才是最好的企业 128m小公司 256m大公司
2.hdfs shell操作开发重点
3.hdfs读写流程面试重点

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...