具有大数据量的Spark最佳实践

时间:2016-03-09 04:16:26

标签: hadoop apache-spark

我们的Hadoop集群有20个节点。 16核,128G内存/节点。

我们需要对HDFS中的日志记录数据集(hive)进行复杂分析,我们使用Parquet + Snappy进行压缩,并将2个月的日志加载到RDD,这是5亿条记录,HDFS大约需要40G。从性能角度来看,SparkSql在它上面运行得很好。

我们基本上是这样做的:

select host, ip from logs where t1<time<t2, 
select host, ip from logs where t3<time<t4,
select host, ip from logs where t5<time<t6,
select host, ip from logs where t7<time<t8,

然后我们合并了4组结果并尝试找出主机/ IP在四个时隙中处于活动状态。真实情况更复杂,但就目前而言,这个例子都可以。

2年的记录是近50亿条记录,300~G。我们试图将它全部加载到RDD,SaprkSql的工作速度非常慢,显然,我们遇到了“内存不足”的问题。经常(我们为每个Spark节点分配了30G内存)。只是想知道这种问题有什么最佳实践吗?例如保留Spark的最新2个月数据,而旧数据以不同方式处理?或者Spark可能不适合这个?

0 个答案:

没有答案