【发布时间】:2019-08-16 03:14:35
【问题描述】:
我在 Google Compute Engine 上创建了两个集群,这些集群读取 100 GB 数据。
第一组: 1 个主机 - 15 GB 内存 - 250 GB 磁盘 10 个节点 - 7.5 GB 内存 - 200 GB 磁盘
第二组: 1 个主机 - 15 GB 内存 - 250 GB 磁盘 150 个节点 - 1.7 GB 内存 - 200 GB 磁盘
我正在使用它来读取文件:
val df = spark.read.format("csv")
.option("inferSchema", true)
.option("maxColumns",900000)
.load("hdfs://master:9000/tmp/test.csv")
这也是一个包含 55k 行和 850k 列的数据集。
Q1:虽然我增加了机器的数量,但我没有看到阅读速度有明显的提高。有什么问题或该怎么做才能使此过程更快?我应该增加节点吗?
Q2:对于 Spark 来说,机器数量的增加是重要还是内存量的增加重要?是否有节点、内存和速度之间的性能图?
Q3:hadoop 的复制或移动命令也运行得很慢。数据只有 100 GB。大公司如何处理 TB 级数据?我无法捕捉到数据读取速度的提高。
感谢您的回答
【问题讨论】:
-
列的结构是什么?它们的结构相似吗?如果文件基本上是一个大矩阵,我可能会提供帮助。
-
它只包含 1 或 0。我的意思是这是一个大矩阵。有没有简化的方法或某事。像那样?
-
我从事一个名为 Hail(专为基因组学而构建)的项目,该项目建立在 spark 之上,旨在处理此类庞大的结构化矩阵。 github.com/hail-is/hail
-
目前我们没有太多的基础设施来处理备用矩阵,所以如果您的矩阵非常稀疏,可能会导致效率低下。但我认为对这些数据的探索和计算应该很容易!
标签: scala csv apache-spark hadoop google-compute-engine