我们处理的数据主要存储在文件系统和数据库中。本书的第3章将专门介绍文件系统,第4章会详细介绍与数据库、数据表相关的操作。Alink采用插件的方式来管理各种文件系统、数据库以及各个版本所需的函数库。本节还会专门介绍如何利用Alink的插件(Plugin)工具自动下载相关的函数库。
下图为Alink文件系统(File System)与数据库(Catalog)的架构图,具体说明如下:

Alink能够支持不同第三方库(例如OSS、Hive、Derby、MySQL等)的不同版本(例如Hive的2.3.4版本、2.3.6版本等)。为了更好地管理插件(外部的第三方库),我们提供了插件下载器(PluginDownloader)来管理不同插件的多个版本。
插件下载器封装了插件的常见功能,如下所示:
在Java代码中可以这样使用插件下载器:
// 设置插件下载的位置。当路径不存在时,会自行创建路径
AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/");
// 获得Alink插件下载器
PluginDownloader pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader();
// 从远程加载插件的配置项
pluginDownloader.loadConfig();
// 展示所有可用的插件名称
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();