如何使用ResourceManager HA和Hortowork的HDP将MR作业提交给YARN群集?
问题描述:
我想了解如何将MR作业提交给基于YARN的Hadoop集群。如何使用ResourceManager HA和Hortowork的HDP将MR作业提交给YARN群集?
案例1:
对于其中只有一个ResourceManager中(即NO 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和我指定的主机名becasue只有一个主人。
案例2:
现在,当有HA两个NN和RM的情况下,我该如何提交作业?我无法理解这一点,因为现在我们有两个RM和NN(主动/备用),我知道有一个动物园管理员要跟踪失败。所以,从客户的角度来看,如果要提交一份工作,我是否需要知道提交工作的确切NN和RM,还是有一些我们必须用来提交工作的逻辑命名?
任何人都可以帮我理解吗?
答
有或没有HA时,提交作业的命令保持不变。
hadoop jar <jar> <mainClass> <inputpath> <outputpath> [args]
使用-fs
和-jt
是可选的,并且不使用,除非你想指定Namenode
和JobTracker
是从一个在配置不同。
如果fs.defaultFS
属性在core-site.xml
和性质限定所述名称服务(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>
非常感谢您的帮助,这是否意味着我们必须在客户端配置Java类(根据上面的配置)?如果我们不这样做,会不会有一些问题? – CuriousMind
如果未提供,客户端将无法联系到当前的活动NN。 – franklinsijo