关于mahout中的random forests算法在前面已经分析过,这里简要说下其并行策略。
刚开始的时候,我以为这个算法好像没啥并行的地方,一开始就是对全部原始数据进行分析,也没有对原始数据进行分片。然后它的job任务也只有一个mapper,这样如何才能多建立几个mapper?然后这样才能达到几个节点并行吧(一个节点计算一个mapper,这样效率才高过一个节点计算多个mapper)。但是如果总共才有一个map任务,那就算有多个节点也是没有用的。然后我就记起来mapper任务map的个数是和输入数据的大小来的,64M就会新建一个map任务,如果数据大于64M就会新建一个map任务。所以我就把前面的glass.data数据进行加倍处理,一直到数据到了70多M的时候然后上传,运行buildforest任务,但是还是只有一个map任务被提交了。这样就让我好郁闷了。
然后就又去看官网的文档,看到下面的一句:
The number of partitions is controlled by the -Dmapred.max.split.size argument that indicates to Hadoop the max. size of each partition, in this case 1/10 of the size of the dataset. Thus 10 partitions will be used.
IMPORTANT: using less partitions should give better classification results, but needs a lot of memory. So if the Jobs are failing, try increasing the number of partitions
上面的大概意思是:设置-Dmapred.max.split.size参数,然后根据这个参数把数据进行分片,然后几个分片就会建立几个map任务进行提交。这样有多个map任务被提交的话,并行就有搞头了。这里应该就是按照split.size参数对原始数据进行分组(随机分?整块分?),然后对每组数据进行建树分析的过程,这样来达到对大数据的分组,并行的策略。但是这样的话,建立的树不是没有包含所有的信息?这点也是这个并行策略的不足吧,官网文档也说,如果分片越少,那么建立的决策树精度会提高(但是每个决策树模型需要消耗的内存也会增大),但是相对的并行性就会降低(试想,我又2个map任务,但是我又3个节点,那么不是有一个节点应该没有任务,这样效率其实是不高的)。
既然上面说的那个参数可以进行设置来决定map的个数,那么就试验一下吧:

上图可以看到提交了三个map任务,但是一个节点只能同时运行2个map(这个个数可以设置,我只有一个节点,伪分布式)。同时也可以看到运行失败了两个map任务,因为我提交的输入数据太大了(143M),所以内存吃不消了,在终端出现下面的错误:

所以针对这个算法,-Dmapred.max.split.size参数一定要进行设置,而且还要慎重考虑,这个算法同时关系到算法的效率和模型的精确度。
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
分享到:
相关推荐
- **分类(Classification)**: Mahout 提供了多种监督学习算法,如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)和随机森林(Random Forests),用于预测目标变量的值。 - **聚类(Clustering)**: 包括K-...
- **分类(Classification)**: Mahout包含了多种分类算法,如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)和随机森林(Random Forests),这些算法常用于文本分类和垃圾邮件过滤等场景。 - **聚类...
1. **分类(Classification)**:Mahout提供了如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)和随机森林(Random Forests)等算法,用于预测离散或连续的目标变量。这些算法广泛应用于垃圾邮件过滤、文本...
Mahout支持多种分类算法,如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)、随机森林(Random Forests)等。这些算法可用于文本分类、垃圾邮件过滤等任务,帮助自动对数据进行预定义的类别划分。 **4. 聚类...
- **分类算法**:如朴素贝叶斯(Naive Bayes)、决策树(Decision Trees)和随机森林(Random Forests)等,用于预测离散的输出结果。 - **聚类算法**:如K均值(K-Means)、层次聚类(Hierarchical Clustering)...
2. **随机森林(Random Forests)**:这是一种集成学习方法,通过构建多个决策树并取其平均结果来提高分类准确性和鲁棒性。在数据挖掘和预测任务中,随机森林常用于特征选择和分类,如在网页自动分类中,可以利用...