Hadoop 如何将配置单元并发映射器增加到4个以上? 总结

Hadoop 如何将配置单元并发映射器增加到4个以上? 总结,hadoop,hive,mapreduce,Hadoop,Hive,Mapreduce,在配置单元中运行简单的select count(*)from table查询时,大型集群中只有两个节点用于映射。我想使用整个集群 细节 我使用的是一个运行hdfs和Hive1.2.1(IBM-12)的大型集群(数十个节点,每个节点的内存都超过200GB) 我有一张几十亿行的桌子。当我执行一个简单的 select count(*) from mytable; hive创建数百个映射任务,但只有4个同时运行 这意味着我的集群在查询过程中大部分处于空闲状态,这似乎是浪费。我已经尝试使用ssh连接到正

在配置单元中运行简单的select count(*)from table查询时,大型集群中只有两个节点用于映射。我想使用整个集群

细节 我使用的是一个运行hdfs和Hive1.2.1(IBM-12)的大型集群(数十个节点,每个节点的内存都超过200GB)

我有一张几十亿行的桌子。当我执行一个简单的

select count(*) from mytable;
hive创建数百个映射任务,但只有4个同时运行

这意味着我的集群在查询过程中大部分处于空闲状态,这似乎是浪费。我已经尝试使用ssh连接到正在使用的节点,但它们没有充分利用CPU或内存。我们的集群由Infiniband网络和Isilon文件存储支持,这两种存储看起来都不是很负载

我们使用mapreduce作为引擎。我试图消除对我能找到的资源的任何限制,但这并没有改变只有两个节点被使用的事实(4个并发映射器)

内存设置如下所示: 我们在41个节点上运行。根据我的计算,我应该能够得到41*188928/20992=369 map/reduce任务。相反,我得到了4分

Vcore设置:
  • 有没有办法让hive/mapreduce更多地使用我的集群
  • a将如何着手找出瓶颈
  • 可能是纱线分配任务的速度不够快吗

我想使用tez可以提高性能,但我仍然对资源利用率如此有限(而且我们没有安装ATM)感兴趣。

运行并行任务取决于您在计算机中的内存设置 例如,如果您有4个数据节点,并且您的纱线内存属性定义如下

yarn.nodemanager.resource.memory-mb 1 GB
yarn.scheduler.minimum-allocation-mb    1 GB
yarn.scheduler.maximum-allocation-mb    1 GB
yarn.app.mapreduce.am.resource.mb   1 GB
mapreduce.map.memory.mb 1 GB
mapreduce.reduce.memory.mb  1 GB
根据此设置,您有4个数据节点,因此Thread.nodemanager.resource.memory mb的总容量为4 GB,可用于启动容器 由于容器可以占用1GB内存,这意味着在任何给定的时间点,您都可以启动4个容器,其中一个容器将由应用程序主控器使用,因此您最多可以在任何给定的时间点运行3个映射器或还原器任务,因为应用程序主控器、映射器和还原器都使用1GB内存

因此,您需要增加warn.nodemanager.resource.memory mb来增加映射/减少任务的数量


附言-这里我们正在讨论可以启动的最大任务,可能比这少一些

我认为这不是问题所在。我已经用一些细节更新了我的问题。根据我的计算和你的逻辑,我应该得到300多个并发任务。其他一些因素正在限制配置单元。请同时发送这些属性。nodemanager.resource.cpu-vcores Thread.scheduler.minimum-allocation-vcores Thread.scheduler.maximum-allocation-vcores Thread.app.mapreduce.am.resource.cpu-vcores mapreduce.map.cpu.vcores我还添加了您请求的vcores信息。调度程序告诉我,我总共有984个VCores。我尝试更改为mapreduce.map.cpu.VCores 20和mapreduce.reduce.cpu.VCores 20,但我仍然只有三个并发映射程序,有数百个挂起的映射任务。mytable的数据大小和块数是多少。myTable的格式和数据是否压缩?
yarn.nodemanager.resource.cpu-vcores       24
yarn.scheduler.minimum-allocation-vcores   1
yarn.scheduler.maximum-allocation-vcores   24
yarn.app.mapreduce.am.resource.cpu-vcores  1
mapreduce.map.cpu.vcores                   1
mapreduce.reduce.cpu.vcores                1
yarn.nodemanager.resource.memory-mb 1 GB
yarn.scheduler.minimum-allocation-mb    1 GB
yarn.scheduler.maximum-allocation-mb    1 GB
yarn.app.mapreduce.am.resource.mb   1 GB
mapreduce.map.memory.mb 1 GB
mapreduce.reduce.memory.mb  1 GB