HDFS

知识回顾
 
传统服务器系统安装
 
系统硬盘 100% 完全独立,不要存储业务数据)
 
物理磁盘做 raid1 (两个硬盘物理备份)
/boot 200M
/SWAP 内存的 1-2 被(大数据集群中要关闭)
/ 所有的空间
数据硬盘
 
多块小的硬盘 做一个大的硬盘(逻辑卷)
 
大数据服务器系统安装
 
系统硬盘
 
100% 完全独立,不要存储业务数据)
物理磁盘做 raid1 (两个硬盘物理备份)
/boot 200M
/SWAP 内存的 1-2 被(大数据集群中要关闭)
/ 所有的空间
 
数据硬盘
 
优先不做 raid 必须做 raid 时 物理磁盘做 raid0
多块小的硬盘独立挂载(一个硬盘一个目录) 大数据技术为什么快
 
1 、传统的时纵向扩展
服务器数量不发生变化,配置越来越高(发生变化)
大数据横向扩展
配置不发生变化,服务器数量越来越多(发生变化)
2 传统的方式资源( cpu/ 内存 / 硬盘)集中
 
大数据方式资源( cpu/ 内存 / 硬盘)分布 ( 前提:同等配置的前提下 )
3 传统数据备份方式单份备份
 
大数据数据备份方式多分备份(数据复制,默认三个副本)
 
4 传统的计算模型是移动数据到程序端
大数据计算模型是移动程序到数据端
io 和网络的使用率都非常低,且多节点存储,多节点计算(众人拾柴火焰高)
hadoop 版本
1.0 hadoop 指的是 HDFS+Mapreduce
2.0 hadoop 指的是 HDFS+Mapreduce+yarn
 
hadoop 三大公司
免费开源版本 apache http://Hadoop.apache.org/ hortonWorks 公司 免费版本 收费版本
Cloudera CDH ) 免费版本 收费版本
 
Hadoop 的组成部分
1 HDFS :海量数据的 存储 系统
2 Map Reduce :海量数据 的计 算系统(计算框架)
3 YARN :集群资源管理(调度)的框架。

HDFS WEB UI

当我们启动HDFS集群后,然后通过http://master:50070/去访问HDFS WEB UI的时候,我们会经常使用Utilities下的Browse the file system去查看HDFS中的文件,如下:

HDFS_第1张图片

 

然后就会出现HDFS中的根目录下所有的文件:

HDFS_第2张图片

 

 上面的方式是我们常见的访问HDFS文件的方式之一,这种使用的方式也是很方便的。

 

当我们启动HDFS集群后,我们可以通过http://master:50070来访问HDFS集群,其中,masterNameNode所在机器的名称。下面的就是HDFS WEB UI的七个大模块:

 

 

 这篇文章,我们重点分别来详细看一下OverviewDatanodes以及Utilities三个模块

Overview

HDFS_第3张图片

 

 第1处的master:9999表示当前HDFS集群的基本路径。这个值是从配置core-site.xml中的fs.defaultFS获取到的。

  • 第2处的Started表示集群启动的时间
  • 第3处的Version表示我们使用的Hadoop的版本,我们使用的是2.7.5的Hadoop
  • 第4处的Compiled表示Hadoop的安装包(hadoop-2.7.5.tar.gz)编译打包的时间,以及编译的作者等信息
  • 第5处的Cluster ID表示当前HDFS集群的唯一ID
  • 第6处的Block Pool ID表示当前HDFS的当前的NameNode的ID,我们知道通过HDFS Federation (联盟)的配置,我们可以为一个HDFS集群配置多个NameNode,每一个NameNode都会分配一个Block Pool ID

 

Summary

HDFS_第4张图片

 

  1.    第1处的Security is off表示当前的HDFS集群没有启动安全机制
  • 第2处的Safemode is off表示当前的HDFS集群不在安全模式,如果显示的是Safemode is on的话,则表示集群处于安全模式,那么这个时候的HDFS集群是不能用的
  • 第3处表示当前HDFS集群包含了3846个文件或者目录,以及1452个数据块,那么在NameNode的内存中肯定有3846 + 1452 = 5298个文件系统的对象存在
  • 第4处表示NameNode的堆内存(Heap Memory)是312MB,已经使用了287.3MB,堆内存最大为889MB,对
  • 第5处表示NameNode的非堆内存的使用情况,有效的非堆内存是61.44MB,已经使用了60.36MB。没有限制最大的非堆内存,但是非堆内存加上堆内存不能大于虚拟机申请的最大内存(默认是1000M)
  • 第6处的Configured Capacity表示当前HDFS集群的磁盘总容量。这个值是通过:Total Disk Space - Reserved Space计算出来的。Total Disk Space表示所在机器所在磁盘的总大小,而Reserved Space表示一个预留给操作系统层面操作的空间。Reserved space空间可以通过dfs.datanode.du.reserved(默认值是0)在hdfs-site.xml文件中进行配置。我们这边的总容量为什么是:33.97GB呢,我们可以通过du -h看一下两个slave的磁盘使用情况,如下:

HDFS_第5张图片

 

上面 17GB + 17GB = 34GB,而且我们没有配置Reserved Space,所以HDFS总容量就是33.97GB(有一点点的误差可以忽略)

  • 第7处DFS Used表示HDFS已经使用的磁盘容量,说白了就是HDFS文件系统上文件的总大小(包含了每一个数据块的副本的大小)
  • 第8处Non DFS Used表示在任何DataNodes节点上,不在配置的dfs.datanode.data.dir里面的数据所占的磁盘容量。其实就是非HDFS文件占用的磁盘容量

配置dfs.datanode.data.dir就是DataNode数据存储的文件目录

  • 第9处DFS Remaining = Configured Capacity - DFS Used - Non DFS Used。这是HDFS上实际可以使用的总容量
  • 第10处Block Pool Used表示当前的Block Pool使用的磁盘容量
  • 第11处DataNodes usages%表示所有的DataNode的磁盘使用情况(最小/平均/最大/方差)
  • 第12处Live Nodes表示存活的DataNode的数量。Decommissioned表示已经下线的DataNode
  • 第13处Dead Nodes表示已经死了的DataNode的数量。Decommissioned表示已经下线的DataNode
  • 第14处Decommissioning Nodes表示正在下线的DataNode的数量。
  • 第15处Total Datanode Volume Failures表示DataNode上数据块的损坏大小
  • 第16处Number of Under-Replicated Blocks表示没有达到备份数要求的数据块的数量
  • 第17处Number of Blocks Pending Deletion表示正要被删除的数据块
  • 第18处Block Deletion Start Time表示可以删除数据块的时间。这个值等于集群启动的时间加上配置dfs.namenode.startup.delay.block.deletion.sec的时间,其中配置dfs.namenode.startup.delay.block.deletion.sec默认是0秒

Datanodes

HDFS_第6张图片

 

 上面有一个Admin State我们有必要说明下,Admin State可以取如下的值:

  1. In Service,表示这个DataNode正常
  2. Decommission In Progress,表示这个DataNode正在下线
  3. Decommissioned,表示这个DataNode已经下线
  4. Entering Maintenance,表示这个DataNode正进入维护状态
  5. In Maintenance,表示这个DataNode已经在维护状态

 

 我们这里详细总结下Browse the file system,对于Logs我们在HDFS日志的查看总结中讲解

当我们点击Browse the file system时,我么会进入到如下的界面:

HDFS_第7张图片

 

上图每一个字段的解释如下:

  • Permission:表示该文件或者目录的权限,和Linux的文件权限规则是一样的
  • Owner:表示该文件或者目录的所有者
  • Group:表示该文件或者目录的所有者属于的组
  • Size:表示该文件或者目录的大小,如果是目录的话则一直显示0B
  • Last Modified:表示该文件或者目录的最后修改时间
  • Replication:表示该文件或者目录的备份数,如果是目录的话则一直显示0
  • Block Size:表示该文件的数据块的大小,如果是目录的话则一直显示0B
  • Name:表示文件或者目录的名字

我们可以通过鼠标点击Name来访问对应的文件目录或者文件:

当我们访问的是目录的时候,则是去查看该目录下有哪些子文件或者子目录。

当我们访问的是文件的时候,我们查看的是文件的详细信息,比如,我们访问文件/user/omneo.csv文件:

HDFS_第8张图片

HDFS 特性
 
1 、海量数据存储: HDFS 可横向扩展,其存储的文件可以支持 PB 级别数据。
2 、高容错性:节点丢失,系统依然可用,数据保存多个副本,副本丢失后自动恢复。
可构建在廉价(与小型机大型机比)的机器上,实现线性扩展 ( 随着节点数量的增加,集群的存储能力,计算能力随
之增加 )
3 、大文件存储: DFS 采用数据块的方式存储数据,将一个大文件切分成多个小文件,分布存储。
 
HDFS 缺点:
 
1 、 不能做到低延迟数据访问: HDFS 针对一次性读取大量数据继续了优化,牺牲了延迟性。
2 、不适合大量的小文件存储 :
A: 由于 namenode 将文件系统的元数据存储在内存中 , 因此该文件系统所能存储的文件总数受限于 namenode 的内存
容量。
B: 每个文件、目录和数据块的存储信息大约占 150 字节。
由于以上两个原因,所以导致 HDFS 不适合大量的小文件存储
3 、文件的修改; 不适合多次写入,一次读取(少量读取)
4 、不支持多用户的并行写。
 
HDFS 高级命令
 
HDFS 上的某一个特定的目录存储的数据副本 、数据量、文件的个数进行设置。
设置目录可以存储的文件的数量 hdfs dfsadmin -setQuota 100 lisi (文件夹本身算一个)
清空文件夹内数据良方的限制 hdfs dfsadmin -clrQuota /user/root/lisi
限制文件夹下存储的数据量 hdfs dfsadmin -setSpaceQuota 100M /user/root/lisi
清空文件夹数量的限制 hdfs dfsadmin -clrSpaceQuota /user/root/lisi
查看文件夹的限额数 hdfs dfs -count -q -h /user/root/lisi
 
HDFS 安全模式
 
安全模式是 HDFS 所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请
求。
HDFS 什么时候进入安全模式:在 NameNode 主节点启动时, HDFS 首先进入安全模式
在安全模式下做了什么: DataNode 在启动的时候会向 namenode 汇报可用的 block 等状态
查看 hdfs 在什么模式 hdfs dfsadmin -safemode get 进入 hdfs 安全模式 hdfs dfsadmin -safemode enter
退出 hdfs 安全模式 hdfs dfsadmin -safemode leave
 
Fsimage Edits
 
Fsimage 记录 HDFS 文件系统的镜像或快照(周期性记录)(此文件相对较小)
Edits 记录客户端对进行的所有的增、删、改、追加等操作(没有使用 Secondary NameNode 之前,不是周期性生
成)(此文件相对较大)
Fsimage Edits 作用:用于还原集群上次关闭时的状态。还原时将两个文件加载到内存,检查、合并最终生成一个新
Fsimage 。原本的 Edits 失效。

 

你可能感兴趣的:(HDFS)