根据集群服务器硬件设施和软件的组件工作组成特性合理规划不同组件(角色)在不同的机器上避免因为使用资源相同而产生竞争, 抢夺的问题.
一般namenode和secondarynamenode不要部署在同一台机器上(占内存大)
一般datanode和nodemanager部署在同一台机器上
横向扩展-->分布式存储
2. 问题:当文件被分布式存储的时候,查找的时候变得特别麻烦,怎么办?
查找方面,文件系统的元数据,用于记录当前文件系统有哪些文件以及文件存放的位置
3. 当数据数据文件很大的时候,曲度还是上传,IO特别的耗时,浪费资源,怎么办?
把文件切块存储(block),默认块的大小是128M,不够128M的不切,但是此时元数据要记录的更加详细包括(增加每一块所在的坐标,即在那台服务器上,记录文件的位置).
4.问题:当文件被分块存储在不同服务器上的时候,万一机器挂掉了怎么办?
备份机制(replication),当数据备份的时候,元数据也要更新,hadoop默认备份3份.
所以站在文件系统内部看,我们是一个分布式文件存储系统,各个角色各司其职,并共同完成文件的额存储和读取任务.
1. 主从架构master+slave主从之间的任务职责不一样, 从要受到主的指挥,namenode是HDFS集群主节点,datanode是HDFS集群的从节点
2.分块存储,文件进入HDFS就被物理上切成块,并且默认块(block)大小是128M,不够128M的不切
3.datanode和namenode各司其职
4.副本机制, 默认3个,保证上传数据的存储安全性