Elasticsearch 7.x support for ARM64 (Raspberry Pi 4 B)

Previous versions of Elasticsearch (6.x, etc.) could easily be installed on ARM64 but Elasticsearch 7.x gives an error: "package architecture (amd64) does not match system (armhf)"

Previously, I was able to install packages such as elasticsearch-6.8.1.deb without issue. I have noticed that Elasticsearch 7.x deb packages now have a naming convention that includes amd64 (e.g. "elasticsearch-7.2.0-amd64.deb")

Is there a location where I can grab a deb package that can be installed on ARM64 architectures?

With the recent release of the Raspberry Pi 4 with 4GB of ram, it's now feasible to get an ES cluster working on them for experimenting.

TL;DR: Where is elasticsearch-7.2.0.deb? (not elasticsearch-7.2.0-amd64.deb

Thank you!

Elasticsearch now comes bundled with a JVM, which is platform specific.

How do I download ES 7.x without Java attached so I can upgrade from 6.x to 7.x easily on ARM64 platforms?

Ok -- I got Elasticsearch 7.2 (this will apply to any 7.x) to successfully install and run on Raspberry Pi 4 B.

Assuming you already have ES 6.x running on the Raspberry Pi ARM and have Java already installed, you can do this:

  1. Download the latest ES 7.x deb file. You can force the install using dpkg -i --force-all --ignore-depends=libc6 elasticsearch-7-x-x.deb (The only detrimental thing that comes from this is sticking a binary incompatible Java executable file on the system but that can be removed -- it shouldn't break anything).

  2. If using systemctl, you will need to uncomment JAVA_HOME in /etc/default/elasticsearch and set it to the location of your Java installation. This will override the one that is packaged with elasticsearch (which will be binary incompatible anyway since it is compiled for x86 architecture). If you're not using systemctl and invoking elasticsearch directly, you'll want to set JAVA_HOME in /etc/environment as well. Again, it should point to your Java location (mine was simply /usr/bin/java which is a symlink).

  3. You will need to add "xpack.ml.enabled: false" (without quotes) to the end of your elasticsearch.yml file since Machine Learning X-pack does not currently work on ARM64.

Once you do all of this, it should load without any issues.

3 Likes
1 Like

Thanks! I did find that later and forgot to update. Appreciate the update here.

This is the most helpful post for installing ES 7.2 on RPi 4. I just did myself on my RPi 4 with 4GB. Only think to add is that I had to change permissions to my /etc/elasticsearch folder via chmod g+x as it seemed that the folder and files within were not writeable. Jason, did you also install Kibana on the RPi 4? Any procedure?

Hi Jason, I've also managed to install ES on a RPi 4 as you mentioned, but then when I try to do an apt-get update or install other packages I'm prompted for unmet dependencies. When I run apt --fix-broken install it says that elasticsearch:amd64 will be removed, which obviously I don't want. How to circumvent that?

You will need to open the file /var/lib/dpkg/status and do a search for elasticsearch.

This should bring you to a section that looks like this:

Package: elasticsearch
Status: install ok half-configured
Priority: optional
Section: web
Installed-Size: 196305
Maintainer: Elasticsearch Team <info@elastic.co>
Architecture: amd64
Source: elasticsearch
Version: 7.2.0
Depends: bash (>= 4.1), lsb-base (>= 4), adduser, coreutils (>= 8.4)

What you want to do here is remove the dependency from the "Depends" line (last line). In this example, I already removed it but you should see libc6 or c6. Just remove only that one and keep the others there. Then save the file.

When you use apt-get, it may complain about the previous install, but it won't force you to remove it. This isn't the most glamorous solution right now but it won't break anything. There's most likely a simpler method but this works great for the time being.

The other option is this: https://raspberrypi.stackexchange.com/questions/12573/which-is-the-highest-version-of-libc6-available-for-raspbian

You can add an unstable repo to install libc6. I don't know what the effects are here but it shouldn't break anything. If you go that route, you may have to do a reinstall of elasticsearch. Just back up your /var/lib/elasticsearch/data directory and config files and reinstall (I don't think a reinstall will touch the config files unless you did a purge).

1 Like

That's awesome, thanks for the instructions! I have it up and running with 7.3! Problem now is Kibana, cannot get it to install in a similar way, any thoughts?

Hi there,
I've been reading through this thread with much interest. I've tried doing a clean install of ES 7 on a new Pi 4, but can't get this to work.

Does anyone have an idiots guide to doing a clean install of ES 7 on Pi 4?

Thank you!

3 Likes

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.