初识Hadoop 之 HDFS 及安装【持续更新中......】

目录

HDFS

概念

HDFS的概念

存儲模型:字节

架构模型

 

 

常用命令:


HDFS

概念

当数据集的大小超过一台独立的计算机的存储能力的时候,这个时候就有必要对文件进行分区(partiiton)存储在若干台计算集上。管理网络中跨多台计算机存储的文件系统,叫做分布式文件系统(Distribute FileSystem )。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂,比如说:必须要容忍因为节点故障且不会引起数据丢失。

Hadoop 自带一个称为HDFS分布式文件系统(Hadoop Distribute FileSuystem)。HDFS 以流式数据访问模式来存储超大文件,运行与商用硬件集群上。

  • 超大文件:在这里指的是具有几百MB、几百GB、甚至几百TB大小的文件。
  • 流式数据访问模式:一次写入,多次读取是最高效的设计模式。
  • 低时间延迟的数据访问:要求低延迟的数据访问的应用,例如几十毫秒,不适合在HDFS上运行。(HDFS是为高吞吐量优化的,这可能会以提高时间延迟为代价)
  • 大量小文件:
  • 多用户写入,任意修改文件:HDFS中的文件写入只支持单写入者,而且写入者只以“追加”的方式在文件末尾写数据,不支持多个写入者,也不支持在任意位置修改数据。

HDFS的概念

  • 数据块(block):默认128MB。
  • namenode 和 datenode 
  • 块缓存:
  • 联邦HDFS: viewfs://URI

存儲模型:字节

  • 文件线性切割成块(Block):偏移量Offset(byte)(Block切割字符的下标)
  • Block分散存储在集群节点上
  • 单一文件Block块大小一致,不同文件的Block块大小可以不一致
  • Block可以设置副本数,副本(数据的可靠性。可用性)分散在集群不同的节点中。

        --副本数不可以超过节点数量

  • 文件上传可以设置Block大小和副本数量
  • 已上传的Block副本数可以调整,大小不变
  • 只支持一次写入(append追加在文件末尾),多次读写,同一时刻只允许有一个写入者
  •  

架构模型

  • 文件元数据MataData,文件数据
  1. (从)数据本身(Block数据)存储在DateNode:多节点
  2. (主)元数据(文件名、大小、块信息等)存储在namenode:单节点
  • DataNode 和NameNode保持心跳,提交Block列表信息
  • HdfsClient和NameNode交换元数据信息
  • HdfsClient和DataNode交换Block数据

NameNode(NN)

  • 基于内存存储:不会和磁盘发生交换
  1. 只存在内存中
  2. 持久化(运行是单向落在磁盘中,重启的时候读回来,具体方法后面)
  • NameNode主要功能 
  1. 接收客户端的读写功能
  2. 收集DateNode汇报的Block信息
  • NamoNode保存的metaData信息包括
  1. Block块列表(偏移量)(持久化存储的信息),位置信息(数据存储的位置)
  2. 副本的存储位置(由DataNode(心跳)上报)
  3. 文件大小,时间

NameNode持久化

  • NameNode的metadata信息会在启动会加载到内存
  • matadata存储到磁盘的名称为fsimage
  • Block块信息不回保存到fsimage
  • edits(editsLog)记录对metadata的操作日志
  • (合并fsimage 和 editsLog ,缩短集群恢复的时间)

DataNode(DN)

  • 本地磁盘存储数据(Block),文件形式
  • 同时存储Block的元数据信息
  • 启动DN时会向NN汇报block信息
  • 通过向NN发送心跳保持与其联系(3秒一次),如果NN十分钟没有收到DN的心跳,认为其已经lost,会copy其上的block到其他DN

SecondaryNameNode(SNN)(1.x)

  • 它不是NN的备份(但是可以做备份),它的主要工作是帮助NN合并editslog,减少NN启动时间
  • SNN执行合并时机
  1. 根据配置文件设置的时间间隔<fs.checkpoint.period>,默认3600秒
  2. 根据配置文件设置的edits log 大小,fs.checkpoint.size,默认大小64MB

Block的副本放置策略

  • 第一个副本放置在上传文件的DN上,
  • 第二个副本放置在与第一个副本不同的机架的节点上
  • 第三个副本放置在与第二个副本相同的机架上不同节点上

HDFS写流程

HDFS读流程

  • open-->getBlockLocationInfo-->read
  •  

HDFS安装

root 账号登陆后执行以下命令:

yum install -y lrzsz

  • 2、mkdir -p /usr/local/java
  • 3、cd /usr/local/java/
  • 4、rz -e jdk-8u171-linux-x64.tar.gz   或者 rz -be jdk-8u171-linux-x64.tar.gz
  • 5、tar -zxvf jdk-8u171-linux-x64.tar.gz 
  • 6、pwd  (复制当前路径)
  • 7、vim /etc/profile
  • 8、JAVA_HOME=/usr/local/java/jdk1.8.0_181
          JRE_HOME=/usr/local/java/jdk1.8.0_181/jre
          CLASSPATH=.:$JAVA_HOME:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar
          PATH=$JAVA_HOME/bin:
          export PATH JAVA_HOME CLASSPATH
  • 9、 source /etc/profile
  • 10、java -version
  •  

常用命令:

  • default.fs="hdfs://localhost/"

  • dfs.replication=3

  • hdfs 默认端口8020 运行namenode

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/yswhfd/article/details/84321798