Apache Druid MapReduce任务未在Google Dataproc控制台显示问题咨询
咱们先把核心问题拆解清楚:你的本地Druid通过主节点VPN提交的MapReduce摄入任务确实在Dataproc集群上正常运行,但Dataproc控制台没法识别并展示这些任务。这大概率和Dataproc的任务追踪机制、跨集群的网络通信限制有关,下面是一步步的排查和解决方法:
1. 先确认任务的实际运行位置
首先登录到Dataproc主节点,执行这条命令查看当前YARN集群上的运行任务:
yarn application -list
如果能看到带druid-indexing-task标识的应用,说明任务确实在Dataproc集群上,问题出在控制台的状态同步环节;如果看不到,那可能任务误提交到了本地Druid的YARN集群(如果本地部署了的话),得检查Druid的Hadoop配置是否正确指向Dataproc的YARN地址。
2. 检查Dataproc Agent的状态与权限
Dataproc控制台的任务视图完全依赖集群内部的Dataproc Agent来收集YARN任务元数据并上报到Google Cloud控制平面。结合你的VPN仅连接主节点的情况,重点排查:
- 主节点上的Dataproc Agent是否正常运行:
如果Agent停了,重启它:systemctl status google-dataproc-agentsystemctl restart google-dataproc-agent - 确认Agent有权限访问YARN的资源管理器API:默认情况下Agent具备权限,但如果你的YARN做了特殊权限配置,要保证Agent的服务账号能访问
http://<dataproc-master-ip>:8088/ws/v1/cluster/apps这个端点。
3. 调整Druid的Hadoop任务提交配置
Druid提交任务时如果没带上Dataproc能识别的标识,控制台就没法自动追踪。你可以在Druid的Hadoop摄入任务配置里添加以下参数:
在jobProperties字段中加入:
"mapreduce.job.user.name": "dataproc", "mapreduce.job.tags": "druid-ingest,dataproc-tracked"
这些标签能帮Dataproc Agent快速识别并归类Druid的摄入任务。
4. 排查网络通信的范围限制
由于只有主节点通过VPN连接,Dataproc控制平面可能没法从Worker节点获取任务的日志和状态细节。你可以尝试:
- 扩展VPN规则,允许Google Cloud控制平面的内部IP范围访问Dataproc集群所有节点的必要端口:比如YARN Resource Manager的8088端口、Node Manager的8042端口,以及Dataproc Agent的通信端口(默认443、80)。
- 如果暂时没法扩展VPN到所有节点,可以在Dataproc主节点上配置端口转发,把Worker节点的YARN相关端口映射到主节点,让Agent能通过主节点获取全集群的任务状态。
5. 临时方案:用gcloud命令提交任务
如果上面的方法暂时没法生效,你可以直接用gcloud命令提交Druid的Hadoop摄入任务,这样提交的任务会被Dataproc控制台直接追踪:
gcloud dataproc jobs submit hadoop --cluster=<你的Dataproc集群名> --jar=<Druid的Hadoop索引器Jar包路径> -- <你的Druid任务参数>
需要把Druid原有摄入任务的参数转换为gcloud命令支持的格式。
内容的提问来源于stack exchange,提问作者Emad Mokhtar

