65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2019 年 9 月 8 日

CPOL

13分钟阅读

viewsIcon

9036

downloadIcon

140

如何正确安装和配置 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 虚拟机的分步指南:

  1. 在 VMware Workstation 中,使用命令 文件 -> 打开… 打开 hxe.ova 容器映像。

  2. 为新虚拟机指定名称(例如 hxeinst)及其位置,例如 D:\VMs\hxeinst,如上图所示,然后单击 **导入** 按钮。

  3. 创建 SAP-HANA 服务器虚拟机后,指定该虚拟机使用的系统内存量和处理器数量。

    强烈建议为 SAP-HANA 服务器虚拟机环境分配 32768 MB 系统内存,并分配 4 个物理 CPU 和 2 个逻辑核心,以提供最佳性能和系统稳定性。

  4. 使用 **虚拟机** -> **电源** -> **启动客户机** 命令启动正在创建的 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.sqlcreate_user.sqleml_setup.sqlhxe_config.sh)提取到开发机上,并使用 FTP 客户端连接将它们上传到服务器的 /usr/sap/HXE/home/ 目录。

此外,我们还需要另外两个文件,即来自 SAP-HANA 下载的 clients_linux_x86_64.tgzeml.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.tgzeml.tgzhxe_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,然后安装并运行它。

我们必须确保完成以下安装步骤:

  1. 在 Eclipse IDE 菜单栏中运行命令 帮助 -> 安装新软件…
  2. 在软件安装对话框窗口中,添加 URL:https://tools.hana.ondemand.com/2019-03 然后按 **Enter**。

  3. 选择所有必需的 SAP-HANA 功能,然后点击 **下一步**。
  4. 在下一个向导页面上,点击 **下一步**。
  5. 确认 **许可协议** 并选择 **完成** 开始安装。

要连接到正在运行的 SAP-HANA 服务器实例,请执行以下操作:

  1. 打开 **Eclipse IDE** 应用程序,向下滚动页面并选择 **打开管理员控制台**。

  2. 在 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 日:初版发布
© . All rights reserved.