YARN的App Timeline Server无法启动

在尝试启动YARN的App Timeline Server时遇到'too many open file'错误。解决方案包括:调整系统限制,如通过`ulimit`设置最大打开文件数,并在`/etc/security/limits.conf`中持久化配置;增加`/proc/sys/fs/file-max`的值;确保集群时间同步;如果问题依旧,可以删除App Timeline Server的本地目录和HDFS上的相关文件,然后重启服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看日志,报错:too many open file

(1)设置打开文件的最大数值

# ulimit -a

# ulimit -n 65535

# vim /etc/security/limits.conf

新增内容:

* soft nofile 65535

* hard nofile 65535

(2)

echo 655360 > /proc/sys/fs/file-max

编辑文件/etc/sysctl.conf,插入下行。 

jason315@Tianjuns-MacBook-Pro openmetadata-ui % npm install && npm run build > open-metadata@0.1.0 preinstall > yarn global add node-gyp@10.0.1 ERROR: global is not COMMAND nor fully qualified CLASSNAME. Usage: yarn [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or yarn [OPTIONS] CLASSNAME [CLASSNAME OPTIONS] where CLASSNAME is a user-provided Java class OPTIONS is none or any of: --buildpaths attempt to add class files from build tree --config dir Hadoop config directory --daemon (start|status|stop) operate on a daemon --debug turn on shell script debug mode --help usage information --hostnames list[,of,host,names] hosts to use in worker mode --hosts filename list of hosts to use in worker mode --loglevel level set the log4j level for this command --workers turn on worker mode SUBCOMMAND is one of: Admin Commands: daemonlog get/set the log level for each daemon node prints node report(s) rmadmin admin tools routeradmin router admin tools scmadmin SharedCacheManager admin tools Client Commands: applicationattempt prints applicationattempt(s) report app|application prints application(s) report/kill application/manage long running application classpath prints the class path needed to get the hadoop jar and the required libraries cluster prints cluster information container prints container(s) report envvars display computed Hadoop environment variables fs2cs converts Fair Scheduler configuration to Capacity Scheduler (EXPERIMENTAL) jar <jar> run a jar file logs dump container logs nodeattributes node attributes cli client queue prints queue information schedulerconf Updates scheduler configuration timelinereader run the timeline reader server top view cluster information version print the version Daemon Commands: globalpolicygenerator run the Global Policy Generator nodemanager run a nodemanager on each worker proxyserver run the web app proxy server registrydns run the registry DNS server resourcemanager run the ResourceManager router run the Router daemon sharedcachemanager run the SharedCacheManager daemon timelineserver run the timeline server SUBCOMMAND may print help when invoked w/o parameters or with -h. npm ERR! code 1 npm ERR! path /Users/jason315/working/ideaspace/OpenMetadata npm ERR! command failed npm ERR! command sh -c yarn global add node-gyp@10.0.1 npm ERR! A complete log of this run can be found in: /Users/jason315/.npm/_logs/2025-03-12T09_57_28_626Z-debug-0.log
最新发布
03-13
<think>嗯,用户遇到了一个错误,是在运行`npm install && npm run build`时出现的。首先,我需要仔细看一下错误信息。错误信息里提到`yarn global add node-gyp@10.0.1`失败了,报错是`ERROR: global is not COMMAND nor fully qualified CLASSNAME.`。看起来用户可能在项目的preinstall脚本里使用了yarn的global命令,而这里可能有问题。 首先,Yarn的全局安装命令是否正确?我记得Yarn的global命令在v1和v2(Berry)之间可能有所不同。比如,Yarn 1.x使用`yarn global add`,而Yarn 2.x可能改变了命令结构。但错误提示显示Yarn认为global不是一个有效的命令或类名,这说明可能用户使用的是Hadoop的Yarn,而不是JavaScript的包管理工具Yarn。这点很关键,因为Hadoop Yarn和JavaScript Yarn同名,但功能完全不同。 为什么会这样呢?可能用户的环境中同时安装了Hadoop Yarn和JavaScript Yarn,但系统路径中Hadoop的Yarn被优先调用了。当执行`yarn global add`时,系统实际上调用的是Hadoop的Yarn,导致命令无法识别。 那解决办法应该是确保使用的是正确的Yarn版本。用户需要检查系统中安装的是哪个Yarn。可以通过`which yarn`或者`yarn --version`来确认。如果是Hadoop的Yarn,就需要卸载它或者调整PATH环境变量,让npm使用的Yarn是JavaScript的那个。 另外,项目的preinstall脚本可能需要修改,避免使用`yarn global add`。可能应该直接使用npm来安装全局依赖,或者使用项目本地的node-gyp。例如,将preinstall脚本中的命令改为`npm install -g node-gyp@10.0.1`,或者直接移除这个全局安装步骤,因为node-gyp可能已经作为本地依赖被安装。 还有,用户可能需要检查package.json中的scripts部分,看是否有preinstall脚本调用了错误的Yarn命令。如果有的话,修改成正确的命令,或者考虑是否需要这个全局安装。有时候全局安装会导致版本冲突,尤其是在不同的项目中,所以推荐使用本地依赖。 另外,用户的环境变量可能存在问题。PATH变量中可能Hadoop的路径在npm/node的前面,导致系统先找到Hadoop的yarn命令。调整PATH的顺序,让npm的路径优先,可以解决这个问题。 最后,用户可能应该完全切换到使用npm而不是yarn,特别是如果项目本身使用npm的话。删除yarn.lock文件,确保所有脚本都使用npm命令,这样可以避免混淆。 综上所述,解决步骤应该是:确认Yarn版本是否正确,调整环境变量或卸载Hadoop Yarn,修改preinstall脚本使用npm安装,或者移除全局安装改用本地依赖。</think>该错误是由于错误使用 Hadoop Yarn 替代 JavaScript Yarn 包管理器导致的。以下是具体分析和解决方案: **问题原因分析:** 1. `yarn global add` 命令被错误解析为 Hadoop Yarn 的命令(Hadoop Yarn 是资源管理框架) 2. 系统环境变量 PATH 中 Hadoop Yarn 的路径优先于 JavaScript Yarn 3. package.json 的 preinstall 脚本错误使用了全局安装命令 **解决方案:** 1. 确认 Yarn 版本: ```bash # 检查当前 yarn 路径 which yarn # 检查 yarn 版本 yarn --version ``` 2. 卸载 Hadoop Yarn 或调整环境变量: ```bash # 临时切换环境变量(示例) export PATH="/usr/local/bin:$PATH" # 将 npm/yarn 的路径放在前面 ``` 3. 修改 package.json 的 preinstall 脚本: ```json { "scripts": { "preinstall": "npm install -g node-gyp@10.0.1" } } ``` 4. 或使用本地安装(推荐): ```bash # 删除原有全局安装 npm uninstall -g node-gyp # 改为本地开发依赖 npm install --save-dev node-gyp@10.0.1 ``` **完整修复流程:** ```bash # 确保已安装 JavaScript 的 yarn npm install -g yarn # 清除缓存 rm -rf node_modules rm -rf package-lock.json rm -rf yarn.lock # 使用 npm 替代 yarn npm install npm run build ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值