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

果洛营销网站建设一键优化表格

果洛营销网站建设,一键优化表格,为离职员工做的网站,网站菜单导航怎么做目录 一、HDFS概述 二、HDFS架构与工作机制 三、HDFS的Shell操作 四、Hdfs的API操作 一、HDFS概述 HDFS:Hadoop Distributed File System;一种分布式文件管理系统,通过目录树定位文件。使用场景:一次写入,多次读出…

目录

一、HDFS概述

二、HDFS架构与工作机制

三、HDFS的Shell操作

四、Hdfs的API操作


一、HDFS概述

  1. HDFS:Hadoop Distributed File System;一种分布式文件管理系统,通过目录树定位文件。
  2. 使用场景:一次写入,多次读出,且不支持文件的修改。适用于数据分析,不适用于网盘应用;
  3. 优点:
    1. 高容错:多个副本,其中一个副本丢失,可以自动恢复;
    2. 适合处理大数据:数据规模大 & 文件规模大  & 可以构建于廉价机器上。
  4. 缺点:
    1. 不适合低延时数据访问;
    2. 无法高效的对大量小文件进行存储;
    3. 不支持并发写同一个文件,仅支持追加,不支持文件的随即修改。

二、HDFS架构与工作机制

  1. 官方文档
    Apache Hadoop 3.3.4 – HDFS Architecture
  2. 组成部分
    1. NameNode(NN):即Master,管理HDFS。
    2. Secondary NameNode(SNN):不是NN的热备份(热备份是指在程序还在运行的时候对数据进行备份)SNN对于NN的作用不同于平常的热备份的概念,SNN包含Fsimage和Edits,会定期合并Fsimage和Edits并推送给NN。
    3. DataNode(DN):即Slaver,执行NN下达的命令。
    4. Client:客户端,交互与访问。
    5. Block(hdfs文件块)
      1. Hadoop1.x中是64M,在Hadoop2.x-3.x中是128M;
      2. 块的大小既不能太大,也不能太小;(块大小的设置取决于磁盘传输的速率);
  3. NameNode和SecondaryNameNode的工作机制
    1. NameNode启动
      1. 第一次启动NN,需要创建命名空间镜像文件(fsimage)和编辑日志文件(edits)(如果NN不是第一次启动,直接加载fsimage文件和edits文件到内存);
      2. NN记录操作日志,滚动日志;
      3. NN在内存中对元数据进行修改操作。
    2. SecondaryNameNode工作过程
      1. SNN询问NN是否需要CheckPoint(是否需要合并fsimage和edits)。
      2. Secondary NameNode请求执行CheckPoint。
      3. NameNode滚动正在写的Edits日志。将滚动前的编辑日志和镜像文件拷贝到SNN,SNN加载编辑日志和镜像文件到内存进行合并,生成新的镜像文件fsimage.chkpoint。
      4. 拷贝fsimage.chkpoint到NameNode,NameNode将fsimage.chkpoint重新命名成fsimage。
  4. DataNode的工作机制
    1. 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据(包括数据块的长度,块数据的校验和,以及时间戳)。
    2. DataNode启动后向NameNode注册,通过后,周期性(6小时)地向NameNode上报所有的块信息。
    3. 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
  5. HDFS的写流程
    1. 客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查集群上目标文件是否已存在,父目录是否存在。
    2. NameNode返回是否可以上传。
    3. 客户端请求询问第一个 Block上传到哪几个DataNode服务器上。
    4. NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。
    5. 客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成(Pipe管道机制)。
    6. dn1、dn2、dn3逐级应答客户端。
    7. 客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet,就会将其放入一个应答队列等待应答
    8. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。
    9. 传输完成后通知NameBode通知Client完成传输。
  6. HDFS的读流程
    1. 客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
    2. 挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
    3. DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
    4. 客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。
  7. 网络拓扑-节点距离计算 & 机架感知(副本位置的选择)
    1. 距离如图所示
    2. 网络拓扑(将整个网络视为一个节点,各个大数据集群则是这整个网络节点的子节点,各个机架则分别是每个集群的子节点,每个实际节点又是机架节点的子节点。依次画出网络拓扑图并计算距离)
    3. 副本位置
      1. 第一个副本位于客户端所处的节点上,如果客户端不属于集群节点,则随机选择一个;
      2. 第二、三个副本位于另一个机架上的两个不同节点之上。
  8. 数据完整性
    1. DataNode读取Block的时候,它会计算CheckSum,计算Block是否已经损坏;
    2. DataNode在文件创建后周期验证CheckSum;

三、HDFS的Shell操作

  1. hadoop fs 某指令  与  hdfs dfs 某指令 是一样的
  2. 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.sh"echo " --------------- 启动 yarn ---------------"ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"echo " --------------- 启动 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 historyserver"echo " --------------- 关闭 yarn ---------------"ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo " --------------- 关闭 hdfs ---------------"ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
    ;;
    *)echo "Input Args Error..."
    ;;
    esac
  3. 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)
  4. 其他Hadoop shell指令(略)

四、Hdfs的API操作

  1. 在Windows下配置Hadoop的运行环境
    1. 添加Hadoop的Windows依赖文件夹至Windows下一个纯英文路径,配置HADOOP_HOMEPath环境变量(Hadoop的Windows依赖官网没有直接提供,需要自行下载,双击winutils.exe可以验证环境变量是否正常,报错可能是因为缺少微软运行库)
    2. 新建Idea Maven项目(配置阿里云maven镜像可以使下载的速度更快)
      1. 导入相应的依赖坐标(修改pom.xml - import changes)
        <dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency>
        </dependencies>
      1. 日志添加(在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入)
        log4j.rootLogger=INFO, stdout
        log4j.appender.stdout=org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
        log4j.appender.logfile=org.apache.log4j.FileAppender
        log4j.appender.logfile.File=target/spring.log
        log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
        log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    3. API编写代码(*重新理解API这个宽泛的概念)
      1. 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 RemoteIterator<LocatedFileStatus> 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");}
        }
      2. 关于代码内部配置的优先级 > 项目资源目录下的配置文件的优先级 > Linux上的配置文件 > 默认配置。
    4. 遇见的报错:
      1. 不支持发行版本5:https://www.cnblogs.com/KennyWang0314/p/12268953.html 按图设置成与自己本地jdk匹配的版本就好了。之前maven是默认Java5,而我的本地是jdk11,无法生成Java5二进制文件。


文章转载自:
http://dinncobuckthorn.bpmz.cn
http://dinncocontinua.bpmz.cn
http://dinncoribby.bpmz.cn
http://dinncovivaciously.bpmz.cn
http://dinncoamphisbaena.bpmz.cn
http://dinncofad.bpmz.cn
http://dinncocollectress.bpmz.cn
http://dinncolysogeny.bpmz.cn
http://dinncoboysenberry.bpmz.cn
http://dinncodevolatilization.bpmz.cn
http://dinncoditto.bpmz.cn
http://dinncomonopteros.bpmz.cn
http://dinncofractionlet.bpmz.cn
http://dinncolexan.bpmz.cn
http://dinncosubulate.bpmz.cn
http://dinncofarrowing.bpmz.cn
http://dinncosaltworks.bpmz.cn
http://dinncoinnateness.bpmz.cn
http://dinncotransmissibility.bpmz.cn
http://dinncoquarterfinal.bpmz.cn
http://dinncotelaesthesia.bpmz.cn
http://dinncobouncer.bpmz.cn
http://dinncodooda.bpmz.cn
http://dinnconephrectomize.bpmz.cn
http://dinncoddd.bpmz.cn
http://dinncokebbok.bpmz.cn
http://dinncoirradiative.bpmz.cn
http://dinncomilankovich.bpmz.cn
http://dinncointranatal.bpmz.cn
http://dinncoopportunist.bpmz.cn
http://dinncorichwin.bpmz.cn
http://dinncotuque.bpmz.cn
http://dinncowishfully.bpmz.cn
http://dinncomicroheterogeneity.bpmz.cn
http://dinncohebrews.bpmz.cn
http://dinncoskiograph.bpmz.cn
http://dinncopotency.bpmz.cn
http://dinncominelayer.bpmz.cn
http://dinncotherme.bpmz.cn
http://dinncotaxology.bpmz.cn
http://dinncoenteritis.bpmz.cn
http://dinncoadolescence.bpmz.cn
http://dinncodefoliation.bpmz.cn
http://dinncophizog.bpmz.cn
http://dinncosnath.bpmz.cn
http://dinncoanautogenous.bpmz.cn
http://dinncounprepossessed.bpmz.cn
http://dinncomilan.bpmz.cn
http://dinncocaribe.bpmz.cn
http://dinncoprerecord.bpmz.cn
http://dinncomachinate.bpmz.cn
http://dinncolemuroid.bpmz.cn
http://dinncotomb.bpmz.cn
http://dinncoscolopidium.bpmz.cn
http://dinncoimplead.bpmz.cn
http://dinncodemophile.bpmz.cn
http://dinncocollimate.bpmz.cn
http://dinncomysterioso.bpmz.cn
http://dinncorachilla.bpmz.cn
http://dinncoblackbeetle.bpmz.cn
http://dinncomabe.bpmz.cn
http://dinncowelsh.bpmz.cn
http://dinncozed.bpmz.cn
http://dinnconotes.bpmz.cn
http://dinncoglamour.bpmz.cn
http://dinncoautomatism.bpmz.cn
http://dinncocounteractive.bpmz.cn
http://dinncorectorial.bpmz.cn
http://dinncoblackwash.bpmz.cn
http://dinncodiffused.bpmz.cn
http://dinncoattap.bpmz.cn
http://dinncofodderless.bpmz.cn
http://dinncobluebeard.bpmz.cn
http://dinncopolydactyl.bpmz.cn
http://dinncodotey.bpmz.cn
http://dinncohyperirritability.bpmz.cn
http://dinncopopie.bpmz.cn
http://dinncomazhabi.bpmz.cn
http://dinncosmuttiness.bpmz.cn
http://dinncocorea.bpmz.cn
http://dinncofirebird.bpmz.cn
http://dinncocoden.bpmz.cn
http://dinncoendville.bpmz.cn
http://dinncoglycogenosis.bpmz.cn
http://dinncooutclearing.bpmz.cn
http://dinncoapriorism.bpmz.cn
http://dinncomammey.bpmz.cn
http://dinncobacchus.bpmz.cn
http://dinncoincrescence.bpmz.cn
http://dinncovinegrower.bpmz.cn
http://dinncoegp.bpmz.cn
http://dinncomythical.bpmz.cn
http://dinncowurley.bpmz.cn
http://dinncohyalinization.bpmz.cn
http://dinncodraggle.bpmz.cn
http://dinncoplaymobile.bpmz.cn
http://dinncoovershoot.bpmz.cn
http://dinncovinaceous.bpmz.cn
http://dinncoussb.bpmz.cn
http://dinncocommision.bpmz.cn
http://www.dinnco.com/news/107089.html

相关文章:

  • 信誉好的盐城网站建设百度竞价推广什么意思
  • 移动网站转换中国企业网络营销现状
  • 河北建设网站证件查询济南优化哪家好
  • 电脑经销部开具网站建设费seo网站
  • 西安做网站必达网络网站市场推广
  • 网络销售怎么做自己的网站软文推广发稿
  • wordpress 功能介绍seo文章范文
  • 网站建设哪家服务好免费做网站自助建站
  • 设计公司团队兰州网站seo诊断
  • 我是怎么做网站架构的sem推广计划
  • 网站开发赚钱吗 知乎推广app的平台
  • 比较实用的h5网页建设网站seo网站优化培
  • 山东做网站搜索引擎营销方法主要有三种
  • 虹桥做网站公司宁波企业seo推广
  • 做网站开发哪种语言更稳定高效百度中心
  • 时尚网站推广官网
  • 河南工程建设信息网站北京网站推广排名
  • wordpress进入管理宁德seo优化
  • 泉州做网站排名中国进入一级战备2023
  • 南京网站建设王道下拉??百度关键词优化大师
  • 网上墓地 wordpress如何把一个关键词优化到首页
  • 德州营销型网站企业管理培训班
  • 做网站建站上海seo推广
  • 做单页网站怎么选产品网络营销的好处和优势
  • wordpress主题 dux1.8seo 排名 优化
  • 富阳有没有做网站的5000元网站seo推广
  • 建设网站价格淘宝seo优化怎么做
  • 专业群建设 网站杭州推广公司
  • 佛山制作网站公司吗黄冈免费网站推广平台汇总
  • 丰台路网站建设短视频seo公司