Hadoop 在KMeanClustering--Mahout中未找到类异常

Hadoop 在KMeanClustering--Mahout中未找到类异常,hadoop,cluster-analysis,classnotfoundexception,mahout,k-means,Hadoop,Cluster Analysis,Classnotfoundexception,Mahout,K Means,嗨,我正在试着从Github运行代码,看看集群是如何工作的, 我能够在我的windows Eclipse上编译代码 我为我的项目制作了一个jar,我想在单节点Hadoop集群(CHD-4.2.1)上运行它,并在其上安装mahout。mahout示例在此集群上运行良好,因此没有安装问题 我在commandpromt中使用以下命令来运行我的jar,我不确定我是否以正确的方式进行了尝试 user@INFPH01463U:~$mahoutjar/home/user/apurv/Kmean.jar 试用。

嗨,我正在试着从Github运行代码,看看集群是如何工作的, 我能够在我的windows Eclipse上编译代码

我为我的项目制作了一个jar,我想在单节点Hadoop集群(CHD-4.2.1)上运行它,并在其上安装mahout。mahout示例在此集群上运行良好,因此没有安装问题

我在commandpromt中使用以下命令来运行我的jar,我不确定我是否以正确的方式进行了尝试

user@INFPH01463U:~$mahoutjar/home/user/apurv/Kmean.jar 试用。简单方法群集

我得到了相应的错误

未设置MAHOUT_LOCAL;将HADOOP_CONF_DIR添加到类路径。跑步 在hadoop上,使用/usr/lib/hadoop/bin/hadoop和 HADOOP_CONF_DIR=/etc/HADOOP/CONF MAHOUT-JOB: /usr/lib/mahout/mahout-examples-0.7-cdh4.3.0-job.jar 13/06/06 14:42:18 WARN driver.MahoutDriver:无法添加类:jar java.lang.ClassNotFoundException:jar 位于java.net.URLClassLoader$1.run(URLClassLoader.java:202) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:190) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:306) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:247) 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:169) 位于org.apache.mahout.driver.MahoutDriver.addClass(MahoutDriver.java:236) 位于org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:128) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 在org.apache.hadoop.util.RunJar.main(RunJar.java:208)13/06/06 14:42:18 WARN driver.MahoutDriver:在上找不到jar.props 类路径,将仅使用未知程序“jar”的命令行参数 被选中的。有效的程序名为:arff.vector::Generate Vectors 来自ARFF文件或目录的baumwelch::Baum Welch算法 无监督HMM训练树冠::树冠聚类cat::打印 逻辑回归模型将看到的文件或资源
cleansvd::SVD输出clusterdump:的清理和验证: 将群集输出转储到文本clusterpp::组中的群集输出 Clusters cmdump::以HTML或文本格式转储混淆矩阵
cvb::LDA通过折叠的变异间隔(第0衍生值约)
cvb0_local::LDA通过折叠的变量Bayes,在本地内存中。
dirichlet::dirichlet聚类特征割::特征割谱 聚类评估工厂化::计算评级的RMSE和MAE 基于模糊K-均值的矩阵分解 集群fpg::频繁模式增长hmmpredict::生成 给定HMM项相似性的随机观察序列: 计算基于项目的协作项目的项目相似性 过滤kmeans::K-means聚类lucene.vector::Generate CSV格式Lucene索引矩阵中的向量Dump::Dump矩阵 矩阵结果::取两个矩阵的乘积meanshift::Mean Shift clustering minhash::运行minhash clustering PARALLEALS:: 评级矩阵的ALS-WR因子分解推荐因子分解:: 使用评级矩阵的因式分解计算推荐值
recommenditembased::使用基于项的方法计算建议 协作筛选regexconverter::在服务器上转换文本文件 基于正则表达式的每行基础rowid::Map 序列文件到 {SequenceFile, SequenceFile}rowsimilarity::计算 矩阵行的成对相似性runAdaptiveLogistic:: 使用可能经过培训和验证的方法对新的生产数据进行评分 自适应逻辑回归模型runlogistic::运行逻辑 针对CSV数据的回归模型seq2encoded::Encoded Sparse 从文本序列文件生成向量seq2sparse::Sparse 从文本序列文件生成向量seqdirectory::Generate 目录seqdumper::Generic中的(文本)序列文件 序列文件转储程序seqmailarchives::从 包含gzip邮件存档的目录seqwiki::Wikipedia xml 转储到序列文件spectralkmeans::Spectral k-means聚类 split::将输入数据拆分为测试集和列车集splitDataset:: 将评级数据集拆分为培训和探测零件ssvd:: 随机奇异值分解SVD::Lanczos奇异值分解testnb: :测试基于向量的贝叶斯分类器trainAdaptiveLogistic:: 训练自适应回归模型训练后勤::训练a 使用随机梯度下降法的逻辑回归训练nb:: 训练基于向量的贝叶斯分类器transpose::使用 矩阵的转置validateAdaptiveLogistic::Validate 针对保持数据集vecdist的自适应逻辑回归模型: :计算一组向量(或簇或簇)之间的距离 树冠,它们必须适合内存)和向量列表vectordump:: 将向量从序列文件转储到文本viterbi::viterbi 从给定输出状态序列13/06/06解码隐藏状态 14:42:18信息驱动程序。MahoutDriver:程序耗时2毫秒(分钟: 3.333(第5E-5段)

以下是我正在使用的代码:

代码

套餐试用;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.hadoop.conf.Configuration;
导入org.apache.hadoop.fs.FileSystem;
导入org.apache.hadoop.fs.Path;
导入org.apache.hadoop.io.IntWritable;
导入org.apache.hadoop.io.LongWritable;
导入org.apache.hadoop.io.SequenceFile;
重要的
package tryout;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.VectorWritable;
import org.apache.mahout.clustering.kmeans.Kluster;
import org.apache.mahout.clustering.classify.WeightedVectorWritable;
import org.apache.mahout.clustering.kmeans.KMeansDriver;
import org.apache.mahout.common.distance.EuclideanDistanceMeasure;

public class SimpleKMeansClustering {
    public static final double[][] points = { {1, 1}, {2, 1}, {1, 2}, 
                                              {2, 2}, {3, 3}, {8, 8},
                                              {9, 8}, {8, 9}, {9, 9}};    


    public static void writePointsToFile(List<Vector> points,
            String fileName,FileSystem fs,Configuration conf) throws IOException {    
        Path path = new Path(fileName);    
        @SuppressWarnings("deprecation")
        SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf,path, LongWritable.class, VectorWritable.class);    

        long recNum = 0;    
        VectorWritable vec = new VectorWritable();    
        for (Vector point : points) {       
         vec.set(point);      
          writer.append(new LongWritable(recNum++), vec);    
        }    writer.close();  
    }    

    public static List<Vector> getPoints(double[][] raw) {    
        List<Vector> points = new ArrayList<Vector>();    
        for (int i = 0; i < raw.length; i++) {      
            double[] fr = raw[i];      
            Vector vec = new RandomAccessSparseVector(fr.length);      
            vec.assign(fr);      
            points.add(vec);    
        }    
        return points;  
    }    
    public static void main(String args[]) throws Exception {        
        int k = 2;        
        List<Vector> vectors = getPoints(points);        
        File testData = new File("testdata");    
        if (!testData.exists()) {      
            testData.mkdir();    
        }    
        testData = new File("testdata/points");    
        if (!testData.exists()) {      
            testData.mkdir();    
        }        
        Configuration conf = new Configuration();    
        FileSystem fs = FileSystem.get(conf);    
        writePointsToFile(vectors, "testdata/points/file1", fs, conf);        
        Path path = new Path("testdata/clusters/part-00000");    
        @SuppressWarnings("deprecation")
        SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf,path, Text.class, Kluster.class);
        for (int i = 0; i < k; i++) {      
            Vector vec = vectors.get(i);      
            Kluster cluster = new Kluster(vec, i, new EuclideanDistanceMeasure());      
            writer.append(new Text(cluster.getIdentifier()), cluster);    
        }    
        writer.close();        

        KMeansDriver.run(conf, new Path("testdata/points"), new Path("testdata/clusters"),      
                new Path("output"), new EuclideanDistanceMeasure(), 0.001, 10,
                true,0.0, false);        
        @SuppressWarnings("deprecation")
        SequenceFile.Reader reader = new SequenceFile.Reader(fs,new Path("output/" + Kluster.CLUSTERED_POINTS_DIR+ "/part-m-00000"), conf);        
        IntWritable key = new IntWritable();   
        WeightedVectorWritable value = new WeightedVectorWritable();    
        while (reader.next(key, value)) {      
            System.out.println(value.toString() + " belongs to cluster " + key.toString());    
        }    
        reader.close();  
    }
}
./bin/mahout kmeans -i reuters-vectors/tfidf-vectors/ -o mahout-clusters -c mahout-initial-centers -c 0.1 -k 20 -x 10 -ow