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

最专业的营销网站建设百度app营销软件

最专业的营销网站建设,百度app营销软件,南通网站定制公司,国际贸易网登录目录 一、HDFS概述 二、HDFS架构与工作机制 三、HDFS的Shell操作 四、Hdfs的API操作 一、HDFS概述 HDFS#xff1a;Hadoop Distributed File System#xff1b;一种分布式文件管理系统#xff0c;通过目录树定位文件。使用场景#xff1a;一次写入#xff0c;多次读出…目录 一、HDFS概述 二、HDFS架构与工作机制 三、HDFS的Shell操作 四、Hdfs的API操作 一、HDFS概述 HDFSHadoop Distributed File System一种分布式文件管理系统通过目录树定位文件。使用场景一次写入多次读出且不支持文件的修改。适用于数据分析不适用于网盘应用优点 高容错多个副本其中一个副本丢失可以自动恢复适合处理大数据数据规模大 文件规模大  可以构建于廉价机器上。缺点 不适合低延时数据访问无法高效的对大量小文件进行存储不支持并发写同一个文件仅支持追加不支持文件的随即修改。 二、HDFS架构与工作机制 官方文档Apache Hadoop 3.3.4 – HDFS Architecture组成部分 NameNodeNN即Master管理HDFS。Secondary NameNodeSNN不是NN的热备份热备份是指在程序还在运行的时候对数据进行备份SNN对于NN的作用不同于平常的热备份的概念SNN包含Fsimage和Edits会定期合并Fsimage和Edits并推送给NN。DataNodeDN即Slaver执行NN下达的命令。Client客户端交互与访问。Blockhdfs文件块 Hadoop1.x中是64M在Hadoop2.x-3.x中是128M块的大小既不能太大也不能太小块大小的设置取决于磁盘传输的速率NameNode和SecondaryNameNode的工作机制 NameNode启动 第一次启动NN需要创建命名空间镜像文件fsimage和编辑日志文件edits如果NN不是第一次启动直接加载fsimage文件和edits文件到内存NN记录操作日志滚动日志NN在内存中对元数据进行修改操作。SecondaryNameNode工作过程 SNN询问NN是否需要CheckPoint是否需要合并fsimage和edits。Secondary NameNode请求执行CheckPoint。NameNode滚动正在写的Edits日志。将滚动前的编辑日志和镜像文件拷贝到SNNSNN加载编辑日志和镜像文件到内存进行合并生成新的镜像文件fsimage.chkpoint。拷贝fsimage.chkpoint到NameNodeNameNode将fsimage.chkpoint重新命名成fsimage。DataNode的工作机制 一个数据块在DataNode上以文件形式存储在磁盘上包括两个文件一个是数据本身一个是元数据包括数据块的长度块数据的校验和以及时间戳。DataNode启动后向NameNode注册通过后周期性6小时地向NameNode上报所有的块信息。心跳是每3秒一次心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳则认为该节点不可用。HDFS的写流程 客户端通过Distributed FileSystem模块向NameNode请求上传文件NameNode检查集群上目标文件是否已存在父目录是否存在。NameNode返回是否可以上传。客户端请求询问第一个 Block上传到哪几个DataNode服务器上。NameNode返回3个DataNode节点分别为dn1、dn2、dn3。客户端通过FSDataOutputStream模块请求dn1上传数据dn1收到请求会继续调用dn2然后dn2调用dn3将这个通信管道建立完成Pipe管道机制。dn1、dn2、dn3逐级应答客户端。客户端开始往dn1上传第一个Block先从磁盘读取数据放到一个本地内存缓存以Packet为单位dn1收到一个Packet就会传给dn2dn2传给dn3dn1每传一个packet就会将其放入一个应答队列等待应答。当一个Block传输完成之后客户端再次请求NameNode上传第二个Block的服务器。重复执行3-7步。传输完成后通知NameBode通知Client完成传输。HDFS的读流程 客户端通过DistributedFileSystem向NameNode请求下载文件NameNode通过查询元数据找到文件块所在的DataNode地址。挑选一台DataNode就近原则然后随机服务器请求读取数据。DataNode开始传输数据给客户端从磁盘里面读取数据输入流以Packet为单位来做校验。客户端以Packet为单位接收先在本地缓存然后写入目标文件。网络拓扑-节点距离计算 机架感知副本位置的选择 距离如图所示网络拓扑将整个网络视为一个节点各个大数据集群则是这整个网络节点的子节点各个机架则分别是每个集群的子节点每个实际节点又是机架节点的子节点。依次画出网络拓扑图并计算距离副本位置 第一个副本位于客户端所处的节点上如果客户端不属于集群节点则随机选择一个第二、三个副本位于另一个机架上的两个不同节点之上。数据完整性 DataNode读取Block的时候它会计算CheckSum计算Block是否已经损坏DataNode在文件创建后周期验证CheckSum 三、HDFS的Shell操作 hadoop fs 某指令  与  hdfs dfs 某指令 是一样的Hadoop hdfs的启动与关闭以下是自定义脚本开启关闭hdfs #!/bin/bashif [ $# -lt 1 ] thenecho No Args Input...exit ; ficase $1 in start)echo 启动 hadoop集群 echo --------------- 启动 hdfs ---------------ssh hadoop101 /opt/module/hadoop-3.1.3/sbin/start-dfs.shecho --------------- 启动 yarn ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-yarn.shecho --------------- 启动 historyserver ---------------ssh hadoop101 /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver ;; stop)echo 关闭 hadoop集群 echo --------------- 关闭 historyserver ---------------ssh hadoop101 /opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserverecho --------------- 关闭 yarn ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-yarn.shecho --------------- 关闭 hdfs ---------------ssh hadoop101 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh ;; *)echo Input Args Error... ;; esac hdfs文件的上传下载 * 格式hadoop fs -指令 [参数列表] 上传 1、本地剪切上传hadoop fs -moveFromLocal ./localfile.txt /hdfs_dir 2、本地拷贝上传hadoop fs -copyFromLocal ./localfile.txt /hdfs_dirhadoop fs -put ./localfile.txt /hdfs_dir 工作环境更倾向于用put 3、追加hdfs文件已存在hadoop fs -appendToFile localfile.txt /hdfs_dir/hdfsfile.txt下载 1、hdfs拷贝至本地hadoop fs -copyToLocal /hdfs_dir/hdfsfile.txt ./hadoop fs -get /hdfs_dir/hdfsfile.txt ./ 生产环境更倾向于用get 其他Hadoop shell指令略 四、Hdfs的API操作 在Windows下配置Hadoop的运行环境 添加Hadoop的Windows依赖文件夹至Windows下一个纯英文路径配置HADOOP_HOME和Path环境变量Hadoop的Windows依赖官网没有直接提供需要自行下载双击winutils.exe可以验证环境变量是否正常报错可能是因为缺少微软运行库新建Idea Maven项目配置阿里云maven镜像可以使下载的速度更快 导入相应的依赖坐标修改pom.xml - import changes dependenciesdependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-client/artifactIdversion3.1.3/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.30/version/dependency /dependencies 日志添加在项目的src/main/resources目录下新建一个文件命名为“log4j.properties”在文件中填入 log4j.rootLoggerINFO, stdout log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n log4j.appender.logfileorg.apache.log4j.FileAppender log4j.appender.logfile.Filetarget/spring.log log4j.appender.logfile.layoutorg.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern%d %p [%c] - %m%n API编写代码*重新理解API这个宽泛的概念 Java代码的大致逻辑获取客户端对象 → 执行操作 → 关闭资源Java标签的用法也可以了解一下挺好用的 package cn.hadoop.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.junit.After; import org.junit.Before; import org.junit.Test;import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.sql.Array; import java.util.Arrays;public class HdfsClient {private URI uri;private Configuration conf;private String user hadoop; //文件系统用于进行操作的用户名这个用户名决定了操作的权限。private FileSystem fs;Beforepublic void init() throws URISyntaxException, IOException, InterruptedException { //uri new URI(hdfs://hadoop101:8020); // 统一资源定位符8020是NameNode内部通信端口conf new Configuration(); //配置对象默认为空fs FileSystem.get(uri, conf, user); //使用get()获取FileSystem实例}Afterpublic void close() throws IOException {fs.close(); // 关闭FileSystem实例}Test//创建目录public void testmkdir() throws URISyntaxException, IOException, InterruptedException {fs.mkdirs(new Path(/目录名)); //mkdirs()方法创建一个新的目录}Test//测试各个部分配置文件的优先级/** 代码内部的配置优先级 项目资源目录下的配置文件的优先级 Linux上的配置文件 默认配置* */public void testPut() throws IOException, InterruptedException {conf.set(dfs.replication, 2); //node level参数指定每个block在集群上有几个备份因为这个参数在hdfs-site.xml也有配置所以可以用来比较这些参数之间的优先级fs FileSystem.get(uri, conf, user);fs.copyFromLocalFile(false, true, new Path(D:\\Edelweiss.txt), new Path(hdfs://hadoop101/目录名称)); //hdfs文件路径开始的一部分是主机名}Test//文件 下载public void testGet() throws IOException {fs.copyToLocalFile(false, new Path(/集群上的路径), new Path(C:\\Users\\用户名\\Desktop), false);}//删除delete、移动rename、更名rename等操作 略Test//列出目录详细信息也可以用于判断“路径类型”——文件或者目录public void fileDetail() throws IOException {final RemoteIteratorLocatedFileStatus listFiles fs.listFiles(new Path(/), true); //迭代器while (listFiles.hasNext()) {LocatedFileStatus fileStatus listFiles.next(); //文件状态System.out.println(--------------- fileStatus.getPath() ---------------);System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getBlockLocations());final BlockLocation[] blockLocations fileStatus.getBlockLocations();System.out.println(Arrays.toString(blockLocations));}}Testpublic void Test(){System.out.println(okk\n);System.out.println(ookk\\N);} } 关于代码内部配置的优先级 项目资源目录下的配置文件的优先级 Linux上的配置文件 默认配置。遇见的报错 不支持发行版本5https://www.cnblogs.com/KennyWang0314/p/12268953.html 按图设置成与自己本地jdk匹配的版本就好了。之前maven是默认Java5而我的本地是jdk11无法生成Java5二进制文件。
http://www.yingshimen.cn/news/137103/

相关文章:

  • 瑞安市网站建设怎么创建自己的网站平台
  • dw5怎样做网站网站建设 微信开发 h5开发
  • 新密市城乡建设局网站当前最新域名
  • 口碑好网站制作公司哪家好帝国网站程序
  • 网站怎么做下载链接东莞石排网站建设
  • 龙岩网站建设平台网络营销的流程和方法
  • 有网站源码 怎么建设网站wordpress2018版本
  • 网页设制作与网站建设宝典 pdf湖南智能网站建设平台
  • 做戒指网站的logo照片crm系统有哪些品牌
  • 沧州网站制作公司用vue做网站一般用什么组件库
  • .net 网站开发视频教程南宁网站建设公司哪里
  • 怎么自己做彩票网站吗平台型网站建设
  • 个人做外贸的网站站长网站seo查询
  • 自己网站建设成为软件工程师的条件
  • 山西省建设招聘信息网站一起做网店17广州沙河
  • 泊头建网站太平桥网站建设
  • 长春网站seo报价郑州做企业网站
  • 正规网站建设加盟合作app定制开发
  • 重庆网站建设公司招聘如何利用谷歌云做自己的网站
  • 网站主体负责人是法人英德市住房城乡建设网站
  • 雨花区师德师风建设专题网站视频直播app开发
  • 重庆夹夹虫网络公司网站建设龙岗做网站建设
  • 陕西网站建设方案博客下载
  • 集团做网站需要多大的带宽网站一次性链接怎么做的
  • 网站建设结束语设计精美的网站
  • 靖江有帮助做苏宁易购网站的公司吗百度seo搜搜
  • 建网站容易吗ps制作网站教程
  • 东莞市城乡和住房建设局廊坊网站排名优化价格
  • 企业网站开发前后台模块设计深圳网站建设要多少钱
  • 网站推广 知乎做标签网站是干嘛的