我是hadoop/hdfs的新手。我读过几篇关于hdfs如何存储数据的文章,但没有完全理解它。有人能像我5岁那样解释吗?示例:考虑一个由6台运行hdfs的机器组成的集群(1个namenode,5个datanode)。群集中的每个节点总共有1tb硬盘空间和2gb或主内存可用。群集使用64 mb的块大小和3的复制因子。主节点为每个64mb块维护100字节的元数据。假设我们上传了一个128gb的文件。每个数据节点存储多少数据?描述hdfs将如何存储文件?
b4wnujal1#
从hdfs client开始,它获取文件信息并调用namenode:嘿,我有一个128 gb的文件,我应该把它放在哪里(create()方法)namenode检查datanodes并答复:这里是数据节点的ip地址或主机名,这些数据节点是活动的并且有足够的空间。客户机开始对数据进行分块并将数据流传输到数据节点。块存储在datanodes的块上,haddop可能会将块存储在多个datanodes上。现在一个或多个数据节点上的128gb被写为2000块(128gb/64mb)。复制是3,因此hadoop在复制的块下找到新的块,并根据复制策略和机架感知将它们复制到其他datanode。在复制结束时,每个datanode(2000/5)上将有400个复制文件块,这意味着每个datanode上有25.6gb(64mb*400)。
1条答案
按热度按时间b4wnujal1#
从hdfs client开始,它获取文件信息并调用namenode:
嘿,我有一个128 gb的文件,我应该把它放在哪里(create()方法)
namenode检查datanodes并答复:
这里是数据节点的ip地址或主机名,这些数据节点是活动的并且有足够的空间。
客户机开始对数据进行分块并将数据流传输到数据节点。
块存储在datanodes的块上,haddop可能会将块存储在多个datanodes上。
现在一个或多个数据节点上的128gb被写为2000块(128gb/64mb)。复制是3,因此hadoop在复制的块下找到新的块,并根据复制策略和机架感知将它们复制到其他datanode。在复制结束时,每个datanode(2000/5)上将有400个复制文件块,这意味着每个datanode上有25.6gb(64mb*400)。