天天看点

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

问题背景

1.登录EMR集群节点,运行SparkStreaming示例,如下所示(不同版本EMR集群spark-examples_xxx.jar的路径略有差异):

[root@emr-header-1 ~]# spark-submit --class org.apache.spark.examples.streaming.NetworkWordCount --master yarn --deploy-mode cluster /opt/apps/ecm/service/spark/2.3.2-1.0.2/package/spark-2.3.2-1.0.2-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.2.jar 192.168.0.211 9999           

参数说明:

192.168.0.211: 监听流数据源地址

9999: 监听流数据源端口

2.提交作业后,通过EMR集群提供的Yarn UI来查看运行在yarn上面作业。

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明
基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

3.点击“ApplicationMaster”,跳转spark界面查看作业详情,切换到“Streaming”可以看到以下界面:

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明
基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

4.点击“Completed Batches”里面的某个完成时间点的Batch,跳转页面会报404错误:

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

如何解决?

这个问题目前是Knox兼容的一个缺陷,当前的建议是通过端口转发(俗称“打洞”)来访问Yarn UI查看作业,具体步骤如下(本文以Mac客户端为例测试):

1.本机终端输入:ssh-keygen,生成一个公钥:

test:~ root$ cd ~/.ssh/
test:.ssh root$ ls
id_rsa        id_rsa.pub    known_hosts
test:.ssh root$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAA....此处省略很多个字符..-6c96cfde9ab7.local           

2.登录到EMR Master 节点,将本机的 id_rsa.pub 内容写入到远程 Master 节点的 ~/.ssh/authorized_keys中:

vim ~/.ssh/authorized_keys           

3.本机测试免密登录到EMR Master 节点:

local:.ssh root$ ssh [email protected]
Last login: Thu Aug  1 20:24:25 2019
Welcome to Alibaba Cloud Elastic Compute Service !
[root@emr-header-1 ~]#           

4.在本机执行以下命令进行端口转发:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp           

5.启动 Chrome(在本机新开 terminal 执行)。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp           

6.EMR控制台进入集群的安全组,放行8088、20888两个端口(可以通过ip.taobao.com获取客户端公网出口IP):

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

7.在Chrome中通过xx.xx.xx.xx:8088访问

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

8.点击“ApplicationMaster”,跳转spark界面查看作业详情无法访问,地址中是EMR Master节点的hostname,需要在本地配置下hosts映射:

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明
local:~ root$ sudo vim /etc/hosts
xx.xx.xx.xx    emr-header-1.cluster-126784           

9.配置后即可访问。切换到“Streaming”,点击“Completed Batches”列表中的Batch,验证正常访问:

基于Knox登录Yarn UI查看SparkStreaming作业兼容性问题说明

继续阅读