我们有许多distcp作业将数据从我们的主集群复制到我们的备份集群。这些作业全天运行并复制关键数据库的几乎所有表。我们在这里使用webhdfs。其中一些作业运行数小时(对于巨大的表(ORC格式的))。有什么方法可以优化两个集群之间的distcp操作。欢迎提出任何建议。我们尝试使用带宽来加速。以下是我们脚本的摘录。PROP="-Dmapreduce.task.timeout=300000-Dmapred.job.queue.name=$YARN_QUEUE-Dmapred.job.name="cpy-${jobName}"-bandwidth800"hadoopdistcp${PROP}
为了加快对大型表的ETL查询,我们在晚上对这些表和日期列运行许多analyze查询。但是这些针对列的analyze查询会占用大量内存和时间。我们正在使用tez。有什么方法可以像一些设置命令一样优化analyze查询。 最佳答案 如果您使用插入覆盖加载表,则可以通过在插入覆盖查询期间设置hive.stats.autogather=true自动收集统计信息。如果表是分区的并且分区是增量加载的,那么你可以只分析最后的分区。ANALYZETABLE[db_name.]tablename[PARTITION(partcol1[=val1],p
我正在使用mongo-hadoop适配器来运行map/reduce作业。除了启动时间和工作所花费的时间外,一切都很好。即使数据集非常小,map时间也为13秒,reduce时间为12秒。事实上,我已经更改了mapred-site.xml和core-site.xml中的设置。但是map/reduce花费的时间似乎是恒定的。有什么办法可以减少它。我还从hanborq探索了优化的hadoop分布.他们使用工作池来更快地启动/设置作业。由于hanborq分布不是很活跃,是否有其他地方可用的等效项。它是4个月前更新的,基于旧版本的hadoop。我的一些设置如下:mapred-site.xml:ma
我正在尝试使用Hadoop来处理许多存储在序列文件中的小文件。我的程序是高度IO绑定(bind),因此我想确保IO吞吐量足够高。我编写了一个MR程序,它从序列文件中读取小样本文件并将这些文件写入ramdisk(/dev/shm/test/)。还有另一个独立的程序可以删除写入ram磁盘的文件而不需要任何计算。所以测试应该几乎是纯IO绑定(bind)。然而,IO吞吐量并没有我预期的那么好。我有5个数据节点,每个数据节点有5个数据磁盘。每个磁盘可以提供大约100MB/s的吞吐量。理论上这个集群应该可以提供100MB/s*5(磁盘)*5(机器)=2500MB/s。但是,我只得到大约600MB/
你好我刚刚创建了我的第一个spark应用程序,现在我可以访问一个集群(12个节点,每个节点有2个处理器Intel(R)Xeon(R)CPUE5-26502.00GHz,每个处理器有8个内核),我想知道帮助我调整应用程序和观察其性能的标准是什么。我已经访问过spark的官方网站,它在谈论数据序列化,但我无法确切地了解它是什么或如何指定它。它也在谈论“内存管理”、“并行级别”,但我不明白如何控制这些。还有一件事,我知道数据的大小有影响,但我拥有的所有files.csv文件的大小都很小,我怎样才能获得大文件(10GB、20GB、30GB、50GB,100GB,300GB,500GB)请尽量为
Hadoop作业成功后,会显示各种计数器的摘要,请参见下面的示例。我的问题是Totaltimespentbyallmaptasks计数器中包含什么,特别是在映射器作业不是节点本地的情况下,是否包含数据复制时间?17/01/2509:06:12INFOmapreduce.Job:Counters:49FileSystemCountersFILE:Numberofbytesread=2941FILE:Numberofbyteswritten=241959FILE:Numberofreadoperations=0FILE:Numberoflargereadoperations=0FILE:N
我是HBaseRESTAPI的新手,我正在尝试寻找一种方法,我可以通过get命令获得一组Id的结果。由于批处理有助于提高我的代码的性能,而不是为表的每个ID发出获取请求。一些示例Hbasejavarestapi代码会有所帮助。提前致谢。 最佳答案 Result[]results=table.get(Listgets)做你正在寻找的。您应该会看到显着的性能改进。如果你只想知道键是否存在:boolean[]exists=exists(Listgets);它甚至可以比get更快,因为它只返回true或false。
现在我正在尝试从数据库表中导出数据,并将其写入hdfs。问题是:名称节点会成为瓶颈吗?机制如何,名称节点会缓存一个切片(64MB),然后将其提供给数据节点?有没有比编写hdfs更好的方法?因为我认为它没有利用并行机制。谢谢:) 最佳答案 您是否考虑过使用Sqoop。Sqoop可用于从任何支持JDBC的数据库中提取数据并将其放入HDFS。http://www.cloudera.com/blog/2009/06/introducing-sqoop/Sqoopimport命令获取要运行的map作业的数量(默认为1)。此外,在并行化工作(映
如果我们有数百万个大小从几KB到几MB不等的小文本文件,HDFS和HBASE中哪一个花费的处理时间更少?还有更少的内存消耗? 最佳答案 这是一个高层次的问题。缺少有关数据类型的信息。但是,一般而言,我们在决定存储位置等事项时需要牢记以下事项。在HDFS或HBase中:由于我们有质量较小的文件,将其存储在HDFS中会遇到一些问题。名称节点上的元数据会很高如果block大小(输入拆分大小)配置不正确,则完整数据局部性和并行处理的潜力将不会利用。有关输入拆分和之间关系的更多信息block大小,请引用SplitsizevsBlocksize
是否可以在使用javaAPI获取和放置时指定超时(默认行为似乎永远阻塞......特别是当我们的hbase速度慢且负载很重时) 最佳答案 尝试通过这个线程comments.gmane.org/gmane.comp.java.hadoop.hbase.user/23290–ankitKinra 关于performance-htable在javaapi中放置和获取超时,我们在StackOverflow上找到一个类似的问题: https://stackoverflo