实际上,我对 hdfs map-reduce 如何在完全分布式模式下实际工作感到有些困惑。
假设我正在运行一个字数统计程序。我只给出“hdfs-site”和“core-site”的路径。
那么事情实际上是如何进行的呢?
这个程序是分布在每个节点上还是什么?
是的,您的程序是分布式的。但如果说它分布在每个节点上是错误的。更重要的是,hadoop 检查您正在使用的数据,将这些数据拆分为更小的部分(在配置的一些限制下),然后将您的代码移动到这些部分所在的 hdfs 中的节点(我假设您有一个datanode和一个在节点上运行的tasktracker)。首先,地图部分在这些节点上执行,这会产生一些数据。此数据存储在节点上,在映射完成期间,您的工作的第二部分从节点开始,即归约阶段。
reducer 在一些节点上启动(同样,您可以配置它们的数量)并从映射器中获取数据,聚合它们并将输出发送到 hdfs。