我试图在伪分布式模式下运行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>
yarn-site.xml文件
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> </property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
完成此操作后,我使用
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用于其他用途,不想在损坏某些内容时混用)
我可以ssh到localhost。一切看起来都很好。
然后我运行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 history server之后),我有以下功能:
37921 NodeManager
38070 Jps
37434 NameNode
38060 JobHistoryServer
37821 ResourceManager
值得注意的是,secondarynamenode丢失了,我的假设是由于上面的错误。
然后我可以尝试使用hadoop的fs命令,我可以创建一个文件夹并查找它。但是如果我试图复制任何数据,我会得到通知namenode处于安全模式。如果我使用以下命令关闭保存模式:
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.
不过,我有很多资源。单个datanode占用的空间不到其分配空间的8%,namenode占用的空间几乎为100gb。datanode和namenode都报告为正常。因此,我认为问题在于缺少辅助namenode。记住这一点,是否有人知道是什么导致secondarynamenode与primarynamenode有不同的权限问题?它似乎试图把snn放在本地机器的某个地方,但是当我签入时 /tmp/hadoop*
,所有文件权限似乎都正常。
谢谢你的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!