我有一个关于HDFS文件写入和读取的基本问题。例如,如果我正在使用默认配置写入文件,则Hadoop内部必须将每个块写入3个数据节点。我的理解是,对于每个块,首先客户端将块写入管道中的第一个数据节点,然后通知第二个数据节点,依此类推。一旦第三个数据节点成功接收到该数据块,就会通过数据节点1向数据节点2和客户端提供确认。只有在接收到该数据块的确认后,才认为写入成功,并且客户端继续写入下一个区块。Hadoop:HDFS文件写入和读取
如果是这种情况,则是不写每个块所花费的时间超过一个传统的文件写入由于 -
- 复制因子(默认为3)和
- 的写入过程在块后依次发生。
如果我的理解错了,请纠正我。此外,下面的下列问题:
- 我的理解是在Hadoop中该文件的读/写没有任何并行性,它可以执行最好的是相同的读取或写入(即如果复制是一种传统的文件设置为1)+分布式通信机制中涉及的一些开销。
- 并行性仅在数据处理阶段通过Map Reduce提供,但不在客户端的文件读/写期间提供。
那么有效,一与传统的文件读/写相比,hadoop中的写或读操作性能较低。另外,集群的大小并不重要。复制因子越多,写入数据所需的时间就越多。我只是想知道如何将数据以PB级的顺序复制到hadoop集群,或者性能如此之慢。只是在处理过程中实现性能并不足够,因为我们仍将根据数据复制到/离开hadoop的速度来决定。 –