如何使用hadoop中的mapreduce在所有节点上使用所有可能的资源来生成hfiles?

cld4siwp  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(232)

我有一个完全分布式的三节点hadoop集群(1个namenode和2个datanodes),带有完全分布式的hbase(1个活动主机、1个备份主机、2个服务器、0个死机、5.0000平均负载)。我想以最快的方式生成hfiles。我使用将hfiles加载到hbase rg.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles . 每个集群有40个核心,所以我并行运行40个进程。我的问题是只有带有hmaster和namenode的服务器使用了大约97%的cpu和几乎所有的ram。在另外两台服务器上,资源几乎没有被使用。我的问题是,在生成hfiles的过程中是否也可以使用它们来提高性能?另外,也许mapreduce中有一个特性,可以配置我要使用多少个核心和节点,而不是编写python程序(如下所示,我现在使用的是python程序)?提前谢谢。

import subprocess
import os
import time

processes = set()
max_processes = 40

for key in range(0,40):

    time.sleep(1)
    command = 'sudo -u hdfs /path/to/hbase/bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.bulk.output=hdfs://myip:9000/tmp/converted_10m' + str(key) + ' -Dimporttsv.columns="HBASE_ROW_KEY,log" logs hdfs://myip:9000/tmp/10m_package' + str(key) + '.csv'
    processes.add(subprocess.Popen(command, shell=True))
    if len(processes) >= max_processes:
        os.wait()
        processes.difference_update([
            p for p in processes if p.poll() is not None])

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题