Alink教程(Java版)
Alink教程(Python版)
该文档涉及的组件

Alink插件下载器

使用介绍


Alink能够支持不同第三方库(例如oss,hive,derby,mysql等)的不同版本(例如hive 2.3.4, 2.3.6等)。

为了更好的管理插件(外部的第三方库),我们提供了插件下载器(PluginDownloader)来管理不同插件的多个版本的工具。

本插件下载器封装了对插件常见的功能,例如:


- 枚举仓库中所有的插件;
- 枚举某个插件的所有版本;
- 下载某个插件的特定版本/默认版本;
- 下载所有插件的默认版本;
- 升级所有的插件;


注意:为了便于用户的使用,本插件下载器默认从 Alink 官方提供的仓库中下载需要的插件。

注意:Alink 的新版本中使用了更先进的插件机制:当使用了需要插件的组件、并且能正常访问外网时,会自动下载插件,不需要再使用下文介绍的 PluginDownloader 手动下载了。通常情况下,只需根据需要设置插件下载路径 AlinkGlobalConfiguration.setPluginDir 就可以了。

开始使用

在 Java 代码中使用插件下载器:

// 设置插件下载的位置,当路径不存在时会自行创建路径;默认为相对路径 plugins
AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/");

// 获得Alink插件下载器
// 注意:只有第一次需要下载插件,之后只需要设置插件位置(第二行),不需要再下载了
PluginDownloader pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader();

// 展示所有可用的插件名称
List <String> plugins = pluginDownloader.listAvailablePlugins();
// 输出结果:[oss, hive, derby, mysql, hadoop, sqlite]

// 显示第0个插件的所有版本
String pluginName = plugins.get(0); // oss
List<String> availableVersions = pluginDownloader.listAvailablePluginVersions(pluginName); 
// 输出结果:[3.4.1]

// 下载某个插件的特定版本
String pluginVersion = availableVersions.get(0);
pluginDownloader.downloadPlugin(pluginName, pluginVersion);
// 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中

// 下载某个插件的默认版本
pluginDownloader.downloadPlugin(pluginName);
// 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中

// 下载配置文件中的所有插件的默认版本
pluginDownloader.downloadAll();

// 插件升级
// 在升级的过程中,会先对旧的插件进行备份,备份文件名称后缀为.old;等到插件更新完毕后,会统一删除旧的插件包
// 若插件更新中断,用户可以从.old文件恢复旧版插件
pluginDownloader.upgrade();


在 Python 代码中使用插件下载器:

# 初始化 PyAlink
from pyalink.alink import *
useLocalEnv(1)

# 设置插件下载的位置,当路径不存在时会自行创建路径;默认为 PyAlink 路径下的 lib/plugins 目录
AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/")

# 获得Alink插件下载器
# 注意:只有第一次需要下载插件,之后只需要设置插件位置(第6行),不需要再下载了
pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader()

# 展示所有可用的插件名称
plugins = pluginDownloader.listAvailablePlugins()
print(plugins)
# 输出结果:['oss', 'hive', 'derby', 'mysql', 'hadoop', 'sqlite']

# 显示第0个插件的所有版本
pluginName = plugins[0] # oss
availableVersions = pluginDownloader.listAvailablePluginVersions(pluginName)
print(availableVersions)
# 输出结果:[3.4.1]

# 下载某个插件的特定版本
pluginVersion = availableVersions[0]
pluginDownloader.downloadPlugin(pluginName, pluginVersion)
# 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中

# 下载某个插件的默认版本
pluginDownloader.downloadPlugin(pluginName)
# 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中

# 下载配置文件中的所有插件的默认版本
pluginDownloader.downloadAll()

# 插件升级
# 在升级的过程中,会先对旧的插件进行备份,备份文件名称后缀为.old;等到插件更新完毕后,会统一删除旧的插件包
# 若插件更新中断,用户可以从.old文件恢复旧版插件
pluginDownloader.upgrade()


无外网连接时使用

  1. 在一台有外网连接的机器,运行依赖同样插件的代码。正常运行结束后,所需插件会下载到代码中指定的插件目录(如果调用了 setPluginDir )或者默认目录下;
  2. 将整个插件目录同步到无外网连接的机器上(如果是集群环境,则需要同步到每一台机器上),放置在某个目录下;
  3. 在代码中设置插件目录为 2 中的拷贝目标目录,然后运行代码。

其他不可下载时的使用

  1. 下载配置文件:https://alink-release.oss-cn-beijing.aliyuncs.com/deps-files/flink-1.13/config.json,其中 1.13 可以根据使用的 Flink 版本进行修改。
  2. 在文件中找到需要下载的插件名和版本号,例如我想下载 derby 版本 10.6.1.0,那么能找到
...
  "default-version": "2.13.0-public"
  },
  "derby": {
    "versions": {
      "10.6.1.0": [
        ".version",
        "alink_connector_jdbc_derby_flink-1.13_2.11-1.5.5.jar",
        "derby-10.6.1.0.jar",
        "flink-connector-jdbc_2.11-1.13.0.jar"
      ]
    },
    "default-version": "10.6.1.0"
  },
  "hadoop": {
  ...
  1. 版本号后面的列表是需要下载的所有文件,例如要下载 derby-10.6.1.0.jar,路径就为 https://alink-release.oss-cn-beijing.aliyuncs.com/deps-files/flink-1.13/derby-10.6.1.0/derby-10.6.1.0.jar
  2. 下载的文件需要组织到一个插件目录下,如下图所示:

  1. 在代码中通过 AlinkGlobalConfiguration.setPluginDir() 设置插件目录。