Hadoop——HDFS
1. HDFS工作机制:NameNode
- 存放信息
- 元数据(地址 如:\aa\bb)
- 块信息(块大小、副本数量、块位置(分布在哪些节点))
- 存放位置
- 存放位置:内存 (与磁盘) c存放结构:树
- 配置
首先下载jdk,hadoop 配置环境 vi /etc/profile
初始化hdfs要配置三个文件./etc/core-site.xml ./etc/hadoop-env.sh /etc/hdfs-site.xml
更改slaves文件后初始化NameNode 指令:hadoop namenode -format - 概述
元数据如果存放在磁盘,对元数据进行增删改操作十分麻烦,所以元数据一般以树的数据结构存放在内存中,但会定期序列化到磁盘上。(current/fsimage_…)为了避免NameNode节点宕机产生元数据缺失,将每次操作记录到日志文件 (edits)。SecondaryNameNode定期下载edits文件和fsimage文件,将fsimage反序列化,读取edits文件更新元数据,保存成最新的fsimage文件传输到namenode上,把原来的删除。SecondaryNameNode上的叫做checkpoint机制。
2. HDFS工作机制:DataNode
- 从DataNode写数据
客户端向NameNode发送请求,NameNode检查元数据,告知客户端可写。客户端请求写入第一个block,NameNode返回三个节点,默认三个block(就近选择,随机选择),客户端挑选slave1建立数据传输连接,slave1再向slave2,上slave3传递数据传输连接,slave3,slave2都有相应,slave1告知客户端可以传输数据,客户端通过本地文件输入流传输数据获取数据,通过网络输出流向有DataNode的slave1传输数据,slave1保存到本地,再向后面的节点发送block副本文件,然后客户端再传输下一个block个第一个子节点。全部写完后,客户端告知NameNode,NameNode确认元数据。 - 从DataNode读数据
客户端向NameNode发出请求,NameNode检查元数据,告知存储的子节点,客户端向随机一台子节点(slave1)发送读取请求,块记作block_1,slave1通过网络输出流传到客户端,客户端通过本地文件输入流下载到本地,如果有多个block(块),客户端继续随机选择一台有block_2的节点发出请求,同理,客户端将下载的block_2追加到block_1后面,全部读完后关闭IO流。