まえがき
2018年の年末に EC2 A1インスタンスでApache Hadoopをビルドしてみる という記事を書きました。それからしばらくの間、Apache HadoopコミュニティではARMビルドについて何も音沙汰がなかったのですが、2019年の下期になってから「上記の記事を(翻訳ツールを使って)読んでビルドしてるけど、よくわからないところを教えてくれ」というメールが私宛に何通も届くようになりました。
OpenLabによる貢献
ここ最近では、OpenLab という会社が Apache Hadoop, Apache Spark などのビッグデータ関連のOSSをARMアーキテクチャに対応させようとする取り組みを実施しています。また、OpenLab は HadoopコミュニティでCIを回せるようにApache Software FoundationのビルドインフラにARMアーキテクチャのマシンを寄付しています: https://builds.apache.org/computer/arm-poc/ (Apache Spark向けにも寄付しています: https://amplab.cs.berkeley.edu/jenkins/job/spark-master-test-maven-arm/) 。ありがたいです。
ARM対応の現状
2019/11/13に開催されたApache Hadoop Community Online Storage Syncでの資料によくまとまっています。話は逸れますが、最近はcommunityでZoom meetingを定期的に実施しており、APAC向けの時間帯だと4週間に1回 meeting があります。私も時々出席しています。興味のある方は カレンダー をチェック!
やはり問題がいくつかありますが、それぞれ以下のように対処した結果、ビルドは通るようになっています。
- ProtocolBuffers 2.5.0 がまだARMをサポートしていない
- Hadoopで利用するProtocolBuffersのバージョンが上がったので解決
- protoc-gen-grpc-java 1.15.1 のARM版リリースがない
- (短期) 前回の記事で作成したリポジトリを利用する
- (長期) ARM版リリースの追加: https://github.com/grpc/grpc-java/issues/6364
- (追記) 1.26.0 がリリースされて解決: https://issues.apache.org/jira/browse/YARN-10042
- leveldb-jni 1.8 のARM版リリースがない
- ARMの場合はOpenLabが独自にリリースしているバージョンを利用することで解決
- などなど
ビルドは通ったものの、テストがいくつか落ちるのでその修正が必要です。テストの修正などこれからやるべきことは HADOOP-16723 にまとまっています。パッチ大歓迎。
おわりに
前回お遊びで書いた記事がコミュニティでARM対応を進めるための手助けになっていて、個人的にはすごく嬉しかったです。また、こんな記事でも英語で書いておいたほうがよかったなぁと思います。