我们只是在试用 Spark,事实证明它真的很慢。为了说明我的意思,我在下面给出了一个示例 - Spark 需要将近 2 秒的时间从 HDFS 加载一个包含 10 行的文本文件,并计算行数。我的问题:
- 这是预期的吗?您的平台需要多长时间?
- 任何可能的想法为什么?目前我在一个两节点 Hadoop 集群(都是 8 个内核,64G RAM)上使用 Spark 1.3。在 Hadoop 和 Spark 方面,我非常熟悉,所以除了 Ambari/HDP 默认值之外,我几乎没有做任何配置。
最初我在测试一亿行——Spark 花了大约 10 分钟来简单地计算它。
例子:
创建 10 个数字的文本文件,并将其加载到 hadoop:
for i in {1..10}; do echo $1 >> numbers.txt; done
hadoop fs -put numbers.txt numbers.txt
启动 pyspark(大约需要 20 秒...):
pyspark --master yarn-client --executor-memory 4G --executor-cores 1 --driver-memory 4G --conf spark.python.worker.memory=4G
从 HDFS 加载文件并计数:
sc.textFile('numbers.txt').count()
根据反馈,Spark 大约需要 1.6 秒才能完成此操作。即使配置很糟糕,我也不认为需要那么长时间。