如何使用resourcemanager ha wrt hortowork的hdp将mr作业提交到yarn cluster?

djmepvbi  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(453)

我试图了解如何提交一个mr作业到hadoop集群,基于Yarn。

案例1:

对于只有一个resourcemanager(即没有ha)的情况,我们可以像这样提交作业(我实际使用了它,我相信它是正确的)。

hadoop jar word-count.jar  com.example.driver.MainDriver -fs  hdfs://master.hadoop.cluster:54310 -jt master.hadoop.cluster:8032 /first/dir/IP_from_hdfs.txt  /result/dir

可以看到,rm在端口8032上运行,nn在54310上运行,我指定主机名是因为只有一个主机。

案例2:

现在,对于nn和rm都有ha的情况,如何提交作业?我不能理解这一点,因为现在我们有两个rm和nn(主动/备用),我知道有zookeeper来跟踪故障。因此,从客户机的Angular 来看,我是否需要知道提交作业的确切nn和rm,或者我们是否需要使用一些逻辑命名来提交作业?
有人能帮我理解吗?

0x6upsns

0x6upsns1#

无论是否有ha,提交作业的命令都是相同的。

hadoop jar <jar> <mainClass> <inputpath> <outputpath> [args]

使用 -fs 以及 -jt 是可选的,除非要指定 Namenode 以及 JobTracker 与配置中的不同。
如果 fs.defaultFS 中的属性 core-site.xml 以及定义nameservice的属性( dfs.nameservices )其namenodes在 hdfs-site.xml 对于客户机,每当执行客户机操作时,都将选择活动主机。
默认情况下,dfs客户端使用这个java类来确定哪个namenode当前处于活动状态。

<property>
  <name>dfs.client.failover.proxy.provider.<nameserviceID></name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

相关问题