大数据的中流砥柱——HDFS hdfs及其特点 hdfs的重要功能 hdfs机制
Posted '一生所爱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据的中流砥柱——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的组成架构包括:NameNode、DataNode和Secondary 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/
无了
以上是关于大数据的中流砥柱——HDFS hdfs及其特点 hdfs的重要功能 hdfs机制的主要内容,如果未能解决你的问题,请参考以下文章