hdfs是一个分布式文件系统.
linux的nfs (Network File system)是网络文件系统协议。
HDFS :我们有多台廉价的机器,需要存储非常大量的数据。我们就需要使用一个文件系统,把数据分成块,分别放在不同的机器上,并且可以使用像hdfs://A/B/C 之类的路径进行访问。是hadoop的分布式文件系统。它是通过网络和机器节点把多个机器上的文件统一成一个文件系统的机制。HDFS不止是解决多个机器之间的文件访问问题。还解决了数据备份,切割之类的问题。
NFS : 为的是不同机器上的文件可以互相访问。比如B机器把A机器上的一个分区\home\a挂载为自己机器上的\home\b,这样在B机器上就可以像访问本地机器上的文件一样访问A机器上的文件了。
hdfs基本还是主从结构,有一个namenode,和多个datanode。所有对文件的访问都经过namenode,namenode中存储文件访问路径和实际存储路径的映射关系,就是元数据。然后通过了namenode,就访问datanode获取实际的文件。
mapreduce是一个计算框架,它分为map部分和reduce。map阶段相当于把数据进行整理的阶段,各种相同的数据都整理在一起,reduce相当于是统计阶段,统计出每个数据需要的数据。其中,map整理完的数据,哪个reduce处理哪个整理完的数据,这个过程叫做shuffle。
文章节选自 轩脉刃de刀光剑影的博客
扩展:
linux下文件系统详解
名词解释:
文件名:在文件系统中,文件名用于定位存储位置
元数据:其他文件信息,包括文件设备类型,所有者,执行权限等等
数据:实际存放信息
文件系统的分类
磁盘文件系统:FAT、exFAT、NTFS、HFS、HFS+、ext2、ext3、ext4、ODS-5、btrfs
闪存文件系统:闪存文件系统是一种设计用来在闪存上储存文件的文件系统。
数据库文件系统:文件管理方面的一个新概念是一种基于数据库的文件系统的概念。不再(或者不仅仅)使用分层结构管理,文件按照他们的特征进行区分,如文件类型、专题、作者或者亚数据进行区分。于是文件检索就可以按照SQL风格甚至自然语言风格进行。
网络文件系统:网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制。
NFS的通信协议以RPC为基本操作方式,远处过程调用RPC是指调用远处非本地的过程,他提供了一个设备可以对其他设备运行的进程进行过程调用,(为兼容不同cpu,使用了XDR【eXternal Data Representaion】,为RPC提供了一种不依赖特定CPUI类型的交换二进制数据的格式)
RPC处于OSI七层模型的表示层。
说明:随着Linux的不断发展,它所支持的文件格式系统也在迅速扩充,Linux系统核心可以支持十多种文件系统类型:Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、XFS、ISO 9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。 注意:部分Linux发行版默认不支持NTFS文件系统,解决方法是安装ntfs-3g或ufsd等NTFS驱动程序。部分Linux发行版对NTFS的支持度并不高。