[TASK][MEDIUM] Configurable NICs(Network Interface Cards) selection strategy
- Dominant language
- Scala
- Stars
- 2.4k
- Forks
- 1k
- PR merge metrics
- No merged PRs in 30d
Description
### What's the level of this task?
MEDIUM
### Code of Conduct
- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
### Search before creating
- [X] I have searched in the [task list](https://github.com/orgs/apache/projects/343) and found no similar tasks.
### Mentor
- [ ] I have sufficient expertise on this task, and I volunteer to be a mentor of this task to guide contributors through the task.
### Skill requirements
- Familiar with Kyuubi architecture
- Knowledge of Scala language and network programming
### Background and Goals
In some environments, e.g. AliCloud ADB Spark cluster, it has multiple NICs(Network Interface Cards), Kyuubi uses [findLocalInetAddress](https://github.com/apache/kyuubi/blob/master/kyuubi-common/src/main/scala/org/apache/kyuubi/Utils.scala#L257) to find the first non-loopback address to bind, this may cause network issues. See details in https://github.com/apache/kyuubi/issues/3409
### Implementation steps
As title, we need flexible configurations to allow users to choose different NICs.
Note: The task level is set to MEDIUM because I want a flexible and extendable design, including docs and at least one real-world case.
### Additional context
Introduction of [2024H1 Kyuubi Code Contribution Program](https://github.com/apache/kyuubi/issues/6232)
Contributor guide
Research direction
Start at findLocalInetAddress in kyuubi-common/src/main/scala/org/apache/kyuubi/Utils.scala and review issue 3409 for the network failure context. Define an extensible configuration approach for selecting NICs, document it, and include at least one real-world case as described in the task.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala, spark
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100