集成 SAP-HANA EML 库和 TensorFlow 模型服务器 (TMS) 来预测 S&P 500 指数:第一部分:安装和配置 SAP-HANA。





5.00/5 (4投票s)
如何正确安装和配置 SAP-HANA 和 TensorFlow 模型服务器来预测 S&P 500 指数。
引言
这是三篇文章系列的第一篇,我们将通过预测标普 500 指数股票市场指标值的一个例子,讨论使用 SAP-HANA 进行 AI 数据分析的多个方面。该例子使用一个 TensorFlow 模型,该模型之前已构建并导出到 TensorFlow 模型服务器,而 TensorFlow 模型服务器已与 SAP-HANA 数据分析服务集成,例如 SAP-HANA 的外部机器学习 (EML) 库。
在本文中,我们将重点介绍安装和配置 SAP-HANA 服务器虚拟机,以及执行一系列额外的配置和维护任务,例如安装 SAP-HANA 客户端和 EML 库、Python 的开发工具和包、Docker.io(也称为 TensorFlow 模型服务器 (TMS))来提供标普 500 AI 预测模型等。
具体来说,在本教程中,我们将演示如何从 SAP 下载中心网站下载 SAP-HANA Express Edition 2.0,并在 VMware Workstation 虚拟化环境中部署一个运行 SAP-HANA 服务的虚拟机实例。之后,我们将执行一系列配置任务,安装集成 SAP-HANA 和 TensorFlow 模型服务器所需的所有开发工具和库,以便在 Python 客户端脚本或 SAP-HANA SQL 引擎级别后端进行 AI 数据分析。
下载并安装 SAP-HANA Express Edition 2.0
我们最开始需要做的就是访问 SAP HANA 开发者下载中心:https://www.sap.com/cmp/td/sap-hana-express-edition.html,并注册以获取 SAP-HANA Express Edition 2.0 的免费版本。
注册成功后,我们必须通过 SAP-HANA 下载页面上的特定链接获取 SAP-HANA Express 2.0 下载管理器可执行文件,如下所示。
此外,使用下载管理器应用程序需要安装 Oracle JDK 8。因此,我们必须单独下载并安装它,地址为:
然后才能运行下载管理器应用程序。
安装 Oracle JDK 8 后,我们必须运行下载管理器应用程序(HXEDownloadManager_win.exe)以下载部署 SAP-HANA Express Edition 2.0 虚拟服务器到开发机所需的所有组件。
具体来说,我们将需要通过 SAP-HANA 下载管理器下载以下组件:
仅服务器虚拟机 (OVA) | hxe.ova |
SAP-HANA 外部机器学习 (EML) 库 | eml.tgz |
SAP-HANA 客户端 Linux (X86/64) | clients_linux_x86_64.tgz |
SAP-HANA 客户端 Windows | clients_windows.zip |
仅服务器虚拟机 (hxe.ova) 是通过下载管理器应用程序下载的主要 SAP-HANA 组件。下载的文件包含一个以开放虚拟化格式 (OVF) 存储的虚拟机容器映像。我们将使用 hxe.ova 容器映像在 VMware Workstation 或 VMware Player 虚拟化环境中创建特定的 SAP-HANA 服务器虚拟机。SAP-HANA 外部机器学习 (EML) 库是另一个组件,通过安装它,我们可以启用已部署的 SAP-HANA 虚拟机的机器学习功能。以下组件通常在虚拟机维护过程完成后安装。此外,还有两个组件,如适用于 Linux 或 Windows 的 SAP-HANA 客户端。适用于 Linux 的 SAP-HANA 客户端主要用于提供各种客户端应用程序(例如 HDBSQL 和 SAP-HANA 服务)与 SAP-HANA 服务器虚拟机环境内部运行的 SAP-HANA 服务之间的本地连接,而适用于 Windows 的 SAP-HANA 客户端允许外部应用程序从基于 Windows 的开发机远程连接到这些服务。
创建 SAP-HANA Express 2.0 服务器虚拟机
既然我们已成功下载了所有必需的 SAP-HANA 组件,现在是时候使用之前下载的 hxe.ova 文件中的特定容器映像来创建 SAP-HANA Express 2.0 服务器虚拟机了。以下是如何创建 SAP-HANA 虚拟机的分步指南:
- 在 VMware Workstation 中,使用命令 文件 -> 打开… 打开 hxe.ova 容器映像。
-
为新虚拟机指定名称(例如
hxeinst
)及其位置,例如 D:\VMs\hxeinst,如上图所示,然后单击 **导入** 按钮。 - 创建 SAP-HANA 服务器虚拟机后,指定该虚拟机使用的系统内存量和处理器数量。
强烈建议为 SAP-HANA 服务器虚拟机环境分配 32768 MB 系统内存,并分配 4 个物理 CPU 和 2 个逻辑核心,以提供最佳性能和系统稳定性。
- 使用 **虚拟机** -> **电源** -> **启动客户机** 命令启动正在创建的 SAP-HANA 服务器虚拟机。
预配置 SAP-HANA Express 2.0 服务器
创建 SAP-HANA 服务器虚拟机后,我们必须完成几个预配置步骤,以便能够将其用于各种应用程序。
具体来说,在此初步步骤中,我们必须获取 SUSE Enterprise Linux 12 SP1 for SAP Applications 的试用注册密钥,以便能够根据我们的需求配置先前创建的 SAP HANA 服务器虚拟机实例。为此,我们必须访问 https://www.suse.com/products/sles-for-sap/download/ 并完成注册步骤以获取我们将进一步在 SAP-HANA 服务器维护阶段使用的特定密钥。完成注册后,可以轻松地从产品下载页面复制 SLES 12 SP1 for SAP Apps 试用注册密钥。
虚拟机已成功启动并引导后,首先要做的就是配置默认键盘布局和时区,以及使用以下默认管理员凭据登录 SAP-HANA 服务器,如下图所示:
登录: hxeadm; 密码: HXEHana1
另外,请不要忘记记录服务器的 IP 地址(例如 192.168.0.131)。稍后,我们将使用此 IP 地址连接到正在维护的服务器。
输入正确的管理员登录名和密码后,系统将立即提示您更改默认密码为任意您选择的密码。此外,我们还需要设置主 SAP-HANA 数据库密码,并在被问及是否继续进行后续配置过程时,输入 'y
'。
强烈建议为 SAP-HANA 服务器管理员帐户和 HANA 数据库主用户设置相同的密码,以简化授权过程。
下图展示了 SAP-HANA 服务器的配置过程。
整个配置过程非常简单,但服务器启动一些 SAP-HANA 服务并重新创建所有系统和数据库安全密钥需要一些时间。
配置过程成功完成后,SAP-HANA 服务器将使用之前设置的系统管理员凭据自动登录。
正如您所见,预配置 SAP-HANA 服务器虚拟机的过程相当简单。只需点击几下,您就可以创建一个极简的 SAP-HANA 服务器配置,可用于各种应用程序。接下来,我们将讨论如何配置我们已部署的 SAP-HANA 虚拟服务器,以便使用 SAP-HANA EML 库执行数据分析,并使用 TensorFlow 模型服务器 (TMS) 提供各种 AI 和机器学习模型。
配置 SAP-HANA HDB 客户端和外部机器学习 (EML) 库
为了安装和配置 SAP-HANA EML 库和 TensorFlow 模型服务器 (TMS),我们将编写一个 bash 脚本来执行以下操作:
1. 将 Clients_Linux_x86_64.tgz 和 Eml.tgz 文件上传到 SAP-HANA 虚拟服务器。
在执行任何维护和配置任务之前,首先需要将 hxe_config.tar.gz 存档中的配置文件(例如 create_db.sql、create_user.sql、eml_setup.sql、hxe_config.sh)提取到开发机上,并使用 FTP 客户端连接将它们上传到服务器的 /usr/sap/HXE/home/ 目录。
此外,我们还需要另外两个文件,即来自 SAP-HANA 下载的 clients_linux_x86_64.tgz 和 eml.tgz。最后,我们需要将这两个文件上传到服务器上的同一目录。
2. 使用 SSH 连接到 SAP-HANA 服务器虚拟机。
为了能够使用本教程,我们必须首先连接到我们正在运行的 SAP-HANA 服务器虚拟机实例。为此,我们将使用 PuTTY SSH 客户端。要连接到服务器,我们将使用服务器 IP 地址(例如 192.168.0.131)和管理员帐户凭据(例如登录名:hxeadm 和之前设置的密码)。建立连接后,我们必须使用此命令切换到 hxeadm 管理员主目录:cd ~
3. 注册您的 SLES 12 SP2 试用版并安装 SLES 12 SP2 SDK。
首先,我们必须注册我们的 SLES 12 SP2 试用版,以便能够激活所有 SLES 扩展和存储库。这通常通过运行以下命令来完成:
sudo SUSEConnect --status-text
sudo SUSEConnect -r <YOUR_SLES_REGISTRATION_KEY> -e <EMAIL_ADDRESS>
sudo SUSEConnect -p sle-sdk/12.2/x86_64
4. 创建 TensorFlow 模型服务器管理员帐户。
根据最佳实践,我们必须创建一个 TensorFlow 模型服务器管理员帐户,并将其添加到 sudoers 列表,方法是输入以下命令序列:
sudo useradd -m -d /home/tmsadm -c "TensorFlow Administrator" tmsadm
sudo passwd tmsadm
sudo bash -c 'echo "tmsadm ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
这是为了避免对运行 SAP-HANA 服务实例的标准 hxeadm
管理员帐户产生一些副作用。
5. 安装 SAP-HANA HDB 客户端(Linux 版)。
下一步是安装 SAP-HANA HDB 客户端,方法是解压缩安装文件,并从 tmsadm
帐户的 bash 控制台中运行特定的安装脚本。请确保 clients_linux_x86_64.tgz 文件已复制到 /home/tmsadm/ 目录。
cd ~
sudo cp clients_linux_x86_64.tgz /home/tmsadm/
sudo su -l tmsadm
cd ~
sudo tar -xvf ~/clients_linux_x86_64.tgz
sudo tar -xvf ~/hdb_client_linux_x86_64.tgz
sudo ~/HDB_CLIENT_LINUX_X86_64/hdbinst
最后,在 SAP-HANA HDB 客户端成功安装后,我们必须将 HDB 客户端应用程序的路径添加到 tmsadm
用户配置文件。
sudo echo "export PATH=\$PATH:/home/tmsadm/sap/hdbclient" >> ~/.profile
source .profile
6. 安装 SAP-HANA EML 库。
在安装 SAP-HANA HDB 客户端后,我们还必须通过从 hxeadm
帐户的 bash 控制台执行以下命令来设置 SAP-HANA EML 库。在运行以下命令之前,请确保 eml.tgz 文件已复制到 /usr/sap/HXE/home 位置。
sudo su -l hxeadm
cd ~
sudo tar -xvf ~/eml.tgz -C ~
在运行 EML 库安装脚本之前,请确保 hxeadm
用户拥有 ~/HANA_EXPRESS_20 目录、子目录和文件的完全所有权。
sudo chown -R hxeadm ~/HANA_EXPRESS_20
~/HANA_EXPRESS_20/install_eml.sh
7. 安装 Python 的 Pip、虚拟环境、SAP-HANA HDB 客户端 Python CLI、TensorFlow、TensorFlow Serving API。
最后,在我们安装了 SAP-HANA HDB 客户端和 EML 库之后,我们必须安装 Python 的 Pip、虚拟环境以及所需的 TensorFlow 和 TensorFlow Serving API 包。为此,我们必须从 tmsadm
帐户的 bash 控制台执行以下命令序列:
sudo su -l tmsadm
cd ~
# Download get-pip.py file using CURL:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# Run get-pip.py script to install Python’s Pip:
sudo python get-pip.py --trusted-host pypi.python.org
# Add Pip default path to the tmsadm account profile:
sudo echo "export PATH=\$PATH:/home/tmsadm/.local/bin" >> ~/.profile
source .profile
# Install and setup Python’s virtual environment:
cd ~
pip install --user virtualenv
virtualenv --python=python2.7 --system-site-packages ~/tms
source ~/tms/bin/activate
# Install SAP-HANA HDB client for Python, TensorFlow and TensorFlow Serving APIs:
sudo pip install --user /usr/sap/hdbclient/hdbcli-2.4.126.tar.gz
sudo pip install 'tensorflow==1.8'
sudo pip install 'tensorflow-serving-api==1.12.0'
8. 创建 TensorFlow 模型服务器配置文件。
在安装完所有必需的 Python 包和工具后,我们必须创建一个目录来包含要提供的特定模型,以及 TensorFlow 模型服务器 (TMS) 用于加载和提供这些模型的正确配置文件。
sudo su -l tmsadm
mkdir -p ~/export
echo "model_config_list: {}" >> ~/export/models.config
可以通过单击本文页面顶部的 hxe_config.tar.gz 链接下载完整的 SAP-HANA EML 和 TensorFlow 模型服务器 (TMS) 维护 bash 脚本。具体来说,以下存档包含三个文件:clients_linux_x86_64.tgz、eml.tgz 和 hxe_config.sh。我们必须通过 FTP 连接将这些文件上传到服务器上的 /usr/sap/HXE/home/ 目录。
之后,我们必须使用 PuTTY SSH 客户端,使用 hxeadm
管理员帐户连接到服务器,并在 bash 控制台中运行以下命令来执行此脚本:
hxeadm@hxehost:/usr/sap/HXE/HDB90> cd ~
hxeadm@hxehost:/usr/sap/HXE/home> ./hxe_config.sh <YOUR_SLES_REGISTRATION_KEY> <EMAIL_ADDRESS>
对于已经遵循上述 SAP-HANA 配置教程的人来说,执行此步骤是不必要的。
配置 SAP-HANA EML 库
既然我们已成功安装 SAP-HANA EML 库,现在是时候创建我们项目的租户数据库(例如“SP500
”)和一个适当的用户,以便能够使用 SAP-HANA EML 库了。这通常通过使用以下 SQL 脚本来完成:
create_db.sql
CREATE DATABASE SP500 ADD 'scriptserver' SYSTEM USER PASSWORD <MASTER_DB_PASSWORD>;
上面的脚本创建了一个名为 SP500 的新租户数据库,并在创建的新租户中启用了脚本服务器组件。要运行此脚本,我们将从 bash 控制台使用以下命令:
hdbsql -i 90 -d SYSTEMDB -u SYSTEM -p <MASTER_DATABASE_PASSEWORD> -m -I create_db.sql
之后,我们必须创建一个新的租户数据库用户,并授予新创建的用户所有适当的权限,例如:
create_user.sql
CREATE USER SP500 PASSWORD NO FORCE_FIRST_PASSWORD_CHANGE;
ALTER USER SP500 DISABLE PASSWORD LIFETIME;
GRANT AFLPM_CREATOR_ERASER_EXECUTE TO SP500;
GRANT AFL__SYS_AFL_AFLPAL_EXECUTE TO SP500;
GRANT DATA ADMIN TO SP500;
GRANT IMPORT TO SP500;
GRANT EXECUTE on _SYS_REPO.GRANT_ACTIVATED_ROLE TO SP500;
GRANT AFL__SYS_AFL_EML_EXECUTE TO SP500;
GRANT SELECT, UPDATE, DELETE, INSERT ON _SYS_AFL.EML_MODEL_CONFIGURATION TO SP500;
要运行上面的脚本,请执行以下命令:
hdbsql -i 90 -d SP500 -u SYSTEM -p <MASTER_DATABASE_PASSEWORD> -m -I create_user.sql
最后,既然新的租户数据库和新的数据库用户都已成功创建,我们可以使用以下 SQL 脚本来维护新的 SAP-HANA EML 库配置:
SET SCHEMA SP500;
INSERT INTO _SYS_AFL.EML_MODEL_CONFIGURATION VALUES_
('sp500_model' , 'RemoteSource', 'TensorFlow');
CREATE REMOTE SOURCE "TensorFlow" ADAPTER "grpc" CONFIGURATION 'server=localhost;port=8500';
---DROP TABLE UPDATE_CONFIGURATION_PARAMS;
---DROP TABLE UPDATE_CONFIGURATION_RESULT;
---DROP PROCEDURE UPDATE_CONFIGURATION;
CREATE TABLE UPDATE_CONFIGURATION_PARAMS ("Parameter" VARCHAR(100), "Value" VARCHAR(100));
CREATE TABLE UPDATE_CONFIGURATION_RESULT _
("Key" VARCHAR(100), "Value" INTEGER, "Text" VARCHAR(100));
CREATE PROCEDURE UPDATE_CONFIGURATION() AS
BEGIN
DECLARE CURSOR CUR FOR
SELECT VOLUME_ID FROM SYS.M_VOLUMES WHERE SERVICE_NAME = 'indexserver';
FOR CUR_ROW AS CUR DO
EXEC 'CALL _SYS_AFL.EML_CTL_PROC_
(''UpdateModelConfiguration'', UPDATE_CONFIGURATION_PARAMS, UPDATE_CONFIGURATION_RESULT)'
|| ' WITH OVERVIEW WITH HINT(ROUTE_TO(' || :CUR_ROW.VOLUME_ID || '))';
END FOR;
END;
TRUNCATE TABLE UPDATE_CONFIGURATION_RESULT;
CALL UPDATE_CONFIGURATION();
---SELECT * FROM UPDATE_CONFIGURATION_RESULT;
CREATE TABLE CHECK_PARAMS ("Parameter" VARCHAR(100), "Value" VARCHAR(100));
INSERT INTO CHECK_PARAMS VALUES ('Model', '*');
CALL _SYS_AFL.EML_CHECKDESTINATION_PROC(CHECK_PARAMS, ?);
要运行上面的脚本,请执行以下命令:
hdbsql -i 90 -d SP500 -u SP500 -p <SP500_USER_PASSWORD> -m -I eml_setup.sql
运行完这三个脚本后,新的租户数据库、新的数据库用户和 SAP-HANA EML 配置都已成功创建。
安装 Docker 和 TensorFlow 模型服务器 (TMS)
最后一个 SAP-HANA 虚拟服务器配置步骤是安装 TensorFlow 模型服务器 (TMS)。为此,我们必须首先安装 Docker.io 虚拟化容器环境,在执行了上述所有配置步骤后运行以下命令:
sudo su -l hxeadm
sudo zypper addrepo https://download.opensuse.org/repositories/
Virtualization:containers/openSUSE_Leap_15.0/Virtualization:containers.repo
sudo zypper dist-upgrade
sudo zypper install docker
为了能够将 docker 作为服务运行,我们必须在 hxeadm
管理员 bash 控制台中另外使用以下命令:
sudo systemctl start docker
sudo systemctl enable docker
sudo chkconfig docker on
成功安装 Docker.io
后,我们必须从 docker 仓库拉取 TensorFlow/Serving:Latest
容器。为此,我们必须运行以下命令:
sudo docker pull tensorflow/serving:latest
稍后,我们将详细讨论如何运行 TensorFlow 模型服务器以提供特定的 TensorFlow 模型。
使用 Eclipse IDE 和 SAP-HANA Studio 插件连接到 SAP-HANA
既然我们已经配置好 SAP-HANA 服务器以使用外部机器学习 (EML) 库和 TensorFlow 模型服务器,我们就可以从开发机使用 Eclipse IDE 和 SAP-HANA Studio 插件开发工具连接到我们正在运行的 SAP-HANA 服务器实例。为此,我们必须首先在 https://www.eclipse.org/downloads/ 下载 Eclipse IDE,然后安装并运行它。
我们必须确保完成以下安装步骤:
- 在 Eclipse IDE 菜单栏中运行命令 帮助 -> 安装新软件…
- 在软件安装对话框窗口中,添加 URL:https://tools.hana.ondemand.com/2019-03 然后按 **Enter**。
- 选择所有必需的 SAP-HANA 功能,然后点击 **下一步**。
- 在下一个向导页面上,点击 **下一步**。
- 确认 **许可协议** 并选择 **完成** 开始安装。
要连接到正在运行的 SAP-HANA 服务器实例,请执行以下操作:
- 打开 **Eclipse IDE** 应用程序,向下滚动页面并选择 **打开管理员控制台**。
- 在 Eclipse SAP-HANA 管理控制台工具栏中,点击 **连接…** 按钮并选择 **添加系统…** 命令。
在上面的图中显示的对话框中,输入 SAP-HANA 服务器虚拟机的 IP 地址(例如 192.168.0.131),实例号(为 '90
')。同时,选择 **多个容器** 和 **租户数据库**,提供数据库名称(例如,“SP500
”),然后单击 **下一步** 按钮。
在下一个向导页面上,选择 **按数据库用户进行身份验证**,然后输入 **用户名** 和 **密码** 以连接到之前创建的租户数据库 SP500。最后,单击 **完成** 按钮以建立数据库连接。
结论
在本文中,我们讨论了如何基于 SLES 12 SP2 Linux 发行版部署 SAP-HANA 服务器,并提供了有关如何启用执行 SAP-HANA SQL 引擎后端 AI 数据分析所需的所有 SAP-HANA 服务和功能的指南。本教程对于计划在开发机上本地开发任何基于 SAP-HANA 的解决方案的人来说非常有益。然而,整个创建的基于 SAP-HANA 的解决方案可以轻松迁移到云端,只需对配置脚本、Python 代码和数据库本身进行少量更改。
在接下来的系列文章中,我们将讨论如何构建、重新训练和导出基于 TensorFlow AI 人工神经网络的模型,该模型可用于标普 500 指数指标值的预测。
历史
- 2019 年 9 月 8 日:初版发布