【发布时间】:2016-10-04 00:47:24
【问题描述】:
我正在尝试使用 Spark MLlib 在大约 3000,000 行和 2048 列的巨大矩阵上执行 KMeans。该矩阵的大小约为 76GB。但是,此矩阵存储在 S3 上的文件块中。
我正在尝试通过 Amazon EMR 在 EC2 实例上设置 Spark。我曾尝试进行适当的配置,但在 Amazon 集群上运行 KMeans 时遇到了内存和磁盘错误。以下是我用来创建和配置 Amazon 集群的 python 脚本。
import boto3
def lambda_handler():
client = boto3.client('emr', region_name='us-west-1')
client.run_job_flow(
Name='kmeans',
ReleaseLabel='emr-4.6.0',
Instances={
'MasterInstanceType': 'c3.8xlarge',
'SlaveInstanceType': 'c3.8xlarge',
'InstanceCount': 10,
'Ec2KeyName': 'spark',
'KeepJobFlowAliveWhenNoSteps': True,
'TerminationProtected': True
},
Steps=[
{
'Name': 'kmeans',
'ActionOnFailure': 'CANCEL_AND_WAIT',
'HadoopJarStep': {
'Jar': 'command-runner.jar',
'Args': [
'spark-submit',
'--driver-memory','55G',
'--executor-memory','18G',
'--executor-cores','1',
'--num-executors','30',
'/home/hadoop/process_data.py'
]
}
},
],
BootstrapActions=[
{
'Name': 'cluster_setup',
'ScriptBootstrapAction': {
'Path': 's3://../setup.sh',
'Args': []
}
}
],
Applications=[
{
'Name': 'Spark'
},
],
Configurations=[
{
"Classification": "spark-env",
"Properties": {
},
"Configurations": [
{
"Classification": "export",
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python2.7",
"PYSPARK_DRIVER_PYTHON": "/usr/bin/python2.7"
},
"Configurations": [
]
}
]
},
{
"Classification": "spark-defaults",
"Properties": {
"spark.akka.frameSize": "2047",
"spark.driver.maxResultSize": "0"
}
}
],
VisibleToAllUsers=True,
JobFlowRole='EMR_EC2_DefaultRole',
ServiceRole='EMR_DefaultRole'
)
if __name__=='__main__':
lambda_handler()
如果有人能就关于 KMeans 聚类所提到的数据大小的以下参数给我一个提示,我将不胜感激?
- 'MasterInstanceType'
- 'SlaveInstanceType'
- 'InstanceCount'
- --驱动内存
- --执行器内存
- --executor-cores
- --num-executors
- spark.akka.frameSize
- spark.driver.maxResultSize
【问题讨论】:
标签: apache-spark configuration k-means apache-spark-mllib amazon-emr