HDFS 分布式文件系统

 hdfs getconf -confKey dfs.namenode.edits.dir


概念

一台计算机的存储计算能力有限;

当一个数据集的大小超过了一台计算机的存储能力时,需要对其进行分区(patition),并存储到多个计算机上。—— 跨网络管理多个计算机储存的文件系统 —— 分布式文件系统

 

存储方式:以流式数据访问模式来存储超大文件

流式数据访问模式(如mapreduce:一次写入,多次读取是最高效的访问模式。数据集的分析处理,需要层层剥离过滤,最后才形成总结性的结果输出。期间需要多次读取数据集的全部或局部数据。

高时间延迟代价:超大数据的分析过滤处理,需要在内部长时间并行运算,才得出结果。从执行到结果输出有着高时间延迟的代价付出。

不支持多用户写操作,不支持在文件任意位置做修改

 

数据块:磁盘对数据进行读写的最小单位。 = 磁盘块

文件系统块:

分布式文件系统块(HDFS块):分块chunk-独立存储单元

 

HDFS:默认64MB,块的数据固定设置,大文件拆分成块,不会将元数据(ep权限信息)写到块中。块复制在多个节点(数据备份),还可提高数据容错和恢复能力。

 

HDFS集群的节点类型:

管理者-工作者模式:NameNode  dataNode

NameNode,命名空间,文件操作,数据块位置映射信息;

客户端,

dataNode ,存储并检索数据块,会送心跳给nameNode

 

nameNode的安全运行机制:

nameNode挂掉,整个文件系统就挂了,dataNode的数据块信息也无法读取。

(1)      备份系统级元数据文件,写操作时同时写到本地和远程挂载的网络文件系统NFS

(2)      辅助nameNode,主机挂,从NFS copy 元数据到辅助nameNode,运行之。

 

Hadoop有众多文件系统接口:

hdfs 只是其中一个实现。

即,mapreduce程序可以访问不同的文件系统个,只是处理大数据时最好选择一个具有本地数据优化的分布式文件系统,例如hdfs  kfs

 

Hadoopjava

Hadoopjava写,通过java api可以调用hadoop的所有文件系统的交互操作。

Hdfs的命令解释器就是使用javafileSYStem类来提供文件系统操作。

java应用访问hadoop,则通过thrift api的代理服务来实现文件操作系统的访问


看文件信息
hadoop fsck /user/filename

更详细的
hadoop fsck /user/filename -files  -blocks -locations -racks
 
-files  文件分块信息,
-blocks    在带-files参数后才显示block信息
-locations   在带-blocks参数后才显示block块所在datanode的具体IP位置,
-racks       在带-files参数后显示机架位置

阅读更多

没有更多推荐了,返回首页