[quote=引用 3 楼 guoyj520 的回复:] [quote=引用 1 楼 link0007 的回复:] 其实你目前这种方案是比较好的。如果你是web同步与spark交互,会阻塞servlet线程,吞吐量有限。除非你的集群非常碉堡,能在很短时间完成响应。另外结果建议是写到Redis上,前台查询后台,会得到一个请求id,这个请求id就是redis的key。然后拿着这个id轮询结果获取接口。 我们这边做Spark即席查询,都是SparkContext和Web Service分离,通过Zookeeper实现HA和负载均衡。Web Service接收SQL查询请求,对SQL进行优化后,查询ZK获取较空闲的Driver,然后将SQL发送给Driver执行,结果是写在HDFS上,然后把请求id作为key,HDFS路径作为value,写到Redis上。
大神, 1、那个SparkJobServer不是一个离线的程序吗,如何保持多个SparkJobServer是启动状态? 2、如何在zk中保持每个SparkJobServer对应的元数据值(自身的ip,Socket端口,以及负载值)?
[quote=引用 1 楼 link0007 的回复:] 其实你目前这种方案是比较好的。如果你是web同步与spark交互,会阻塞servlet线程,吞吐量有限。除非你的集群非常碉堡,能在很短时间完成响应。另外结果建议是写到Redis上,前台查询后台,会得到一个请求id,这个请求id就是redis的key。然后拿着这个id轮询结果获取接口。 我们这边做Spark即席查询,都是SparkContext和Web Service分离,通过Zookeeper实现HA和负载均衡。Web Service接收SQL查询请求,对SQL进行优化后,查询ZK获取较空闲的Driver,然后将SQL发送给Driver执行,结果是写在HDFS上,然后把请求id作为key,HDFS路径作为value,写到Redis上。
其实你目前这种方案是比较好的。如果你是web同步与spark交互,会阻塞servlet线程,吞吐量有限。除非你的集群非常碉堡,能在很短时间完成响应。另外结果建议是写到Redis上,前台查询后台,会得到一个请求id,这个请求id就是redis的key。然后拿着这个id轮询结果获取接口。 我们这边做Spark即席查询,都是SparkContext和Web Service分离,通过Zookeeper实现HA和负载均衡。Web Service接收SQL查询请求,对SQL进行优化后,查询ZK获取较空闲的Driver,然后将SQL发送给Driver执行,结果是写在HDFS上,然后把请求id作为key,HDFS路径作为value,写到Redis上。
1,261
社区成员
1,169
社区内容
加载中
试试用AI创作助手写篇文章吧