タイトル通りM1macでHadoop3.3.4を動かそうと頑張ったらやっと動いたので記録.
Markdown書いたことないので調べながら書きます.自分用なので読みにくいと思います.
環境
- MacBook Pro(2021)
- macOSMonetery 12.6
- Apple M1 pro
最初はこのページやこのページを見ながら全く同じようにやってみたけど,start-all.sh
を入力するとcannot set priority of...
が出てきてうまくいかない.
やったこと
- ***-site.xmlファイルをとにかくいじる.
stackoverflowやqiitaなどで他の人の設定を探してそれをそのままコピペして改善するか確認した.
→改善せず. - 他のマシンで動くか確認する.
M1のmacはarmらしいので元々使っていたx86のmacで動くか確認する.また,ubuntu18.04でも確認する.
→そっちでは動いた.ただ,この時はHadoopの***-site.xml以外の環境はあまりみてない.
改善した理由
改善した理由と思われるポイントがいくつかある.
-
再起動
namenodeとdatanodeのcannot set priority of...
は,すでにnamenodeやdatanodeが動いている時に起きることがあった.
stop-all.sh
で止めようとしたがなぜか止まってくれないことがあり,このケースは無理やり止めるために再起動したらうまくいった. -
ssh localhost
のパスワードを無くす.
エラー表示の内容は忘れたけどPermission deniedみたいなのが出る時とかとりあえずsshで詰まってるっぽい時は,ssh localhost
でパスワードが設定されてるのも理由の一つとしてあるので,ssh-keygen -p -f ~/.ssh/id_rsa
でEnter old passphraseに元のパスワードを入力して,Enter new passphraseはエンターキーのみ押す(何も入力しない)とパスワードをなしにできる. -
Javaのバージョン確認.
Java19を入れていたのもダメだった理由っぽい.nodemanagersとresourcemanagerのcannnot set priority of...
はこれで解決した.色々ググったら「Java8がいい」みたいなのがいっぱい出てきたから,自分の場合はzulu-8.jdkを入れて,hadoop-env.shの55行目くらいにあるexport JAVA_HOMEのところをexport JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/
にした.ついでに~/.zshrcのJAVA_HOMEもそっちにしといた(どっちが原因なのか,どっちもなのかは確認してないからわからない). -
hdfs-site.xmlをいじる
secondary namenodesでhogehoge: ssh: Could not resolve hostname hogehoge: nodename nor servname provided, or not known
ってでて困ってたけど,よくみたらlocalhostじゃないところにつなげようとしてるのかなって思ったから
<property>
<name>dfs.secondary.http.address</name>
<value>hdfs://localhost:50090</value>
</property>
って設定したらうまくいった.