システムの仕組みを学ぶために、Hadoop を疑似分散モードで実行しようとしています。インストールするために、Hadoop-3.0.0 をサイトからダウンロードし、展開しました。次のように構成を行いました(簡潔にするために構成タグを省略しています):
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
hdsf-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
ヤーンサイト.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> </property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
これを行った後、使用してhdfsをフォーマットしました
hdfs namenode -format
また、次を使用してパスワードなしの ssh をセットアップしました。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa2
cat ~/.ssh/id_rsa2.pub >> ~/.ssh/authorized_keys
(また、構成ファイルを使用して id_rsa2.pub を localhost のデフォルトとして追加しました。これは、既に id_rsa.pub を他の何かに使用しており、何かを壊した場合に備えて組み合わせたくないためです)
localhost に ssh できます。すべてがよく見えます。
次に、start-dfs.sh を実行すると、次のエラーが表示されます。
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [zm.local]
zm.local: zm@zm.local: Permission denied (publickey,password,keyboard-interactive).
2018-01-16 17:31:35,807 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
jps を実行すると (yarn と mapreduce 履歴サーバーを起動した後)、次のようになります。
37921 NodeManager
38070 Jps
37434 NameNode
38060 JobHistoryServer
37821 ResourceManager
注目すべきことに、SecondaryNameNode が欠落しています。私の推測では、上記のエラーが原因です。
次に、hadoop の fs コマンドを使用してみると、フォルダーを作成して検索することができます。しかし、データをコピーしようとすると、NameNode が SAFEmode であるという通知を受け取ります。次を使用して保存モードをオフにすると:
hdfs dfsadmin -safemode leave
すぐにオンに戻ります。localhost の namenode ポートに移動すると、次のメッセージが表示されます。
Safe mode is ON. Resources are low on NN. Please add or free up more resourcesthen turn off safe mode manually. NOTE: If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.
しかし、私にはたくさんのリソースがあります。単一のデータノードは割り当てられたスペースの 8% 未満を使用しており、ネームノードはほぼ 100GB のスペースを使用しています。datanode と namenode はどちらも正常であると報告しています。したがって、問題はセカンダリネームノードの欠如だと思います。それを念頭に置いて、SecondaryNameNode に PrimaryNameNode とは異なる権限の問題が発生する原因を知っている人はいますか? 代わりに、ローカル マシンのどこかに sNN を配置しようとしているようですが、チェックインすると/tmp/hadoop*
、すべてのファイル アクセス許可が正常であるように見えます。
助けてくれてありがとう。