我只想澄清这句话“代码移动靠近数据进行计算”,
这是否意味着部署到集群中所有服务器的开发人员编写的所有java MR?
如果1为真,如果有人更改了MR程序,它是如何分发给所有服务器的?
由于
答案 0 :(得分:3)
实际上,当要在大型集群上处理一些少量文件(或精确的拆分)时,优化将jar发送到数据确实驻留的少数主机可能会在一定程度上减少作业延迟。我不知道这样的优化是否有计划。
答案 1 :(得分:2)
在hadoop集群中,您使用相同的节点进行数据和计算。这意味着您的hdfs datanode设置在任务跟踪器用于计算的同一群集上。因此,现在当您执行MR作业时,作业跟踪器会查找存储数据的位置。而在其他计算模型中,数据不存储在同一个集群中,而您可能必须在某个计算节点上进行计算时移动数据。
启动作业后,所有地图功能都将分割输入文件。执行这些映射函数,以便输入文件的分割更接近它们,或者换句话说,在同一个机架中。这就是我们所说的计算更靠近数据的意思。
因此,为了澄清您的问题,每次运行MR作业时,其代码都会复制到所有节点。因此,如果我们更改代码,则会将新代码复制到所有节点。