Hadoop 学习笔记(二)

HDFS
基于Google GFS的论文
提供冗余数据存储
数据被分散到整个集群
一次写入,多次读取
HDFS基于现有文件系统之上的
文件的存储单位为Block,默认64MB一块,每个块默认保存3份

NN
NameNode主要功能提供名称查询服务,它是一个jetty服务器
NameNode保存metadate信息包括
文件owership和permissions
文件包含哪些块
Block保存在哪个DataNode(由DataNode启动时上报)
NameNode的metadate信息在启动后会加载到内存
metadata存储到磁盘文件名为”fsimage”
Block的位置信息不会保存到fsimage

DN
保存Block
启动DN线程的时候会向NN汇报block信息
通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

Block的副本放置策略
第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
第二个副本:放置在于第一个副本不同的机架的节点上
第三个副本:与第二个副本相同集群的节点
更多副本:随机节点

Block
设置一个Block 64MB,如果上传文件小于该值,仍然会占用一个Block的命名空间(NameNode metadata),但是物理存储上不会占用64MB的空间
Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,Block是不可以再上传后变更的

HDFS 文件权限
与Linux文件权限类似
r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容
如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan
HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁

三种运行模式
单机版
所有的程序(NN JT DN TT)运行于同一个JVM中,HDFS为本地文件系统
伪分布式
所有的程序运行于同一台机器的独立JVM中
分布式
不同程序运行于不同节点中,通常Master运行NN和JT,Slave机器运行DN和TT

猜你喜欢

转载自hbjava1985.iteye.com/blog/1942326