Skip to content

[tools]Import Wizard for Installation Setup#599

Open
JinkunLiu wants to merge 13 commits intoapache:mainfrom
JinkunLiu:feature/import-wizard
Open

[tools]Import Wizard for Installation Setup#599
JinkunLiu wants to merge 13 commits intoapache:mainfrom
JinkunLiu:feature/import-wizard

Conversation

@JinkunLiu
Copy link
Copy Markdown
Contributor

@JinkunLiu JinkunLiu commented Apr 1, 2026

Linked issue: #586

Purpose of change

Import Wizard for Installation Setup

Install Flink & Install PyFlink Environment

Tests

I have test shell on Ubuntu 22.0 and macOS 15.0

API

not

Documentation

  • doc-needed
  • doc-not-needed
  • doc-included

@github-actions github-actions Bot added doc-needed Your PR changes impact docs. fixVersion/0.3.0 The feature or bug should be implemented/fixed in the 0.3.0 version. priority/major Default priority of the PR or issue. and removed doc-needed Your PR changes impact docs. labels Apr 1, 2026
@JinkunLiu JinkunLiu marked this pull request as draft April 1, 2026 05:09
@JinkunLiu JinkunLiu force-pushed the feature/import-wizard branch from 4345b93 to 47ba91e Compare April 6, 2026 12:57
@JinkunLiu JinkunLiu marked this pull request as ready for review April 6, 2026 12:58
@github-actions github-actions Bot added doc-needed Your PR changes impact docs. and removed doc-needed Your PR changes impact docs. labels Apr 6, 2026
Copy link
Copy Markdown
Collaborator

@wenjin272 wenjin272 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work @JinkunLiu. I tried using this script and found some issues, which I've listed in the comments.

From a user experience perspective, I feel there is a significant issue: users are required to understand too many cli flag and environment variables, such as --install-flink, --enable-pyflink, INSTALL_FLINK, FLINK_VERSION, and FLINK_AGENTS_VERSION. Even the value of INSTALL_FLINK can be set to ask.

I'm wondering if we could retain only a single CLI flag, --default, to indicate that all operations should follow the default path, while using an interactive mode for user selection in all other cases. Users can interactively choose whether to install Flink, select the Flink version (1.20.3, 2.0.1, 2.1.1, 2.2.0), and specify the flink-agents version (0.1.1, 0.2.1, 0.3). Additionally, users can provide interactive responses regarding the location of an existing Flink installation and the target installation directory.

We can retain these environment variables; when they are detected as set, we will print a log and skip the prompt.

Comment thread tools/install.sh
Comment thread tools/install.sh Outdated
Comment thread tools/install.sh Outdated
Comment thread tools/install.sh
Comment thread tools/install.sh Outdated
Comment thread tools/install.sh
@JinkunLiu
Copy link
Copy Markdown
Contributor Author

JinkunLiu commented Apr 27, 2026

Hello @wenjin272 thanks for you review

users are required to understand too many cli flag and environment variables.

CLI flags are reserved for non-interactive installation mode

I'm wondering if we could retain only a single CLI flag, --default, to indicate that all operations should follow the default path

Actually, the code already does this — you can try running bash install.sh directly and the interactive mode for user selection will appear.

Users can interactively choose whether to install Flink, select the Flink version (1.20.3, 2.0.1, 2.1.1, 2.2.0), and specify the flink-agents version (0.1.1, 0.2.1, 0.3).

Now the install shell provides the latest version as default. Users can use all the features we provide in the latest version.If they need special version about Flink or Flink-agents they can use cli flag.

@wenjin272
Copy link
Copy Markdown
Collaborator

Hi, @JinkunLiu, thanks for your update.

Since flink-agents provides multi-version support, and considering that some developers' clusters may not yet be compatible with the latest Flink version, I believe it might be too inflexible to always download the latest Flink version.

Now the install shell provides the latest version as default. Users can use all the features we provide in the latest version.If they need special version about Flink or Flink-agents they can use cli flag.

This is what I mean when I say that users need to understand many CLI flags. Why can't users be allowed to select a specific Flink version, rather than being required to specify it via a CLI flag? We provide a GUI-like installation wizard, but users are still required to manually specify certain cli flag to achieve specific goals. I believe this creates a fragmented user experience.

I think for some less frequent requirements, such as dry-run and verbose, we can simply only provide CLI flags. However, for some high-frequency requirements, I believe it would be a more user-friendly experience to allow users to select options during the installation guide, rather than requiring them to read and understand the information returned by help and setting CLI flags or environment variables.

I think these requirements contains:

  1. intall dir: we can provide two options: default vs. custom, and if user choose custom, they need input the custom dir.
  2. install flink: yes vs. no, and check the FLINK_HOME when user choose no.
  3. flink-version: 4 options, 1.20.3, 2.0.1, 2.1.1, 2.2.0(recommend)
  4. install pyflink: yes vs. no

After the user makes the above selections, we will then output the Install Plan.

Additionally, when running the script on my Mac, I encountered the error die: command not found. You may need to replace it with a more universally available command.

Copy link
Copy Markdown
Collaborator

@wenjin272 wenjin272 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, @JinkunLiu. I have verified the install.sh script locally and successfully submitted the example to the Flink standalone cluster. LGTM. Please take a look at your convenience @xintongsong.

The only issue I encountered was being unable to complete the download of Flink within the timeout period. I'm not sure whether this is a personal network problem or a common occurrence.

Additionally, now that an install script has been provided, we need to refactor the Installation section in the documentation. I think this can be done either in this PR or in a separate one.

Comment thread tools/install.sh Outdated
detect_downloader
fi
if [[ "$DOWNLOADER" == "curl" ]]; then
curl -fsSL --proto '=https' --tlsv1.2 --connect-timeout 5 --max-time 30 --retry 2 --retry-delay 1 --retry-connrefused -o "$output" "$url"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flink-2.2.0-bin-scala_2.12.tgz file is 544 MB in size, and setting the max-time to 30 seconds imposes high demands on network performance.
Based on my actual tests, it takes approximately 500 seconds in my office network. I recommend setting it to 600 seconds.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. This is a mistake which introduced when i fix another issue. Fixed it.

@JinkunLiu JinkunLiu force-pushed the feature/import-wizard branch from a2ab0bd to 852c603 Compare April 29, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-needed Your PR changes impact docs. fixVersion/0.3.0 The feature or bug should be implemented/fixed in the 0.3.0 version. priority/major Default priority of the PR or issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants