我试图了解如何提交一个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,或者我们是否需要使用一些逻辑命名来提交作业?
有人能帮我理解吗?
1条答案
按热度按时间0x6upsns1#
无论是否有ha,提交作业的命令都是相同的。
使用
-fs
以及-jt
是可选的,除非要指定Namenode
以及JobTracker
与配置中的不同。如果
fs.defaultFS
中的属性core-site.xml
以及定义nameservice的属性(dfs.nameservices
)其namenodes在hdfs-site.xml
对于客户机,每当执行客户机操作时,都将选择活动主机。默认情况下,dfs客户端使用这个java类来确定哪个namenode当前处于活动状态。