学习目的:掌握基于hadoop框架进行数据处理与分析的应用程序的开发
HDFS分布式文件存储系统
hdfs里面数据都是一块一块存储的
主从模式
一个N节点多个D节点
NameNode 管理文件系统的命名空间,管理目录,记录每个文件各个数据块节点的信息
DateNode 工作阶段 储存并检索数据块,把数据库列表发送给NameNode
注意:不适合并发写入,不支持文件随机修改,不支持随机读等低延时的访问方式
问题1:namenode容错机制?挂掉了怎么办?
2.0版本有两个namenode,一个主节点,一个secondary namenode节点,snn节点定期同步nn节点内容,主节点挂掉就转正
问题2:数据块的大小怎么设置?
设置过小,消耗内存,查找速度慢
设置过大,并行性能不好,重启时恢复需要更多时间
实例:一份数据要存储到服务器上(写流程)
客户端向NN发出请求,NN检查自身的文件目录,发现DN1,DN2,DN3有空间可存,然后返回信息给客户端
客户端根据数据块大小把文件分为两个数据块,文件1,文件2
把文件1+NN返回信息发送给DN1,DN1再发送给DN2,DN2发送给DN3
存完文件1,再存文件2
DN1,DN2,DN3发信息给NN,告诉他存完文件1和2了
其实NN分配给客户端的是DN1,DN2和DN3执行的是副本备份
客户端取文件(读流程)
客户端发请求给NN,NN返回节点信息,文件在DN1,DN2,DN3,客户端向最近DN1发请求取回文件1,向最近DN2发请求取回文件2
若DN2挂,则客户端向DN3取文件2