Spark在独立集群上的应用效率低

时间:2014-12-03 20:20:56

标签: apache-spark apache-spark-mllib

我正在尝试在独立群集上运行spark应用程序。在这个应用程序中,我正在使用tf-idf向量训练朴素贝叶斯分类器。

我以与此帖(Spark MLLib TFIDF implementation for LogisticRegression)类似的方式编写了应用程序。 主要区别在于我对每个文档进行了标记化和规范化:

JavaRDD<Document> termDocsRdd = sc.wholeTextFiles("D:/fileFolder").flatMap(new FlatMapFunction<Tuple2<String,String>, Document>() {
        @Override
        public Iterable<Document> call(Tuple2<String,String> tup) 
        { 
            return Arrays.asList(parsingFunction(tup)); 
        } 
    });

parsingFunction没有像map或flatMap等任何Spark函数。所以它不包含任何数据分发函数。

我的群集是 - 一台主机和另外两台机器 - 节点。所有机器都有8核CPU和16 GB RAM。我正在尝试在20个文本文件(每个~100 KB - 1.5 MB)上训练分类器。我不使用分布式文件系统并将文件直接放到节点上。

问题是我的群集没有像我想象的那样快 - 分类器训练了大约5分钟......在本地模式下,这个操作花费的时间少得多。

我应该注意什么?

我很感激任何建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

你有cache the RDD的训练数据吗?除非缓存RDD,否则像训练贝叶斯分类器这样的迭代算法将表现不佳。