我正在尝试了解如何将 MR 作业提交到基于 YARN 的 Hadoop 集群。
案例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 上运行,我指定了主机名,因为只有一个主机。
案例2:
现在,对于NN和RM都有HA的情况,我该如何提交作业呢?我无法理解这一点,因为现在我们有两个 RM 和 NN(主用/备用),而且我知道有 zookeeper 来跟踪故障。因此,从尝试提交作业的客户角度来看,我是否需要知道提交作业的确切 NN 和 RM,或者是否有一些我们必须用于提交作业的逻辑命名?
谁能帮我理解一下?
最佳答案
无论有无 HA,提交作业的命令都保持不变。
hadoop jar <jar> <mainClass> <inputpath> <outputpath> [args]
使用 -fs
和 -jt
是可选的,除非您想指定 Namenode
和 JobTracker,否则不会使用
与配置中的代码不同。
如果 core-site.xml
中的 fs.defaultFS
属性和定义 nameservice 的属性 (dfs.nameservices
) 及其名称节点在客户端的 hdfs-site.xml
中正确配置,每当执行客户端操作时,将选择 Active Master。
默认情况下,DFS 客户端使用此 Java 类来确定哪个 NameNode 当前处于事件状态。
<property>
<name>dfs.client.failover.proxy.provider.<nameserviceID></name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
关于hadoop - 如何使用 ResourceManager HA wrt Hortowork 的 HDP 将 MR 作业提交到 YARN 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441743/