当前位置: 首页 > news >正文

做网站的是什么工种网站怎么做网盘

做网站的是什么工种,网站怎么做网盘,经典重庆,学网站建设培训机构1、HDFS的API操作1.1 客户端环境准备1.2 API创建文件夹1.3 API上传1.4 API参数的优先级1.5 API文件夹下载1.6 API文件删除1.7 API文件更名和移动1.8 API文件详情和查看1.9 API文件和文件夹判断 2、HDFS的读写流程#xff08;面试重点#xff09;2.1 HDFS写数据流程2.2 网络拓… 1、HDFS的API操作1.1 客户端环境准备1.2 API创建文件夹1.3 API上传1.4 API参数的优先级1.5 API文件夹下载1.6 API文件删除1.7 API文件更名和移动1.8 API文件详情和查看1.9 API文件和文件夹判断 2、HDFS的读写流程面试重点2.1 HDFS写数据流程2.2 网络拓扑-节点距离计算2.3 机架感知副本存储节点选择2.4 读数据流程 1、HDFS的API操作 1.1 客户端环境准备 首先要配置环境变量 其次在IDEA中创建一个Maven工程HdfsClientDemo并导入相应的依赖坐标日志添加 propertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.hamcrest/groupIdartifactIdhamcrest-core/artifactIdversion1.3/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-client/artifactIdversion3.1.3/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.30/version/dependency/dependencies /project1.2 API创建文件夹 package com.wenxin.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException;/*** author Susie-Wen* version 1.0* description:客户端代码常用套路* 1、获取一个客户端对象* 2、执行相关的操作命令* 3、关闭资源* HDFS zookeeper* date 2023/12/11 12:27*/ public class HdfsClient {private FileSystem fs;Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {// 连接的集群地址URI uri new URI(hdfs://hadoop102:8020);// 用户String user root;// 创建一个配置文件Configuration configuration new Configuration();// 1、获取到了客户端对象fs FileSystem.get(uri, configuration, user);}Afterpublic void close() throws IOException {// 3、关闭资源fs.close();}Testpublic void testMkdir() throws IOException {// 2、创建一个文件夹fs.mkdirs(new Path(/xiyou/huaguoshan));} } 上面这段代码把连接和关闭资源都进行了封装更加方便。 Before 注解标识的方法 init() 是一个在测试方法执行之前会被调用的初始化方法。After 注解标识的方法 close() 是一个在测试方法执行之后会被调用的清理方法。 如下所示确实创建了文件夹 1.3 API上传 接下来进行API上传操作使用客户端远程访问HDFS之后上传文件。 // 上传客户端远程访问HDFS,之后上传文件Testpublic void testPut() throws IOException {fs.copyFromLocalFile(false,false,new Path(E:\\VMWare\\Centos\\sunwukong.txt),new Path(hdfs://hadoop102/xiyou/huaguoshan));}1.4 API参数的优先级 HDFS文件上传测试参数优先级 1编写源代码 Test public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration new Configuration();configuration.set(dfs.replication, 2);FileSystem fs FileSystem.get(new URI(hdfs://hadoop102:8020), configuration, atguigu);// 2 上传文件fs.copyFromLocalFile(new Path(d:/sunwukong.txt), new Path(/xiyou/huaguoshan));// 3 关闭资源fs.close();2将hdfs-site.xml拷贝到项目的resources资源目录下 ?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configurationpropertynamedfs.replication/namevalue1/value/property /configuration参数优先级排序1客户端代码中设置的值 2ClassPath下的用户自定义配置文件 3然后是服务器的自定义配置xxx-site.xml 4服务器的默认配置xxx-default.xml 1.5 API文件夹下载 下载相当于从HDFS将文件下载到windows本地 //下载将文件从HDFS下载到windows当中public void testGet() throws IOException {fs.copyToLocalFile(false,new Path(hdfs://hadoop102/xiyou/huaguoshan),new Path(E:\\VMWare\\),false);}如果参数四设置为true的话就不会进行crc校验 1.6 API文件删除 //删除Testpublic void testRm() throws IOException {fs.delete(new Path(/xiyou/huaguoshan/sunwukong.txt),false);}除了删除文件之外我们还可以删除空目录以及非空目录多个文件如果是非递归删除的话会报错 //删除Testpublic void testRm() throws IOException {//1.删除文件fs.delete(new Path(/xiyou/huaguoshan/sunwukong.txt),false);//2.删除空目录fs.delete(new Path(/xiyou),false);//3.删除非空目录fs.delete(new Path(/xiyou/huaguoshan/),false);}1.7 API文件更名和移动 包括文件名称的修改文件的移动和更名以及目录的更名 //文件的更名和移动Testpublic void testMove() throws IOException {//1.文件名称的修改fs.rename(new Path(/input/word.txt),new Path(/input/ss.txt));//2.文件的移动和更名:从input目录移动到根目录下并修改姓名fs.rename(new Path(/input/ss.txt),new Path(/wenxin.txt));//3.目录的更名fs.rename(new Path(/input),new Path(/output));}1.8 API文件详情和查看 查看文件名称、权限、长度、块信息 //获取文件详情信息Testpublic void fileDetail() throws IOException {//1.获取所有文件信息RemoteIteratorLocatedFileStatus listFilesfs.listFiles(new Path(/), true);//2.遍历文件while(listFiles.hasNext()){LocatedFileStatus fileStatuslistFiles.next();System.out.println(fileStatus.getPath());System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getPath());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockLocations());System.out.println(fileStatus.getPath().getName());}}//获取文件详情信息Testpublic void fileDetail() throws IOException {//1.获取所有文件信息RemoteIteratorLocatedFileStatus listFilesfs.listFiles(new Path(/), true);//2.遍历文件while(listFiles.hasNext()){LocatedFileStatus fileStatuslistFiles.next();System.out.println(fileStatus.getPath());System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getPath());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockLocations());System.out.println(fileStatus.getPath().getName());//获取块信息BlockLocation[] blockLocations fileStatus.getBlockLocations();System.out.println(Arrays.toString(blockLocations));}}1.9 API文件和文件夹判断 判断根目录那个是文件那个是文件夹 //判断文件与文件夹Testpublic void testFile() throws IOException{FileStatus[] listStatus fs.listStatus(new Path(/));for(FileStatus status:listStatus){if(status.isFile()){System.out.println(文件status.getPath().getName());}else{System.out.println(目录status.getPath().getName());}}}2、HDFS的读写流程面试重点 2.1 HDFS写数据流程 1客户端通过Distributed FileSystem模块向NameNode请求上传文件NameNode检查目标文件是否已存在父目录是否存在。 2NameNode返回是否可以上传。 3客户端请求第一个 Block上传到哪几个DataNode服务器上。 4NameNode返回3个DataNode节点分别为dn1、dn2、dn3。 5客户端通过FSDataOutputStream模块请求dn1上传数据dn1收到请求会继续调用dn2然后dn2调用dn3将这个通信管道建立完成。 6dn1、dn2、dn3逐级应答客户端。 7客户端开始往dn1上传第一个Block先从磁盘读取数据放到一个本地内存缓存以Packet为单位dn1收到一个Packet就会传给dn2dn2传给dn3dn1每传一个packet会放入一个应答队列等待应答。 8当一个Block传输完成之后客户端再次请求NameNode上传第二个Block的服务器。重复执行3-7步。 2.2 网络拓扑-节点距离计算 在HDFS写数据的过程中NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢 节点距离两个节点到达最近的共同祖先的距离总和。 例如假设有数据中心d1机架r1中的节点n1。该节点可以表示为/d1/r1/n1。利用这种标记这里给出四种距离描述。 算一算每两个节点之间的距离 2.3 机架感知副本存储节点选择 官方说明 对于常见情况当副本为3时HDFS的放置策略是如果编写器在datanode上则将一个副本放在本地计算机上否则放在随机datanode上另一个副本放在不同(远程)机架中的节点上最后一个放在同一远程机架中的不同节点上。此策略减少了机架间的写入流量从而总体上提高了写入性能。机架故障的几率远小于节点故障的几率该策略不影响数据可靠性和可用性保证。但是它确实减少了读取数据时使用的聚合网络带宽因为一个数据块只放在两个不同的机架中而不是三个。使用此策略文件的副本不会均匀分布在机架上。三分之一的副本位于一个节点上三分之二的副本位于一个机架上另外三分之一的副本均匀分布在其余机架上。该策略提高了写入性能而不影响数据可靠性或读取性能。 第一个副本考虑的是节点距离最近上传速度最快。第二个节点保证数据的可靠性。第三个节点在保证数据可靠性的前提下兼顾效率。 查看源码 Crtl n 查找BlockPlacementPolicyDefault在该类中查找chooseTargetInOrder方法。 2.4 读数据流程 1客户端通过DistributedFileSystem向NameNode请求下载文件NameNode通过查询元数据找到文件块所在的DataNode地址。【DistributedFileSystem是分布式文件系统对象】 2挑选一台DataNode就近原则然后随机服务器请求读取数据。【除了考虑节点最近之外还会考虑当前节点的负载能力】 3DataNode开始传输数据给客户端从磁盘里面读取数据输入流以Packet为单位来做校验。 4客户端以Packet为单位接收先在本地缓存然后写入目标文件。 这里读取数据采用的是串行读取而不是并行读取。
http://www.w-s-a.com/news/996010/

相关文章:

  • 福田欧曼服务站网站前台设计
  • 网站做系统叫什么软件吗注册域名需要实名认证吗
  • jsp网站开发教学视频ui设计风格
  • 注册网站建设开发怎么自己做导航网站
  • 设计做网站品牌咖啡主题网页界面设计
  • 个人网站制作总体设计宿迁房价2023年最新房价
  • 服装网站建设进度及实施过程马鞍山网站设计制作
  • 郑州网站优化顾问济宁网站制作
  • 网站开发简单吗网站引导页分为三个板块设计风格
  • 湖南做网站 在线磐石网络百度一下百度搜索
  • 现在建网站多少钱推广营销费
  • 联想企业网站建设的思路西安网站建设阳建
  • 网站内容 内链网站建设电话销售工作总结
  • 系统网站开发知名的摄影网站有哪些
  • 网站拍照的幕布扬中网站建设价位
  • 网站ie兼容性差西安小程序开发的公司
  • 上海网站建设培训app网站开发成本
  • 个人网站icp外贸网站开发 河南
  • 遵义建设网站无锡市规划建设局网站
  • 海外留学网站建设方案门户网站的发布特点
  • 网站建设不赚钱net112企业建站系统
  • 网站建设团队管理模板贵州省住房和城乡建设部网站
  • 曲沃网站建设网上学编程的有哪些比较好的网站
  • 厦门网站建设慕枫学做网站需要多久
  • 爱奇艺做任务领vip网站设计广告图片
  • 中科汇联网站建设手册上海公司名称注册查询网
  • 网站建设电子商务课总结和体会关于做网站书籍
  • 仪征网站建设公司哪家好简单网页制作素材图片
  • 甘肃第九建设集团公司网站潍坊个人做网站
  • 如何做后台网站的教程网站建设 关于我们