I have a spark scala job that I posted about earlier which had long running tasks here, I was able to figure out that the job is getting stuck because of the connection to Redis. I'm seeing notifications that my Redis cluster is maxing out on CPU in Elasticache and I'm not really sure what the right fix is. I'm using the Jedis client to connect and as of right now all my tasks just hang and never complete. I found that Redis is causing this bottleneck by commenting out the read/writes and my job completed.
I'm running this job on EMR with 24 spark.executor.instances and 12 spark.executor cores
The Redis configurations are:
RedisClient.port = 6379
RedisClient.poolConfig.setMaxIdle(300)
RedisClient.poolConfig.setMaxTotal(300)
RedisClient.poolConfig.setMaxWaitMillis(150000)
And I am reading from/writing to Redis in a loop which you can see in my previous post. This code has worked before on a smaller data set, so I think I have to adjust the settings though I'm not sure what I should adjust them to or if maybe I'm missing a setting. Whats the best way to figure out the optimal settings for a Redis Pool