需要帮助使用hadoop-0.18.0以伪分布式模式(一台机器)添加多个datanode吗

nfzehxib  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(300)

我是一名学生,对hadoop很感兴趣,最近开始探索它。我尝试在 pseudo-distributed 模式,但失败。
我遵循雅虎开发者教程,所以我使用的hadoop版本是 hadoop-0.18.0 我试着从网上找到的两种方法开始:
方法1(链接)
我对这条线有意见

bin/hadoop-daemon.sh --script bin/hdfs $1 datanode $DN_CONF_OPTS
``` `--script bin/hdfs` 在我使用的版本中似乎无效。我把它改成了--config `$HADOOP_HOME/conf2` 与该目录中的所有配置文件,但当脚本运行时,它给出了错误:
用法:java datanode[-rollback]
你知道这个错误是什么意思吗?日志文件已创建,但datanode未启动。
方法2(链接)
基本上我把conf文件夹复制到 `conf2` 文件夹,进行必要的更改记录在网站上 `hadoop-site.xml` 以及 `hadoop-env.sh` . 然后我执行命令

./hadoop-daemon.sh --config ..../conf2 start datanode

它给出了错误:
数据节点作为进程4190运行。先停下来。
所以我猜这是启动的第一个datanode,命令无法启动另一个datanode。
在yahoo-vm-hadoop环境中,我可以做些什么来启动额外的datanode吗?任何帮助/建议都将不胜感激。
ojsjcaue

ojsjcaue1#

hadoop启动/停止脚本使用 /tmp 作为存储已启动守护进程的PID的默认目录。在您的情况下,当您启动第二个datanode时,启动脚本会发现 /tmp/hadoop-someuser-datanode.pid 文件,并假定datanode守护进程已经启动。
简单的解决办法是 HADOOP_PID_DIR env变量转换为其他变量(但不是 /tmp ). 另外,不要忘记更新中的所有网络端口号 conf2 .
聪明的解决方案是使用hadoop环境启动第二个vm,并将它们加入到一个集群中。这是hadoop使用的方式。

相关问题