gpt4 book ai didi

algorithm - 在 5 台机器集群中以全分布式模式运行 Hadoop 比在单台机器上花费更多时间

转载 作者:行者123 更新时间:2023-12-02 21:40:22 25 4
gpt4 key购买 nike

我在 5 台机器(1 台主机和 4 台从机)的集群中运行 hadoop。我正在为普通 friend 推荐运行 map-reduce 算法,并且我正在使用一个包含 49995 行的文件(或每个人后面跟着他的 friend 的 49995 人)。

问题是在集群上执行算法比在一台机器上需要更多的时间!!

我不知道这是否正常,因为文件不够大(因此由于机器之间的延迟,时间会变慢),或者我必须更改一些东西才能在不同节点上并行运行算法,但我认为这个是自动完成的。

通常,在一台机器上运行算法需要这样:

   real 3m10.044s
user 2m53.766s
sys 0m4.531s

在集群上需要这个时间:
    real    3m32.727s
user 3m10.229s
sys 0m5.545s

这是我在 master 上执行 start_all.sh 脚本时的输出:
    ubuntu@ip:/usr/local/hadoop-2.6.0$ sbin/start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-namenode-ip-172-31-37-184.out
slave1: starting datanode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-datanode-slave1.out
slave2: starting datanode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-datanode-slave2.out
slave3: starting datanode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-datanode-slave3.out
slave4: starting datanode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-datanode-slave4.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.6.0/logs/hadoop-ubuntu-secondarynamenode-ip-172-31-37-184.out
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop-2.6.0/logs/yarn-ubuntu-resourcemanager-ip-172-31-37-184.out
slave4: starting nodemanager, logging to /usr/local/hadoop-2.6.0/logs/yarn-ubuntu-nodemanager-slave4.out
slave1: starting nodemanager, logging to /usr/local/hadoop-2.6.0/logs/yarn-ubuntu-nodemanager-slave1.out
slave3: starting nodemanager, logging to /usr/local/hadoop-2.6.0/logs/yarn-ubuntu-nodemanager-slave3.out
slave2: starting nodemanager, logging to /usr/local/hadoop-2.6.0/logs/yarn-ubuntu-nodemanager-slave2.out

这是我执行 stop_all.sh 脚本时的输出:
   ubuntu@ip:/usr/local/hadoop-2.6.0$ sbin/stop-all.sh 
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [master]
master: stopping namenode
slave4: no datanode to stop
slave3: stopping datanode
slave1: stopping datanode
slave2: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
stopping yarn daemons
stopping resourcemanager
slave2: no nodemanager to stop
slave3: no nodemanager to stop
slave4: no nodemanager to stop
slave1: no nodemanager to stop
no proxyserver to stop

先感谢您 !

最佳答案

一个可能的原因是您的文件未上传到 HDFS。换句话说,它存储在一台机器上,所有其他正在运行的机器都必须从那台机器上获取它们的数据。
在运行 mapreduce 程序之前。您可以执行以下步骤:

1- 确保 HDFS 已启动并正在运行。打开链接:
大师:50070
其中 master 是运行 namenode 的节点的 IP,并检查该链接是否所有节点都处于事件状态并正在运行。因此,如果您有 4 个数据节点,您应该会看到:数据节点(4 个实时)。

2- 调用:

hdfs dfs -put yourfile /someFolderOnHDFS/yourfile



通过这种方式,您已将输入文件上传到 HDFS,并且数据现在分布在多个节点中。

现在尝试运行你的程序,看看它是否更快

祝你好运

关于algorithm - 在 5 台机器集群中以全分布式模式运行 Hadoop 比在单台机器上花费更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com