尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为SAP HANA行业解决方案实战:从内存计算到部署调优的落地指南

华为SAP HANA行业解决方案实战:从内存计算到部署调优的落地指南 简介这份PPT围绕华为与SAP联合打造的企业级HANA内存计算解决方案展开面向企业架构师、IT决策者及零售行业数字化转型人员。内容包括经SAP认证的RH2288H/RH2488H/KunLun服务器选型、DA200压缩卡与ES3000 NVMe加速细节覆盖FusionCloud ECS for HANA云化部署及中小企业商务套件、大型企业ERP/CRM/HR/BW等场景。全渠道零售案例是亮点360度会员视图、购物篮分析、智能渠道选择等场景均有呈现。配套案例扎实——欧洲英格列斯百货基于KunLun HANA实现分析性能千倍提升良品铺子借助全渠道ICT方案在双十一实现销售额三倍增长。资源为单个PPTX演示文稿约3.14MB已有186人学习适合方案宣讲、客户沟通或内部培训。1. 华为SAP HANA行业解决方案这一页PPT真正要交付的是一套可运行的内存计算底座我们经常在项目打单和售前材料里看到“华为SAP HANA行业解决方案.pptx”这样的文件很多人把它当作一张配置清单来读服务器几台、存储多少T、网络怎么组。但真正落过地的人清楚这一页背后是一个完整的内存计算底座它要回答的问题不只是“买什么”而是“买了之后怎么装、怎么调、怎么不翻车”。SAP HANA和传统数据库最大的不同在于它把主数据全部压在内存里跑硬件设计、操作系统参数、存储延迟、网络MTU任何一环掉链子业务侧就会直接感受到卡顿甚至宕机。这篇笔记按我实际交付华为平台时走的路子展开先讲选型逻辑再给最小可复现的安装流程接着落到参数调优和排障最后聊验证和取舍适合做交付的工程师和准备选型的企业技术团队参考。2. 方案设计背后的硬逻辑HANA的算力胃口与华为硬件的选型定式2.1 SAP HANA为什么比普通数据库难伺候内存计算与列式存储的本质传统数据库读磁盘、走索引瓶颈通常卡在IO上SAP HANA走的是完全相反的路线数据加载时按列压缩进内存查询时直接用CPU扫描内存里的列式结构不再频繁回表。这个设计让它在分析型场景里快得离谱但也带来了一个硬约束——所有业务数据、临时结果集、中间表都得在内存里腾挪内存一旦不够HANA不是慢一点是直接拒绝服务或触发OOM。所以规划华为SAP HANA行业解决方案时先把内存这件事想清楚再谈CPU和存储。实际操作里我一般按“业务数据量 × 1.5 到 2 倍”来估HANA所需的内存而不是只看导出的数据文件大小。原因是列式存储虽然在磁盘上比行式存储更省空间但加载进内存后会有膨胀系数运行时还会产生各种临时对象和结果集缓存。另一个容易忽略的是SAP HANA的多租户容器机制多个租户库共享同一个索引服务进程内存分配是动态的内存规划不足时某个租户的查询会把整个实例拖垮这是行业方案交付中最常见的预算失误之一。CPU方面也一样HANA对单核主频和多核扩展同时敏感主频太低复杂报表跑不起来核数不够并发一高就排队。理解了这个底层胃口再看华为硬件选型就不会只看容量不看行为。2.2 华为硬件在HANA方案里的定位计算、存储、网络的分工华为做SAP HANA行业解决方案的时候硬件层面走的是一套固定的分工逻辑。计算节点承担HANA的索引服务和编译任务优先选主频高、内存通道宽的x86服务器一般落地用2U四路机型内存插满后单机能到3TB或更高存储节点负责持久化数据卷和日志卷行业方案里普遍配合华为OceanStor系列全闪存储交付时把数据卷、日志卷、共享卷分开规划网络节点则是连接计算和存储的血管常见做法是客户端业务走10GEHANA内部节点间数据交换走25GE甚至100GE同时把存储链路单独划VLAN避免业务流量冲击IO延迟。这套分工不是拍脑袋定的而是顺着SAP HANA的物理架构推出来的。某个行业项目里如果核心业务是财务合并报表那么计算节点就要偏CPU主频如果做的是大数据量的库存分析那么内存容量和存储带宽会变成主要矛盾。华为在方案里强调“行业”两个字意思就是同一套硬件框架要根据行业负载做裁剪而不是所有项目都抄同一张配置单。比如零售行业的日结批处理夜间跑批时CPU持续处于高负载白天查询又需要低延迟这种特性决定了选型时要预留CPU余量同时把日终批处理的窗口时间算进SLA否则就会出现在客户现场被业务部门追问批处理为什么超时的情况。2.3 硬件配置对照表从行业场景反推机器规格这里给一个我在需求澄清阶段常用的硬件参数对照表它不是华为官方配置单而是交付时反复验证过的边界值适合拿来当沟通模板。资源维度常见配置边界条件与说明CPU单节点 2 路或 4 路 x86主频 2.6GHz 以上低于 2.4GHz 时复杂关联查询明显变慢核数多的机型要注意 NUMA 分组内存数据量的 1.5~2 倍单节点建议不低于 512GB内存过小导致 HANA 把未压缩数据放到磁盘临时文件性能裂化数据卷全闪存储容量不小于内存规划容量数据卷必须和日志卷分离否则日志写放大影响查询延迟日志卷全闪存储容量为数据卷的 15%~20%日志卷写满后HANA 会自动触发保存点甚至停库网络客户端 10GE内部互联 25GE/100GEMTU 9000不开启巨型帧时跨节点大数据量交换会占满CPU中断操作系统SLES for SAP Applications 15 系列其他发行版需要自己核对内核参数维护成本明显增高这张表的重点在于“边界条件”这一列。很多项目翻车恰恰是因为只看了容量没看到行为约束。例如日志卷写满这个坑表面上是磁盘空间问题实际是日志备份配置失效导致的连锁反应后面第五章会专门展开讲。硬件选型这件事在华为SAP HANA行业解决方案里从来不是堆参数而是把业务模型翻译成资源模型再翻译成具体配置文档里的每一行字都要能在后续部署时找到对应落点。3. 把方案落到能跑在华为服务器上安装SAP HANA的最小流程3.1 磁盘与操作系统准备XFS、挂载、内核参数拿到华为服务器后第一步不是急着装HANA而是先把操作系统和文件系统铺好。SAP官方对HANA的推荐文件系统是XFS因为它对大文件和高并发IO的支撑更稳定ext4虽然能用但在数据卷和日志卷的延迟表现上容易出边界问题。我一般的做法是在RAID配置完成后用独立LUN承载三个挂载点/hana/data、/hana/log、/usr/sap其中/data和/log绝对不要落在同一块磁盘上否则日志写入与数据刷盘互相抢IO延迟会肉眼可见地抖动。挂载和格式化可以用下面这段bash命令来操作注意生产环境里需要先确认磁盘设备名不要照抄设备号# 格式化数据卷、日志卷、共享卷为 XFS mkfs.xfs /dev/sdb mkfs.xfs /dev/sdc mkfs.xfs /dev/sdd # 创建挂载目录 mkdir -p /hana/data /hana/log /hana/shared /usr/sap # 临时挂载验证文件系统能正常识别 mount /dev/sdb /hana/data mount /dev/sdc /hana/log mount /dev/sdd /hana/shared mount /dev/sde /usr/sap # 确认挂载信息 df -hT | grep hana格式化之前务必要和存储工程师确认LUN映射关系特别是使用了华为存储多路径软件的场景同一个LUN在系统里可能出现多个设备名要按 multipath 聚合后的名称来格式化。挂载完成后接着配置/etc/fstab实现开机自动挂载并加上nofail参数避免异常情况下启动阻塞。然后调整内核参数下面是HANA部署中必需的几个sysctl设置配好后直接落到/etc/sysctl.d/99-hana.conf# HANA 对 Linux 内核参数的最低要求 cat /etc/sysctl.d/99-hana.conf EOF vm.swappiness10 vm.max_map_count4000000 vm.overcommit_memory0 vm.dirty_ratio15 vm.dirty_background_ratio3 EOF # 使参数生效 sysctl -p /etc/sysctl.d/99-hana.conf内核参数里最常被忽略的是vm.max_map_countHANA进程的内存映射数量非常大默认值65530完全不够至少要提到400万。vm.swappiness10是为了避免系统把HANA的匿名内存页换到swap虽然HANA自己内部也有内存管理但操作系统层的换页会造成秒级延迟尖刺。vm.overcommit_memory0是保持内核启发式分配策略不要改成1否则HANA在申请大块虚拟内存时容易提前被系统拒绝。这些参数配完之后再用reboot验证一次开机后参数是否还在避免出现过调试好的环境重启后参数丢失的低级问题。3.2 静默安装HANAhdblcm的套路与参数陷阱操作系统就绪后进入SAP HANA的安装环节。常见的安装方式有两种图形界面交互安装和命令行静默安装。生产环境里我推荐静默安装因为可重复、可审计、不容易出现人工点错选项的问题。华为方案里的HANA安装介质一般是SAP官方提供的installer包挂载ISO后执行hdblcm命令。安装前需要准备好几个信息SAP HANA的SID系统标识符、实例编号、系统管理员密码、数据卷和日志卷路径。下面是一段典型的静默安装命令实际执行时需要在安装介质目录下操作# 进入安装介质目录后执行 hdblcm ./hdblcm --actioninstall --sap_sidHDB --number00 \ --root_userroot \ --system_user_passwordChangeMe123! \ --systemdb_passwordChangeMe123! \ --install_hana_clientTrue \ --install_hana_studioFalse \ --datapath/hana/data/HDB \ --logpath/hana/log/HDB \ --path/hana/shared \ --componentsserver,client \ --silent这条命令里每个参数都有讲究。--sap_sidHDB指定系统标识符SID只能三位大写字母且不能以数字开头--number00是实例编号会影响HANA的进程端口和运维习惯默认00即可但如果同一台机器跑多套HANA第二套就要换成01或02避免冲突--datapath和--logpath必须指向之前准备好的XFS挂载点不能指到根目录或/usr/sap下--system_user_password设置的是系统管理员密码HANA要求至少8位且包含大小写和数字否则安装程序直接拒绝。--silent参数表示静默模式安装过程不再交互询问日志输出到默认目录方便后续排查。执行过程中最常见的一个坑是安装介质路径不对或者安装包没有执行权限。hdblcm对当前用户权限要求很高官方建议用root执行同时在执行前先chmod x hdblcm确保二进制可执行。安装时长取决于服务器性能和内存大小512GB内存的机器一般需要20到40分钟期间不要重启机器或中断SSH会话否则容易出现半安装状态之后补救比重新装还麻烦。3.3 安装完必做的三分钟验证安装完成不等于能用。我每次验收时都会花三分钟做一轮快速检查确认HANA进程、端口和版本都处于正常状态。第一条命令是切换到家目录底下的HANA管理用户然后连接系统数据库执行SQL# 切换到 HANA 管理用户 su - hdbadm # 执行系统查询 hdbsql -u system -p ChangeMe123! -d SYSTEMDB \ SELECT DATABASE_NAME, VERSION, STARTED_AT FROM M_DATABASE # 查看当前活动会话数量确认应用能正常连接 hdbsql -u system -p ChangeMe123! -d SYSTEMDB \ SELECT COUNT(*) FROM M_CONNECTIONS如果能返回一行数据库名称和版本信息说明HANA服务进程已经正常起来。接着再检查进程监听状态用netstat -lntp确认3xx41端口如30041处于监听状态其中3开头的端口号由实例编号决定00实例监听30015到30041这些端口。顺带看一下HANA的保存点进程有没有报错通过hdblcm --check或直接查看/usr/sap/HDB/HDB00/trace目录下的错误日志如果发现ERROR级别且和内存或存储相关的信息先停下来处理再继续下一步调优不要带着隐患往业务交付走。4. 让HANA在华为平台上跑稳内存、网络与备份的调优实践4.1 内存分配与NUMA场景不是物理内存越大越好HANA安装成功后默认的内存配置是“有多少用多少”但真实业务里必须主动设置内存水位线否则遇到突发查询或批处理叠加时内存会被撑爆操作系统触发OOMHANA进程直接被杀掉。SAP HANA的内存管理集中在global.ini配置文件中通过HANA SQL可以在线修改并重新加载不需要重启实例这是HANA比传统数据库更友好的地方。常见的调优操作是设置全局内存分配上限和各个服务的内存占比。下面这段SQL把实例总内存限制设置为物理内存的90%同时给索引服务器设置单独的大小避免租户库之间互相抢占-- 修改 global.ini 中的内存管理参数 ALTER SYSTEM ALTER CONFIGURATION (global.ini, SYSTEM) SET (memorymanager, global_allocation_limit) 90% WITH RECONFIGURE; -- 设置索引服务器的内存上限 ALTER SYSTEM ALTER CONFIGURATION (global.ini, SYSTEM) SET (memorymanager, allocation_limit_for_max_connection) 2000 WITH RECONFIGURE;global_allocation_limit90%的意思是HANA进程总内存不超过物理内存的90%留出10%给操作系统、HANA Studio客户端和运维工具等。如果不设置这个值HANA会默认占据几乎全部物理内存一旦系统层面做补丁升级或备份脚本占用内存就可能出现OOM。另一个必调点是NUMA绑定。华为四路服务器动辄上百核CPU和内存被分成多个NUMA节点HANA如果在跨节点分配内存延迟会高出一倍以上。在global.ini里可以设置[memorymanager]下的affinity high来启用进程绑定也可以在操作系统层面用numactl启动HANA进程不过我建议优先使用HANA自身的亲和性配置简单且不会在系统重启后丢失。4.2 网络华为交换机怎么配才能不拖后腿HANA对网络延迟的敏感度往往被低估尤其是在华为存储使用NVMe over Fabric这类协议时网络抖动会直接变成数据库查询延迟。行业交付里常见的是用华为三层交换机做核心组网配置本身不难但有几个点容易漏MTU、VLAN隔离、流量调度。默认以太网MTU是1500字节HANA节点之间交换大结果集时会被分片CPU中断处理量非常大。我一般会把HANA内部互联接口的MTU改为9000开启巨型帧。以华为CE系列交换机为例接口下的配置大致是这样# 进入系统视图 system-view # 进入 HANA 内部互联接口 interface 10GE1/0/1 description HANA-Internal-Heartbeat undo negotiation auto mtu 9000 undo shutdown quit # 将 HANA 存储链路和业务链路划分到不同 VLAN vlan batch 100 200 interface 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 100 200配置MTU 9000后服务器网卡也要同步改为9000否则两端协商不一致直接断连。用ping -M do -s 8972可以测试巨型帧链路的连通性MTU 9000的IP包最大payload是8972字节ping通说明链路没问题。存储链路的VLAN隔离是为了防止业务广播报文干扰存储协议VLAN划分越干净延迟尖刺越少。这里还要注意交换机端口协商模式HANA服务器网卡如果是25GE交换机和网卡之间必须对上速率否则降级到10GE后内部数据交换延迟翻倍。4.3 备份与高可用给行业项目一个可交代的恢复计划行业客户最关心的不是HANA跑得快而是数据丢了能不能找回。HANA的备份机制分为数据备份和日志备份数据备份定期把内存里的数据落盘日志备份连续记录增量交易。交付时我至少会做三层备份策略本地全量备份、本地日志连续备份、远程存储或异机备份防止机房故障导致全盘皆输。备份路径和策略可以直接通过SQL配置。下面这段配置将备份路径指向华为存储挂载的目录并打开日志备份开关-- 设置数据备份路径 ALTER SYSTEM ALTER CONFIGURATION (global.ini, SYSTEM) SET (persistence, basepath_databackup) /backup/data WITH RECONFIGURE; -- 设置日志备份路径 ALTER SYSTEM ALTER CONFIGURATION (global.ini, SYSTEM) SET (persistence, basepath_logbackup) /backup/log WITH RECONFIGURE; -- 开启自动日志备份 ALTER SYSTEM ALTER CONFIGURATION (global.ini, SYSTEM) SET (persistence, enable_auto_log_backup) true WITH RECONFIGURE;配置完成后手动做一次全量数据备份作为基线用下面的命令-- 执行文件级别全量备份 BACKUP DATA USING FILE (/backup/data/HDB_FULL_20240101);备份同时要盯住两个点一是日志备份路径所在磁盘空间要预留足够日志备份文件增长很快满盘后HANA会暂停所有事务写入这在生产环境里是重大事故二是数据备份必须保留至少两个完整周期防止备份文件本身损坏后没有后悔药。行业方案里如果客户要求RPO接近零还要考虑配置HANA系统复制HSR把数据实时同步到备节点这个属于更高阶的高可用设计硬件规划时要预留备节点的CPU和内存资源否则切换过去也撑不住业务负载。5. 华为SAP HANA实施避坑指南五个翻车点与排查路径5.1 hdblcm报错目标路径存在但非空安装进入死胡同现象执行hdblcm安装时进度走到15%左右突然中止日志提示/hana/data/HDB exists but is not empty反复删除目录重试仍然报错。原因常见于之前尝试过安装但失败残留了HDB子目录以及部分配置文件或者挂载了旧磁盘文件系统里保留了隐藏文件。只删顶层目录不够HANA安装程序要求目标路径下不能有任何内容。解决先卸载数据卷和日志卷重新格式化对应LUN再挂载回原路径。格式化的命令是mkfs.xfs -f /dev/sdb注意数据卷上的旧业务数据会全部丢失操作前必须确认没有未备份的数据。重新挂载后检查一下目录为空再继续安装。这里要提醒的是不要用rm -rf /hana/data/*这种投机取巧的办法因为HANA检查的可能是文件系统层级的元数据残留的lostfound目录也会让校验失败。5.2 内存占用高企后触发OOMHANA进程被系统杀掉现象业务高峰期HANA进程突然消失dmesg日志出现Out of memory: Kill process信息系统重启后HANA自动拉起但所有连接被断开。原因两个层面。一是操作系统vm.overcommit_memory和vm.swappiness参数没有按要求配置导致内核过度承诺后无法兑现内存二是HANA的global_allocation_limit没有设置把物理内存吃满了系统没有余量响应SSH和监控agent的申请最终内核选了占用最大的HANA进程开刀。解决按照前面第3章的sysctl配置把所有参数改到位同时在global.ini里设置global_allocation_limit90%。如果机器内存规划偏紧可以考虑关闭不必要的图形化监控组件。验证是否生效可以通过free -g观察available字段是否一直保有10%左右的余量连续观察一周没有再出现OOM才算真正排掉这个雷。5.3 备份任务莫名其妙失败日志备份目录权限不对现象定时备份任务执行一段时间后突然连续失败错误信息为backup could not be completed登录系统发现/backup/log目录还有大量空间手动执行BACKUP DATA却能成功。原因HANA备份进程以hdbadm用户运行如果/backup/log目录挂载时使用了root权限或挂载选项没放开写权限HANA用户无法在备份目录下创建子目录或写入文件。备份成功后日志备份需要的系统表更新也会失败导致后续备份任务被HANA置为失败状态。解决检查备份目录的所有者和权限执行chown -R hdbadm:sapsys /backup/log并确认挂载选项里没有ro。更稳妥的做法是把备份目录纳入/etc/fstab挂载时指定rw,nosuid,nodev避免系统权限默认收紧。改完权限后手动执行一次日志备份确认恢复再等待下一轮定时任务自动通过。5.4 存储延迟忽高忽低数据卷和日志卷被放在了同一批磁阵现象HANA监控面板显示存储延迟在20毫秒和200毫秒之间来回跳动业务查询时快时慢检索M_VOLUME_SERVICE_STATISTICS能看到LOG卷的AVG_READ_TIME异常升高。原因交付实施时为了节省存储资源把数据卷和日志卷都挂在了同一台华为存储设备的同一组磁盘上HANA的数据刷盘和日志追加是完全不同的IO模式两者竞争盘片带宽和缓存延迟抖动随之而来。解决在存储侧重新划分LUN至少把日志卷迁移到独立的磁盘组或独立的存储池中。华为存储上可以创建一个高性能资源池给日志卷专用并把数据卷放在另一个池同时确认多路径负载均衡策略为轮询模式。迁移完成后执行一次保存点操作强制数据落盘再观察延迟曲线。延迟稳定在个位数毫秒才算达标这个标准对OLTP型行业业务尤其重要。5.5 “用鲲鹏跑SAP HANA”的诱惑与边界认证优先还是性能优先现象部分团队为了体现国产化能力试图把SAP HANA直接部署在华为鲲鹏服务器上结果安装后SAP官方补丁和部分组件无法正常使用SAP支持工单也被退回。原因SAP HANA对硬件架构有严格认证官方支持列表里对x86平台的覆盖最完整ARM架构虽然性能不错但HANA的某些服务组件、故障诊断工具和合作伙伴生态仍然以x86为基准。华为SAP HANA行业解决方案在很长一段时间里主推的是基于Intel平台的FusionServer系列鲲鹏机型的HANA认证要看具体的SAP版本和硬件型号白名单不能拿“主流服务器”直接套。解决选型阶段先和华为以及SAP两边确认硬件型号是否在认证矩阵里没认证的设备就算能装上HANA后续出问题也得不到官方支持。追求国产化替代的平台可以考虑先把HANA跑在x86的华为服务器上把鲲鹏用于周边的应用服务器、文件服务等业务模块既满足了自主可控要求又不影响核心数据库的稳定性。6. 上线前怎么验证这套华为SAP HANA方案是否值得投入方案交付到最后我习惯花四小时做一轮“承载压力验证”而不是直接拿业务上去跑。第一步先运行HANA自带的检查工具看配置是否符合最佳实践命令行执行cd /usr/sap/HDB/HDB00/exe ./hdbcheck或者用SAP HANA Cockpit查看告警面板重点盯内存分配、备份配置、复制状态三项。第二步用hdbsql跑几条典型查询观察SQL执行计划和缓存命中率判断HANA是否真正吃到了内存计算的红利。更实际的验证方法是模拟业务高峰时段的并发行为写一个简单的Python测试脚本同时开几十个连接执行批量查询观察查询响应时间是否随并发线性劣化。如果并发数翻倍后延迟没有成倍增长说明内存带宽和CPU调度还有余量如果延迟直接跳变一个数量级那么要考虑是SQL本身的问题还是内存参数设置过于保守。这个环节里华为的RAID和存储监控工具也能帮上忙从中看到底层IO没有成为瓶颈就能放心把方案交到运维团队手里。每次做完一个行业方案我都会把这次调过哪些参数、踩过哪个坑、客户业务负载模型长什么样记到团队的交付手册里。华为SAP HANA行业解决方案的成功率靠的不是PPT里的承诺而是选型时的克制、部署时的规范和排障时的耐心这些经验比任何一份配置单都值钱。希望这篇笔记能给你在方案选型和落地时提供一点参考也希望你的项目第一轮部署就顺顺利利少走我跟过的弯路。本文还有配套的精品资源点击获取
返回列表