运行Hadoop应用程序
Hadoop应用程序是否可以在任何一个集群节点上启动,而与节点类型无关运行Hadoop应用程序,hadoop,Hadoop,Hadoop应用程序是否可以在任何一个集群节点上启动,而与节点类型无关 应用程序是否应仅在其中一个节点上启动 Hadoop是否将代码移动到数据附近的适当节点 JavaRMI是否用于移动代码 @编辑 在每个Hadoop安装的节点上,应该通过为Namenode设置fs.default.name的core site.xml和为Jobtracker设置mapred.job.tracker的 但是,不能显式分配从属节点Datanode和Tasktracer,对吗 相反,它们在Hadoop dameon启动
Namenode
设置fs.default.name
的core site.xml
和为Jobtracker
设置mapred.job.tracker
的
但是,不能显式分配从属节点Datanode
和Tasktracer
,对吗
相反,它们在Hadoop dameon启动时动态加入集群,或者在守护进程停止时离开集群,对吗
如果Hadoop安装的节点既没有分配给主节点,也没有运行Hadoop守护进程,那么它仍然可以启动Hadoop应用程序,对吗
@第二次编辑
似乎从节点也应该在主节点上的conf/slaves
文件中明确列出,以便在那里集中启动或停止
只要正确设置core site.xml
配置,Hadoop作业可以从任何地方启动。这不必是数据节点或主节点。在较大的集群上,通常有一个“查询节点”,该节点上不运行任何Hadoop守护进程
除非您的程序在MapReduce之外执行某种繁重的预计算或后计算,否则在特定节点上启动作业并不是什么大问题。如果是,您希望将它们保留在自己的节点上。在数据节点上运行作业优于在主节点上运行作业
Hadoop将jar文件复制到各地,因此代码在本地可用。我不认为这使用RMI,但我可能错了。最后,这些都是从用户那里抽象出来的,你不需要注意
#对于我的大型集群中的新开发人员来说,1实际上是一个常见的问题。有一种常见的误解是,您希望在jobtracker节点上运行作业,而jobtracker节点是运行作业最差的位置之一。Hadoop自带了自己的RPC机制,因此没有RMI。Hadoop作业可以从任何地方启动,只要core-site.xml配置设置正确。
-提交作业的客户端应该知道JobTracker和NameNode的位置,因此必须设置NN的fs.default.name和JT的mapred.job.tracker。这些是最小的参数。不管是core-site.xml还是mycore-site.xml。必须使用-D选项或从文件将配置传递给运行作业的客户端。在特定节点上启动作业不是什么大问题,除非您的程序在MapReduce之外执行某种繁重的预计算或后计算。
-否则将计算InputSplit,并将有关InputData的元数据与作业jar一起复制到客户机上的HDFS。如果没有提交太多作业,或者InputSplit计算不是CPU密集型的,那么哑客户机应该很好。MAPREDUCE-207用于将InputSplit计算从客户端移动到集群,但尚未提交。@Praveen Sripati:您的意思是MAPREDUCE
作业的InputData
始终首先转换为InputSplit
块吗,这样就可以将它们分发给多个子Map
任务?现在计算是在客户端完成的,但是可以在以后的Hadoop版本中移动到集群中?没有InputSplit块,没有数据转换,数据驻留在原来的位置。InputSplit是输入数据跨记录边界的逻辑分离,因此每个映射器可以并行处理单个InputSplit。例如,一个输入表有1000行,然后可以将其逻辑拆分为10个InputSplit,即1-100行属于InputSplit-1,101-200行属于InputSplit-2,依此类推。类似地,1GB文件可以拆分为多个128MB的块,以便并行处理。逻辑是这个上下文中的关键词。