Hadoop如何实现将计算逻辑分发到各个子节点上的

  • 在研究了一段hadoop后,对hadoop的分布式架构有了一定的了解,都知道移动计算比移动数据效率更高,那么hadoop是如何将计算移动到各个节点上进行计算的呢?我猜想是将计算的逻辑和其依赖的包都分发到了各个节点上,然后再在各自的节点上进行计算,不知道是不是这样,希望大家能把细节补充的更完善。


宝慕林4294392
浏览 978回答 3
3回答

繁星coding

Hadoop 的NameNode 知道集群的计算资源分布,数据存储分布.在分布任务的时候,需要对数据进行切分,然后进行计算. 这个时候分配就需要考虑数据的存储位置.Hadoop会尽量将计算分布到数据存储的节点上.如果存储的节点没用资源,比如CPU完全被占用.那会尽量将计算分布到数据存贮节点相同机架上的节点进行计算.最后如果还是没办法做到,那就只能随机的选取一个节点了.当然是所有的Spring jar也会传递上去,然后下载下来. 要不执行MR的JVM到哪去Load需要的class文件.根据经验,通常我都是直接打成一个大包,这样就会方便很多. 这个Jar包最好会上传到 mapred.jar 指定的地址(下面是一个例子), Job完了会删除Jar文件. hdfs://h03:8020/user/root/.staging/job_201408140358_0030/job.jar那些维护对象的关联关系的配置文件肯定也是要传上去的,并且读取文件不能使用绝对路径,寻找路径要依赖于Classpath. 如果你自己定义了一些配置文件,也是同样的道理. 楼主准备结贴吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java