ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

10个使用openYuanrong最容易踩的坑:安装、调用与调试FAQ大全

10个使用openYuanrong最容易踩的坑:安装、调用与调试FAQ大全 10个使用openYuanrong最容易踩的坑安装、调用与调试FAQ大全【免费下载链接】yuanrongopenYuanrong runtimeopenYuanrong 多语言运行时提供函数分布式编程支持 Python、Java、C 语言实现类单机编程高性能分布式运行。项目地址: https://gitcode.com/openeuler/yuanrongopenYuanrong 是一个 Serverless 分布式计算引擎提供 Python、Java、C 多语言函数运行时让你用类单机的编程体验写出高性能的分布式程序。本文整理了新手在 openYuanrong 安装、集群部署、函数调用和日志调试中最容易踩的 10 个坑并给出对应的快速解决方法帮你少走弯路。一、安装阶段3 个高频坑坑 1装好了却报ModuleNotFoundError: No module named yr现象pip 安装成功但运行 Python 程序时找不到yr模块。原因机器上存在多个 Python 版本程序用的是另一个解释器而 openYuanrong 装在了别的环境里。解决方法用安装 openYuanrong 时对应的 Python 版本运行程序可用python3.9 -c import yr; print(yr.__path__[0])验证 SDK 是否可用。参考 安装 FAQ。坑 2whl 包的 Python 版本cp39/cp310/cp311没对上现象pip 安装时报依赖冲突或No matching distribution。原因openYuanrong 要求 Python 版本为3.9, 3.11且运行时包文件名中的cp39/cp310/cp311必须与你的 Python 小版本一一对应如 Python 3.10 要选cp310-cp310的 whl。解决方法确认架构x86_64 / aarch64和 Python 版本后从官方发布渠道选择对应 whl 包安装详见 安装指南。另外按需安装可选组件C 开发装 cpp_sdk 包开发函数服务装 faas 包用 Dashboard 装 dashboard 包。坑 3Java / C 环境不满足编译要求现象Java 或 C 示例编译、运行失败。原因语言环境版本不达标——Java 需要8/17/21C 需要gcc10.3.0 且 stdc14。解决方法升级工具链后再编译C SDK 头文件与库位于yr包路径下的cpp/include和cpp/lib目录。示例代码可参考 C 示例目录 和 Java 示例目录。二、部署阶段3 个集群坑坑 4防火墙拦截从节点加入不了集群现象yr status查看集群状态从节点长时间未加入。原因主机开启了防火墙openYuanrong 组件端口网络不通。解决方法非生产环境可临时关闭防火墙验证systemctl stop firewalld生产环境请逐一放行 openYuanrong 使用的端口。部署拓扑可参考下图坑 5主从节点版本不一致现象集群行为异常或从节点无法加入。原因主节点与从节点安装的 openYuanrong 版本不同。解决方法在每台节点执行pip show yr核对版本确保所有节点重装为同一版本。坑 6环境里有代理etcd 连接超时现象yr status报错Connect to etcd server failed. context deadline exceeded.原因当前环境配置了http_proxy/https_proxy代理干扰了 etcd 的本地通信。解决方法部署与集群内部通信场景下关闭代理配置。生产集群也支持 K8s 方式部署可参考 K8s 部署文档三、函数调用阶段3 个编程坑坑 7忘了yr.init()/yr.finalize()生命周期现象首次调用函数连接失败或进程退出时资源未清理。原因openYuanrong SDK 要求Init 一次——程序开始时调用yr.init()结束时调用yr.finalize()。另外注意在非集群节点上运行且未配置集群地址时SDK 会自动拉起一个临时环境进程退出时销毁调试时会让程序明显变慢。解决方法按init → invoke → get → finalize的标准顺序写程序完整示例见 入门文档。坑 8把invoke()的返回值直接当结果用现象打印结果是ObjectRef而不是函数返回值。原因invoke()是异步调用返回的是数据对象的一个引用ObjectRef不是值本身。解决方法用yr.get(results_ref)阻塞获取真实结果。以 Python 为例ref say_hello.invoke(yuanrong) # 返回引用 print(yr.get(ref)) # 阻塞取值hello, yuanrong这是新手最常犯的调用坑Java/C 同理YR.get()/YR::Get()。坑 9代理环境变量不生效yr.init连接集群失败现象Driver 里配置了http_proxy/https_proxy但yr.init仍报failed to connect to all addresses。原因openYuanrong 默认不生效http/https 代理配置。解决方法额外设置YR_ENABLE_HTTP_PROXYtrue环境变量才会启用代理代理地址支持user:passhost:port形式。详见 多语言函数编程 FAQ。四、调试排查阶段1 个必备技能 1 个进阶技巧坑 10出问题了不知道去哪找日志现象函数调用超时、实例起不来却找不到报错信息。原因没掌握 openYuanrong 的日志与可观测性布局。解决方法记住这几个关键位置——部署日志/tmp/yr_sessions/latest/deploy_std.log定位部署问题先看它函数日志log 目录下的{node_id}-user_func_std.log标准输出合并文件组件日志scheduler、frontend、agent 等各有独立日志实例未正常拉起时重点看job-{job_id}-runtime-{runtime_id}.log排查函数包路径等配置错误。详细日志目录说明见 日志文档。进阶技巧主节点部署时加上mode.master.dashboardtrue等参数可开启可视化 Dashboard用集群总览、作业详情、日志收集等页面快速定位问题如果调用链路较长还可以结合 Trace 链路追踪做性能调优 10 个坑速查表#阶段坑一句话解法1安装找不到yr模块用安装 SDK 的同一 Python 版本运行2安装whl 版本/架构不匹配对齐 cp39-311、x86_64/aarch643安装语言环境不达标Java 8/17/21gcc≥10.34部署从节点不加入集群放行防火墙端口5部署主从版本不一致各节点重装相同版本6部署etcd 连接超时关闭本地代理配置7调用生命周期缺失牢记 init → finalize8调用把引用当返回值用yr.get()取值9调用代理不生效设置YR_ENABLE_HTTP_PROXYtrue10调试找不到日志看/tmp/yr_sessions/latest/掌握以上 10 个坑的规避方法openYuanrong 的安装、调用与调试就能顺畅 90% 以上。更多细节可查阅 常见问题 FAQ 与 入门指南。【免费下载链接】yuanrongopenYuanrong runtimeopenYuanrong 多语言运行时提供函数分布式编程支持 Python、Java、C 语言实现类单机编程高性能分布式运行。项目地址: https://gitcode.com/openeuler/yuanrong创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表