我有一个完全分布式的三节点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])
暂无答案!
目前还没有任何答案,快来回答吧!