为了开发一个应用程序,我需要在苹果硅Mac上运行Elasticsearch 6。
我试着用Docker运行它。阅读Docker Desktop for Apple silicon,我安装了Rosetta2:
softwareupdate --install-rosetta
并添加了--platform linux/amd64
命令行选项。
运行:
docker run -d --platform linux/amd64 --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.18
我获得了有关AVX instruction set的警告:
OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=0
所以我添加了命令行选项:-e "ES_JAVA_OPTS=-XX:UseAVX=0"
,但我仍然得到:
[2021-08-22T00:06:20,727][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: org.elasticsearch.bootstrap.BootstrapException: java.io.IOException: Cannot run program "/usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller": error=0, Failed to exec spawn helper: pid: 131, exit value: 1
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.18.jar:6.8.18]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.18.jar:6.8.18]
Caused by: org.elasticsearch.bootstrap.BootstrapException: java.io.IOException: Cannot run program "/usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller": error=0, Failed to exec spawn helper: pid: 131, exit value: 1
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.18.jar:6.8.18]
... 6 more
Caused by: java.io.IOException: Cannot run program "/usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller": error=0, Failed to exec spawn helper: pid: 131, exit value: 1
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1142) ~[?:?]
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) ~[?:?]
at org.elasticsearch.bootstrap.Spawner.spawnNativeController(Spawner.java:118) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Spawner.spawnNativeControllers(Spawner.java:86) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:165) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.18.jar:6.8.18]
... 6 more
Caused by: java.io.IOException: error=0, Failed to exec spawn helper: pid: 131, exit value: 1
at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
at java.lang.ProcessImpl.<init>(ProcessImpl.java:313) ~[?:?]
at java.lang.ProcessImpl.start(ProcessImpl.java:244) ~[?:?]
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1109) ~[?:?]
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) ~[?:?]
at org.elasticsearch.bootstrap.Spawner.spawnNativeController(Spawner.java:118) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Spawner.spawnNativeControllers(Spawner.java:86) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:165) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.18.jar:6.8.18]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.18.jar:6.8.18]
... 6 more
然后我看一下Machine learning settings in Elasticsearchedit,它说:
机器学习使用SSE4.2指令,因此它仅适用于CPU支持SSE4.2的计算机。如果您在较旧的硬件上运行Elasticsearch,则必须禁用机器学习(通过将xpack.ml.enabled设置为false)。
所以我添加了命令行选项:-e"xpack.ml.enabled=false"
,Elasticsearch现在启动,但日志中没有显示任何内容,也不响应请求。
我的问题是:如何在苹果硅Mac上运行Elasticsearch 6?
4条答案
按热度按时间holgip5t1#
我刚刚遇到了这个问题,我发现你可以使用curl指令here运行elasticsearch,但是想使用docker。
如果要使用my image,请继续:
为了制作这个图像,我将文件组织成这样:
停靠文件:
elasticsearch.yml:
命令:
构建版本:
docker build -f Dockerfile-elastic -t elastic .
运行:
docker run -p 9200:9200 -p 9300:9300 elastic
z4bn682m2#
这通常不受支持,但there is a report,https://hub.docker.com/r/webhippie/elasticsearch/可能会工作。
如果你还没有一个很好的理由升级,也许在M1上运行它可能会有帮助?原生支持(没有Rosetta)has been added in 7.12。
qojgxg4l3#
发现此github问题#81383
添加
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
修复了7.16.1
的崩溃。希望能有所帮助👍
z6psavjg4#
我与这个问题斗争了很长一段时间,以下是我的发现:
docker.elastic.co/webhippie/elasticsearch:7.10.2-arm64
webhippie/elasticsearch:6.4
我希望这些信息对某人有用。