Open progxaker opened 3 months ago
I prepared a quick fix. It's not perfect because the advice needs to be applied more specifically, but anyway, I just wanted to see if it works.
@progxaker,
Apology for missing the issue when it was raised back in June. I have not tested the spark extension on Kubernetes. Will spend some time setting this up to investigate that.
In the mean time, can I confirm that the Spark extension does work to some extent in Kubernetes but just not context propagation? I read it that you're getting spans but no parent id.
And may I know which version of Spark are you running? Are you running the same Spark version locally and on Kubernetes?
In the mean time, can I confirm that the Spark extension does work to some extent in Kubernetes but just not context propagation? I read it that you're getting spans but no parent id.
Yes, it works, but with some limitations, I suppose.
The current issue.
Adopting of spans by application spans. For example:
I haven't tried (seen) this on the local machine, but I fixed it for Kubernetes. When I clean up the test code, I'll create an issue and pull request with changes.
Executor ID. At this point I'm not sure if this should be in the attributes, but I'm interested in adding them to create a chart with a load (tasks per executor) or something like that.
And may I know which version of Spark are you running? Are you running the same Spark version locally and on Kubernetes?
Thanks for the response, I really appreciate it :)
Hello @keytiong. I hope you are doing well.
The problem statement: the task advice doesn't work with Spark on Kubernetes, but it works locally. This causes a problem with context propagation, because as far as I understand, the
enterConstructor_V3_4
function injectsstageContext
, and since it isn't called,spark_task
spans has no parent (spark_stage
has a parent -spark_job
, no problem here). Note thatspark_task
is created, it just doesn't have a parent.What was done
./spark-submit --class SimpleApp --master local[4] --conf spark.jars.ivy=/tmp/.ivy target/simple-project-1.0.jar
.spark.driver.defaultJavaOptions
andspark.executor.defaultJavaOptions
, as well as theJAVA_TOOL_OPTIONS
environment variable (which works locally).TaskSet
class as it should be used when managing tasks, but nothing.System.err.println("enter_<class_name>")
toLiveListenerBusInstrumentation
,TaskInstrumentation
,TaskRunnerInstrumentation
. The message from LiveListenerBus and TaskRunner is printed, from Task - not. Everything works locally.Logs (Kubernetes)
Driver
Executor
Logs (Local)