大数据的中流砥柱——HDFS hdfs及其特点 hdfs的重要功能 hdfs机制

没有hdfs,大数据就是空话 ——me

(开个玩笑哈哈哈)

1、hdfs入门、hdfs介绍

HDFS(Hadoop Distributed File System),也叫分布式文件系统。是一个Apache Software Foundation项目,是Apache Hadoop项目的一个子项目。 Hadoop非常适合存储大型数据(比如TB级别和PB级别的数据),其原因就是它使用Hdfs作为数据的存储系统。

可以通过 Apache Hadoop 获取 hadoop 相关的版本。

Hdfs可以使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用这个分布式文件系统。

2、hdfs的架构、特点

1、主从结构:Master和Slave

Hadoop是主从结构的。其中Hdfs分布式文件系统也是属于主从结构的分布式文件系统。

其中Master是主,其从是Slave(译为奴隶、苦工、随从,大概就是跟班、从属就对了)。它们之间通过RPC协议进行通信。组成有着主从架构的分布式文件系统。

Hadoop文件系统在一定程度上采用了Linux树状结构的文件系统。Hdfs对数据文件的访问通过流 的方式进行处理,这意味着通过shell命令和MapReduce程序的方式可以直接使用Hdfs。

2、hdfs的特点

1)hdfs是高容错的,且提供对数据集的高吞吐量访问

什么是可容错性? 即如果集群中挂掉了一个存储节点,里面的数据文件也可以进行转移,转移到一个新的节点机器中。  其他节点可以代替其完成节点存储工作。而且由于是分布式的,可以拓展很多节点(机器)

2)一次写入、多次读取

这是Hdfs非常重要的特点,该模型降低了对并发控制的要求,简化了数据聚合性,支持高吞吐量访问。而吞吐量是大数据系统的一个非常重要的指标,吞吐量高意味着能处理的数据量大。

Hdfs,本质上是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现功能,集群中的服务器有各自的角色;

Hdfs的这个模型设计适合用来做一次写入、多次读取的应用场景,且不支持文件的修改。适合用来做数据分析(可以利用其他组件,譬如hive),并不适合用来做网盘应用。数据写入到Hdfs后,要么删除,要么就别改!

3、组成架构

Hdfs的组成架构包括:NameNodeDataNodeSecondary NameNode

NameNode:负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息

DataNode:负责管理用户的文件数据块,每一个数据块都可以多个datanode上存储多个副本

Secondary NameNode:用来监控Hdfs状态的辅助后台程序,每隔一段时间获取Hdfs元数据的快照

例子:

有一个文件a.txt很大,在Hdfs的处理是这样的:把他进行拆分切割(分而治之)。每块的大小都是固定的block.size(128MB);

DataNode是具体进行块的存储的。这些块就是通过datanode存储到硬盘中。

NameNode则是存储块的元数据,而且负责datanode状态的监控。元数据是存储在内存中的,块数据则是放在磁盘上的。

Secondar NameNode是用来帮助namenode进行数据的管理(因为namenode要存储的数据量太大,工作繁忙)

4、三个机制

心跳机制:DataNode会不时向NameNode发送心跳,说“我还活着,我还能打工!”。这样数据存储的时候,NameNode就还会把它作为正常的“打工仔”,作为数据存储的节点。   如果总是把数据放在一个存储节点上,这个节点工作量就变得巨大,其他节点又“摸鱼”,所以架构师想出了另一个小妙招:负载均衡

负载均衡:使要保存的块数据均匀分布在不同的datanode节点上,也是能提高节点的利用率

副本机制:为了防止数据丢失,提高数据容错性,副本机制大有用处! 即使一个数据存储节点坏掉了,集群依然可以保证数据的完整性。

5、Hdfs文件块大小

Hdfs中的文件在物理上是分块存储(block),块的大小可用通过配置参数(dfs.blocksize)来规定,在hadoop2.x版本默认是128MB,在老版本中是64MB

可以在下方网址中查看自己的HDFS文件系统情况(注意ip地址要换成自己的哦):

http://192.168.244.121:50070/explorer.html

3、hdfs常用命令

有fs和dfs两个基本语法,在机器中操作需要加上:hadoop fs 或 hadoop dfs

常用命令:

1)-help:查看命令大全

hadoop fs -help

2)-ls:显示目录信息

hadoop fs -ls

3)-mkdir:在hdfs上创建目录

hadoop fs -mkdir -p /a/b/c

注意hadoop fs上创建的目录,在真实磁盘上是不存在的。该目录是由NameNode这个角色记录的

4)-copyFromLocal和-put:从本地(Linux)拷贝粘贴到hdfs

hadoop fs -copyFromLocal ./a/a.txt /a/b/c
hadoop fs -put ./a/a.txt /a/b/c

5)-copyLocal和-get:从hdfs下载文件到本地

hadoop fs -copyToLocal /a/b/c/a.txt ./
hadoop fs -get/a/b/c/a.txt ./

6)-moveFromLocal:从本地(Linux)剪切粘贴到hdfs

hadoop fs -moveFromLocal ./a.txt /a/b/c

7)-moveToLocal:从hdfs剪切粘贴到本地(Linux)

hadoop fs -moveToLocal /a/b/c/a.txt ./

8)-cat:显示文件内容

hadoop fs -cat /a/b/c/a.txt

9)-tail:显示一个文件的末尾

hadoop fs -tail /a/b/c/a.txt

10)-cp:将文件从hdfs一个路径拷贝到hdfs的另一个路径

hadoop fs -cp /a/b/c/a.tx /ss/

11):-mv:移动文件

hadoop fs -mv /a/b/c/a.txt /a/b/

12):-count:统计一个目录下的文件节点数量

hadoop fs -count /a/b/c/

无了

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>