谢谢。
我一直在尝试使用SQOOP将数据从DB2导入到HBase表中,这甚至需要很长时间才能启动映射和reduce。我一直只能看到Map 0和Reduce 0。
我可以在DB2中输入相同的命令,并且结果比我预期的要快得多。但是当我将其导入到HBASE时。花费很长时间(10小时)。在DB2(150条记录)中创建了一个样本数据,并尝试导入HBASE仍然花费相同的时间。
sqoop import --connect jdbc:db2://{hostname}:50001/databasename --username user --password pass --hbase-create-table --hbase-table new_tbl --column-family abc --hbase-row-key=same --query "select a,b,c,d,e concat(a,e) from table_name where \$CONDITIONS AND a>='2018-08-01 00:00:01' and b<='2018-08-01 00:00:02'" -m 1
试图调整所有配置
yarn.nodemanager.resource.memory-mb=116800
yarn.scheduler.minimum-allocation-mb=4096
mapreduce.map.memory.mb=4096
mapreduce.reduce.memory.mb=8192
mapreduce.map.java.opts=-Xmx3072m
mapreduce.reduce.java.opts=-Xmx6144m
yarn.nodemanager.vmem-pmem-ratio=2.1
在Sqoop Side中,我尝试调整查询以及一些小的配置 -m 4在记录中创建一些不一致的地方 -删除了过滤器(timestamps(a,b))仍需要很长时间(10小时)
HBASE性能测试结果非常好。
HBase Performance Evaluation
Elapsed time in milliseconds=705914
Row count=1048550
File Input Format Counters
Bytes Read=778810
File Output Format Counters
Bytes Written=618
real 1m29.968s
user 0m10.523s
sys 0m1.140s
答案 0 :(得分:1)
除非您显示示例数据和数据类型,否则很难建议。仅当您在多个映射器之间有合理的记录分配时,额外的映射器才能正确,有效地工作。如果表中有主键,则可以将其作为拆分列,映射器将平均分配工作量并开始以平衡模式获取切片。运行时,您还可以从日志本身中查看拆分键的分配和记录计数。
如果您的群集没有足够的内存来存储资源,则可能需要更长的时间,有时它会处于提交模式很长时间,因为YARN无法分配内存来运行它。
您可以尝试将HDFS用作存储位置,而不是尝试使用HBase,并查看性能,还可以检查作业详细信息以了解MapReduce行为。