While scrolling through the Apache Flink JIRA, I c...
# troubleshooting
r
While scrolling through the Apache Flink JIRA, I came across this issue that mentions that Hadoop 2.8.3 are no longer supported as of Flink 1.15. I’m in the process of updating the job which relies handling this within the Dockerfile through the use of the shaded uber-jars something like this:
Copy code
ENV GCS_CONNECTOR_VERSION="hadoop2-2.1.1"
ENV FLINK_HADOOP_VERSION="2.8.3-10.0"
ENV GCS_CONNECTOR_NAME="gcs-connector-${GCS_CONNECTOR_VERSION}.jar"
ENV GCS_CONNECTOR_URI="$artifactStorage/${GCS_CONNECTOR_NAME}"
ENV FLINK_HADOOP_JAR_NAME="flink-shaded-hadoop-2-uber-${FLINK_HADOOP_VERSION}.jar"
ENV FLINK_HADOOP_JAR_URI="$artifactStorage/flink-shaded-hadoop-2-uber/${FLINK_HADOOP_VERSION}/${FLINK_HADOOP_JAR_NAME}"
I was hoping to upgrade this to a more recent version but I’m struggling to find the latest shaded plugin. I see these Flink Shaded Hadoop 3 Uber ones within Maven Central, but I’m not entirely sure what version of the connector or Hadoop that those would correspond to. Any advice? Just trying to upgrade this to the latest supported version as of 1.15 while I’m already touching the job and related things about the deployment.
m
Those Flink Shaded Hadoop 3 Uber ones aren’t from ASF Flink, but from vendors
The community doesn’t create shaded-uber JARs for Hadoop anymore
r
Thanks Martjin, what’s the best way to go about upgrading Hadoop in that case give the current way it’s being handled?
Perhaps not using a shaded-uber jar?
m
If you need anything with Hadoop, this is the default manual I always refer to https://nightlies.apache.org/flink/flink-docs-master/docs/dev/configuration/advanced/#hadoop-dependencies
r
Yup, I had come across that. Hadoop in this case is really only used for handing interactions with GCS (since we use that to store checkpoints/savepoints, etc.)
m
I’ve seen a similar request. I’m wondering if it’s not possible to already shade in the needed Hadoop dependencies for GCS. I believe that’s also done for S3 Presto and S3 Hadoop
That would be interesting to investigate
r
So reading through these docs, it makes it seem that I wouldn’t need to add these Hadoop jars as part of the Dockerfile? Some of the docs make it seem as long as I have the
GOOGLE_APPLICATION_CREDENTIALS
defined at the job/task manager levels, that it should be able to write to GCS for checkpointing/savepointing purposes. Does that seem correct?
Currently the Dockerimage will grab those jars (for GCS connector and Flink Hadoop) and throw them into the
/flink/lib
directory.
@Martijn Visser - it looks like removing the Docker business still allows it to write to GCS. I’m running these jobs in Ververica Platform 2.8, and based on their docs it sounds like as long as you are using Flink 1.15 or greater, you don’t need to worry about it. So it’s likely just some legacy stuff I had in there.
I did have one follow up question that you may be able to have an idea about. When I go and take a look at the bucket that Flink is writing to in GCS, I’m seeing the Client Error Rate be pretty high (~40-50%) which as I understand it in this context Flink would be the client:
The checkpoints/savepoints are eventually written, but that seems like an awfully high error rate. Is this some configuration that I might consider adjusting at the Flink/GCS Connector level to reduce this down?
m
Good to hear @Rion Williams
I did have one follow up question that you may be able to have an idea about. When I go and take a look at the bucket that Flink is writing to in GCS, I’m seeing the Client Error Rate be pretty high (~40-50%) which as I understand it in this context Flink would be the client:
Is there any logging on that?
r
I’m not entirely sure how to show any additional logging when looking at the bucket itself. The 40-50% client error rate seems to be consistent across multiple environments and both regional and multiregion buckets. I’d assume that because they are specifically client errors that those would be originating from Flink itself. This particular bucket handles quite a few different Flink jobs (~6-7 depending on the environment) all of which handle checkpointing at various intervals (from 10s to 10m). I tried to adjust the checkpointing intervals but it doesn’t look like that had much of an effect on this though.