Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何与hadoop 2.x并行运行MapReduce任务?_Java_Hadoop_Mapreduce_Bigdata_Cloudera Cdh - Fatal编程技术网

Java 如何与hadoop 2.x并行运行MapReduce任务?

Java 如何与hadoop 2.x并行运行MapReduce任务?,java,hadoop,mapreduce,bigdata,cloudera-cdh,Java,Hadoop,Mapreduce,Bigdata,Cloudera Cdh,我希望map和reduce任务并行运行。然而,尽管尝试了袋中的每一个技巧,它们仍然按顺序运行。我从中了解到,使用以下公式,可以设置并行运行的任务数 min (yarn.nodemanager.resource.memory-mb / mapreduce.[map|reduce].memory.mb, yarn.nodemanager.resource.cpu-vcores / mapreduce.[map|reduce].cpu.vcores) 但是,正如您从下面使用的warn site.

我希望map和reduce任务并行运行。然而,尽管尝试了袋中的每一个技巧,它们仍然按顺序运行。我从中了解到,使用以下公式,可以设置并行运行的任务数

min (yarn.nodemanager.resource.memory-mb / mapreduce.[map|reduce].memory.mb, 
 yarn.nodemanager.resource.cpu-vcores / mapreduce.[map|reduce].cpu.vcores)
但是,正如您从下面使用的warn site.xmlmapred site.xml中看到的那样,我做到了这一点。但任务仍然按顺序运行。注意,我使用的是开源的ApacheHadoop,而不是Cloudera。转移到Cloudera会解决问题吗?还要注意,我的输入文件足够大,因此dfs.block.size也不应该成为问题

纱线站点.xml

    <configuration>
    <property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>131072</value>
    </property>
    <property>
      <name>yarn.nodemanager.resource.cpu-vcores</name>
      <value>64</value>
    </property>
    </configuration>
    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:9001</value>
    </property>

    <property>
      <name>mapreduce.map.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
      <name>mapreduce.reduce.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
        <name>mapreduce.map.cpu.vcores</name>
        <value>8</value>
    </property>

    <property>
        <name>mapreduce.reduce.cpu.vcores</name>
        <value>8</value>
    </property>
    </configuration>

warn.nodemanager.resource.memory-mb
131072
纱线.nodemanager.resource.cpu-vcores
64
mapred site.xml

    <configuration>
    <property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>131072</value>
    </property>
    <property>
      <name>yarn.nodemanager.resource.cpu-vcores</name>
      <value>64</value>
    </property>
    </configuration>
    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:9001</value>
    </property>

    <property>
      <name>mapreduce.map.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
      <name>mapreduce.reduce.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
        <name>mapreduce.map.cpu.vcores</name>
        <value>8</value>
    </property>

    <property>
        <name>mapreduce.reduce.cpu.vcores</name>
        <value>8</value>
    </property>
    </configuration>

mapred.job.tracker
本地主机:9001
mapreduce.map.memory.mb
16384
mapreduce.reduce.memory.mb
16384
mapreduce.map.cpu.vcores
8.
mapreduce.reduce.cpu.vcores
8.

容器是为在culster的每个节点上执行Map/Reduce任务而保留的逻辑执行模板

warn.nodemanager.resource.memory mb
属性告诉warn资源管理器为要在节点中调度以执行Map/Reduce任务的所有容器保留大量ram内存。这是为每个容器保留的最大内存上限

但在您的情况下,节点中的可用内存几乎是11GB,并且您已经将
warn.nodemanager.resource.memory mb
配置为几乎128GB(131072),
mapreduce.map.memory.mb
&
mapreduce.reduce.memory.mb
配置为16GB。Map/Reduce容器所需的上限大小为16Gb,高于11GB的可用内存*。这可能是节点中只分配了一个容器来执行的原因

我们将减少
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
属性的值,使其小于空闲内存的值,以使多个容器并行运行

min (yarn.nodemanager.resource.memory-mb / mapreduce.[map|reduce].memory.mb, 
 yarn.nodemanager.resource.cpu-vcores / mapreduce.[map|reduce].cpu.vcores)
还可以查看一些增加可用内存的方法,因为它已经使用了90%以上的内存


希望这有帮助:)..

更改hadoop发行版没有任何意义..问题可能在其他地方..您能告诉我集群中节点和容器的数量吗?。。使用http://:8088/cluster/nodes检查…@hserus:I有一个节点,64个虚拟核心。我真的不知道你说的集装箱是什么意思。如何检查容器的数量?好的……您是否能够看到此资源管理器的页面
http://:8088/cluster/nodes
?。。。您将看到列出的一个节点…请让我知道针对该节点显示的容器、mem avail、mem used值…@hserus:没有web浏览器,有没有办法看到这一点。因为我运行这个的服务器没有,我也没有管理员权限。我认为第二行列出了实际可用和未使用的内存。我的情况是150GB。所以,是的,我有很多:)。那么,对于这个内存量,您建议使用什么参数呢?哦,是的,第二行的可用内存是实际的可用内存,包括缓冲区/缓存…嗯,但不确定哪一个将由纱线拾取…但我们可以进行实验…抱歉…我有点错,所以编辑了答案:(请检查..尝试一下,我们将保持
纱线.nodemanager.resource.memory mb
值不变,并将
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
尝试2048MB以并行执行容器。请分享您的观察结果..您不必更新mapred-site.xml,而是更新这两个pro属性可以在mapreduce代码本身的作业配置中更新。我试图查看jvm如何在内存上生成。实际上,jvm从第二行显示的可用内存中取出内存。无论如何,您可以尝试上述配置并共享您的观察结果。我们可能走错了方向,我们将在看到观察结果后尝试其他配置。在代码中更改mapreduce.map.memory.mb和mapreduce.reduce.memory.mb的方法是什么?