栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS分布式文件系统(传智平台笔记)

HDFS分布式文件系统(传智平台笔记)

        Hadoop的核心是HDFS和MapReduce.

        HDFS是解决海量大数据文件存储问题

        是目前应用最广泛的分布式文件系统

目录

HDFS的演变

HDFS基本概念

特点:

HDFS架构和原理

        HDFS存储架构

  hdfs文件读写原理

                HDFS写数据流程 

hdfs读数据原理

 读数据流程

HDFS的shell操作

HDFS的api操作


HDFS的演变

                从谷歌的GFS演变而来。

 

解决单点故障问题:党存储数据块的服务器中突然有一台及其宕机,我们就无法正常的获取文件,这个问题称为单点故障问题。针对这个问题,可以采用备份机制解决。

NameNode记录着文件有多少个block,每个block存储在那个服务器上,以及它们的副本数为多少

DataNode负责存储block数据块。


HDFS基本概念

        hdfs基本框架

         Namenode          Datanode

 

        Block数据块(文件切片),逻辑上的概念,默认128MB大小。

 

        机架 

 

         存储Block要存在同一个机架上的不同主机。机架感知

 

元数据:

 

特点: 优点:高容错         流式数据访问         支持超大文件         高数据吞吐量

 

 

 

缺点:高延迟,

         不适合小文件存取,

        不适合并发写入

        ps:小文件,元数据信息也是一样存。一样占用那么多空间………………会浪费空间啥的


HDFS架构和原理

                     集群正常运行时,元数据存在在namenode内存中。     为了防止namenode挂掉后数据丢失,会对元数据进行持久化处理,保存到磁盘上!!   

          元数据信息:大约占150个字节左右。可以说namenode内存大小决定整个集群的规模.   namenode管理元数据时,隔一段时间会将元数据持久化处理,保存在内存上。

          元数据持久化的文件:fsimage   edits   SecondaryNamedode管理这两个文件。    SecondaryNamenode辅助Namenode进行元数据的管理。

        HDFS存储架构

       

        当在HDFS存一个文件时,会存储元数据信息,占一条元数据信息。大概每个元数据信息在150个字节左右。当上传越来越多,,越来越占用namenode内存。从另一方面来说,namenode大小其实决定了整个集群的规模。

datanode,具体存放真实数据,隔一段时间会向namenode发送心跳包,告诉namenode,自己有效,是可用的。若某一台没有发送心跳包,就会确诊为宕机,block随之丢失。

namenode会对block的副本检查,完整性检查。

………………还有啥机架感知的。

       

 

 hdfs文件读写原理

 

    HDFS写数据流程 

 

第一步:发出RPC请求,请求上传文件。(RPC:远程过程调用)

第二步: Namenode 检查元数据文件的目录树  eg:1.txt  如果存在,不能上传,不存在可以上传

第三步:告诉客户端,可以上传

第四步:请求上传第一个block

第五步:寻找多个可用的datanode.检查datanode的信息池(每个datanode存储量啊,是否可用啊)

第六步:namenode返回可用的dn列表  DataNode_01   DataNode_02  DataNode_03

第七步: 客户端和datanode之间建立管道(pipeline) datanode和datanode之间也会建立管道

第八步:返回管道建立完毕的信息。

第九步:客户端和datano建立数据流~~~  开始发送数据!!!

第十步:以package为单位发送数据。默认64k大小

第十一步:ACK确认信息   ,告诉pacakage收到了。发一个pacakage给一个ACK应答

第十二步:通知客户端block发送完毕。告诉客户端,可以发送下一个block了

hdfs读数据原理

 读数据流程

  第一步:客户端发送RPC请求,获取被读取文件block数据块所在位置。

  第二步:namenode返回dn地址列表

  第三步:会挑选。与dn建立数据传输流,读取block

 

 

 

 第四步:客户端将读取的block合并成一个完整的文件


HDFS的shell操作

                图形界面的shell

                命令行式shell

 HDFS  shell
    hadoop   fs       :既可以操作hdfs,也可以操作任何文件系统fs.hadoop  dfs      :主要针对HDFShdfs  fds     :专门操作hdfs

- text  将源文件输出为文本格式

更多命令使用详情可登录Hadoop官方文档进行查阅:
文件系统各种shell命令Hadoop官方文档

         常用几种命令:

                ls

        mkdir命令 

 

 -p递归创建

 查看

         put命令

 

 多了个install.log文件

 

案例:

ps:当时老师教的时候,做了上传日志的案例,但不是自动采集


  步骤:

这些环境变量有的再配一次是为了保证环境变量绝对可靠。

vi   upload2HDFS.sh  创建脚本文件

upload2HDFS.sh   里面内容:

 

 


 

 

 


 vi   upload2HDFS.sh 

 


 

 0  0  *  *  *  /shell/upload2HDFS

全部写进     upload2HDFS.sh


 

 

 

 

 

HDFS的api操作

        HDFS的api操作简述:

 

        Windows配置   hadoop运行环境

hadoop.dll:    hadoop 动态链接库 

 

 第一步:

第二步:

 第三步:

 

                第四步:关闭Windows重启

        HDFS  Java API  介绍

 


 

下篇文章再记录 HDFS的Java API  操作案例了~~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号