执行storm starter时出错

kknvjkwl  于 2021-06-21  发布在  Storm
关注(0)|答案(4)|浏览(447)

我想在本地运行storm starter项目。我遵照以下指示-
https://github.com/apache/storm/tree/master/examples/storm-starter
但是当我尝试执行storm jar命令时

ERROR StatusLogger Invalid URL C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml java.net.MalformedURLException: unknown protocol: c

我认为这与cluster.xml和worker.xml中定义的以下部分有关

<RollingFile name="METRICS"
                 fileName="${sys:storm.log.dir}/metrics.log"
                 filePattern="${sys:storm.log.dir}/metrics.log.%i">

显然文件名应该是

file:///C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml

但当我试图通过设置

<RollingFile name="METRICS"
                     fileName="file:///${sys:storm.log.dir}/metrics.log"
                     filePattern="file:///${sys:storm.log.dir}/metrics.log.%i">

我得到这个错误

ERROR Unable to create file file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log java.io.IOException: The filename, directory name, or volume label syntax is incorrect

如您所见,它完全弄乱了文件路径。
有没有一种方法可以在xml属性中正确呈现“file://”?

lf5gs5x2

lf5gs5x21#

我也遇到了同样的问题,我编辑了storm-config.cmd并将协议添加到url env vars中:

if not %STORM_LOGBACK_CONFIGURATION_DIR% == nil (
    set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_LOGBACK_CONFIGURATION_DIR%\cluster.xml
) 

if not defined STORM_LOGBACK_CONFIGURATION_FILE (
  set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_HOME%\log4j2\cluster.xml
)

我相信您会遇到“无法创建文件”的问题,因为它需要的是路径,而不是url。尝试还原这些更改,看看是否有效。

bfhwhh0e

bfhwhh0e2#

删除\log4j2\worker.xml和\log4j2\cluster.xml中的所有更改。
编辑\bin\storm-config.cmd并修改以下指定条目。

设置storm\u logback\u configuration\u file=%storm\u logback\u configuration\u dir%\cluster.xml

set storm\u logback\u configuration\u file=文件://%storm\u logback\u configuration\u dir%\cluster.xml

设置storm\u logback\u configuration\u file=%storm\u home%\log4j2\cluster.xml

set storm\u logback\u configuration\u file=文件://%storm\u home%\log4j2\cluster.xml
在storm-config.cmd中的logback配置条目上添加file://有助于解决此问题。

nzkunb0c

nzkunb0c3#

根据微软的命名惯例,你应该只在路径上使用反斜杠,但是你有反斜杠和前斜杠。

file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log

还有更多:
注意:windows api中的文件i/o函数将“/”转换为“\”,作为将名称转换为nt样式名称的一部分,但使用“\?\”前缀时除外,详见以下各节。
对于文件i/o,路径字符串的“\?\”前缀告诉windows API禁用所有字符串解析,并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大路径和文件名,则可以超过windows API强制执行的最大路径限制。有关正常最大路径限制的详细信息,请参阅上一节“最大路径长度限制”。

mftmpeh8

mftmpeh84#

同样的问题,兄弟
但是,在这个错误之后:

storm\bin>ERROR StatusLogger Invalid URL D:/stuff/storm/log4j2/cluster.xml java.net.MalformedURLException: unknown protocol: d

如果打开java进程,您将看到,所有这些都可以工作:
截图

相关问题