知识回顾
传统服务器系统安装
系统硬盘
(
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中的根目录下所有的文件:
上面的方式是我们常见的访问HDFS文件的方式之一,这种使用的方式也是很方便的。
当我们启动HDFS集群后,我们可以通过http://master:50070来访问HDFS集群,其中,master是NameNode所在机器的名称。下面的就是HDFS WEB UI的七个大模块:
这篇文章,我们重点分别来详细看一下Overview、Datanodes以及Utilities三个模块
Overview
第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
- 第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的磁盘使用情况,如下:
上面 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
上面有一个Admin State我们有必要说明下,Admin State可以取如下的值:
- In Service,表示这个DataNode正常
- Decommission In Progress,表示这个DataNode正在下线
- Decommissioned,表示这个DataNode已经下线
- Entering Maintenance,表示这个DataNode正进入维护状态
- In Maintenance,表示这个DataNode已经在维护状态
我们这里详细总结下Browse the file system,对于Logs我们在HDFS日志的查看总结中讲解
当我们点击Browse the file system时,我么会进入到如下的界面:
上图每一个字段的解释如下:
- Permission:表示该文件或者目录的权限,和Linux的文件权限规则是一样的
- Owner:表示该文件或者目录的所有者
- Group:表示该文件或者目录的所有者属于的组
- Size:表示该文件或者目录的大小,如果是目录的话则一直显示0B
- Last Modified:表示该文件或者目录的最后修改时间
- Replication:表示该文件或者目录的备份数,如果是目录的话则一直显示0
- Block Size:表示该文件的数据块的大小,如果是目录的话则一直显示0B
- Name:表示文件或者目录的名字
我们可以通过鼠标点击Name来访问对应的文件目录或者文件:
当我们访问的是目录的时候,则是去查看该目录下有哪些子文件或者子目录。
当我们访问的是文件的时候,我们查看的是文件的详细信息,比如,我们访问文件/user/omneo.csv文件:
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
失效。