在Linux上结合Hadoop平台安装mahout运行时显示错误JAVA_HOME is not

Python047

在Linux上结合Hadoop平台安装mahout运行时显示错误JAVA_HOME is not,第1张

·用文本编辑器打开/etc/profile

·在profile文件末尾加入:

export JAVA_HOME=/usr/share/jdk1.6.0_14 (你java的安装目录)

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存退出后,执行source /etc/profile就可以了

数据挖掘,又称为资料探勘、数据采矿。

它是数据库知识发现(英语:Knowledge-DiscoveryinDatabases,简称:KDD)中的一个步骤,是一个挖掘和分析大量数据并从中提取信息的过程。

其中一些应用包括市场细分-如识别客户从特定品牌购买特定产品的特征,欺诈检测-识别可能导致在线欺诈的交易模式等。

在本文中,贵阳电脑培训http://www.kmbdqn.cn/整理了进行数据挖掘的8个最佳开源工具。

1、WekaWEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。

2、RapidMinerRapidMiner是世界领先的数据挖掘解决方案,在一个非常大的程度上有着先进技术。

它数据挖掘任务涉及范围广泛,包括各种数据艺术,能简化数据挖掘过程的设计和评价。

3、OrangeOrange是一个基于组件的数据挖掘和机器学习软件套装,它的功能即友好,又很强大,快速而又多功能的可视化编程前端,以便浏览数据分析和可视化,基绑定了Python以进行脚本开发。

它包含了完整的一系列的组件以进行数据预处理,并提供了数据帐目,过渡,建模,模式评估和勘探的功能。

其由C++和Python开发,它的图形库是由跨平台的Qt框架开发。

4、KnimeKNIME(KonstanzInformationMiner)是一个用户友好,智能的,并有丰演的开源的数据集成,数据处理,数据分析和数据勘探平台。

5、jHepWorkjHepWork是一套功能完整的面向对象科学数据分析框架。

Jython宏是用来展示一维和二维直方图的数据。

该程序包括许多工具,可以用来和二维三维的科学图形进行互动。

6、ApacheMahoutApacheMahout是ApacheSoftwareFoundation(ASF)开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在Apache在许可下免费使用。

该项目已经发展到了它的最二个年头,目前只有一个公共发行版。

Mahout包含许多实现,包括集群、分类、CP和进化程序。

此外,通过使用ApacheHadoop库,Mahout可以有效地扩展到云中。

7、ELKIELKI(EnvironmentforDevelopingKDD-ApplicationsSupportedbyIndex-Structures)主要用来聚类和找离群点。

ELKI是类似于weka的数据挖掘平台,用java编写,有GUI图形界面。

可以用来寻找离群点。

Mahout安装详细全过程

1、jdk安装2

2、SSH无密码验证配置2

3、 Hadoop配置3

4、Hadop使用6

5、Maven安装7

6、安装mahout7

7、hadoop集群来执行聚类算法8

8、其他8

————————————————————

1、jdk安装

1.1、到官网下载相关的JDK

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1.2、打开“终端”

输入:sh jdk-6u24-linux-i586.bin

1.3、设置JAVA_HOME环境系统变量

输入:

vi /etc/environment

在文件中添加:

export JAVA_HOME=/root/jdk1.6.0_24

export JRE_Home=/root/jdk1.6.0_24/jre

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

同样,修改第二个文件。输入:

vi /etc/profile

在umask 022之前添加以下语句:

export JAVA_HOME=/root/jdk1.6.0_24

export JRE_Home=/root/jdk1.6.0_24/jre

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

1.4、注销用户,检测JDK版本。

输入:

java -version

2、集群环境介绍

集群包含三个节点:1 个 namenode,2 个 datanode,节点之间局域网连接,可以相互 ping 通。节点 IP 地址分布如下:

Namenode: [email protected]

Datanode1: slave1 @192.168.1.20

Datanode2: [email protected]

三台节点上均是CentOS系统,Hadoop在/root/hadoop/目录下

在/etc/hosts上添加主机名和相应的IP地址:

192.168.1.10master

192.168.1.20slave1

192.168.1.21slave2

3、SSH无密码验证配置

2.1 Hadoop 需要使用SSH 协议,namenode 将使用SSH 协议启动 namenode和datanode 进程,伪分布式模式数据节点和名称节点均是本身,必须配置 SSH localhost无密码验证。

用root用户登录,在家目录下执行如下命令:ssh-keygen -t rsa

[root@master ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): &按回车默认路径 &

Created directory '/root/.ssh'. &创建/root/.ssh目录&

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38 root@master

通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。进入/root/.ssh目录在namenode节点下做如下配置:

[root@master .ssh]# cat id_rsa.pub >authorized_keys

[root@master .ssh]# scp authorized_keys 192.168.1.20:/root/.ssh/

[root@master .ssh]# scp authorized_keys 192.168.1.21:/root/.ssh/

配置完毕,可通过ssh 本机IP 测试是否需要密码登录。

2.2 和namenode无密码登录所有Datanode原理一样,把Datanode的公钥复制到

Namenode的.ssh目录下。

[root@slave1 .ssh]# scp authorized_keys1 192.168.1.10:/root /.ssh

[root@ slave2.ssh]# scp authorized_keys2 192.168.1.10:/root /.ssh

将刚传过来的authorized_keys1、2加入到authorized_keys

[root@ master.ssh]# cat authorized_keys1 >authorized_keys

[root@ master.ssh]# cat authorized_keys2 >authorized_keys

这样也能在Datanode上关闭和启动Hadoop服务。

4、 Hadoop配置

下载 hadoop-0.20.2.tar.gz, 进行解压。

tar zxvf hadoop-0.20.2.tar.gz

修改/etc/profile,加入如下:

# set hadoop path

export HADOOP_HOME=/root/hadoop

export PATH=$HADOOP_HOME/bin:$PATH

4.1、进入hadoop/conf, 配置Hadoop配置文件

4.1.1 配置hadoop-env.sh文件

添加 # set java environment

export JAVA_HOME=/root/jdk1.6.0_24

编辑后保存退出。

4.1.2 配置core-site.xml

# vi core-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://192.168.1.10:9000/</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/root/hadoop/hadooptmp</value>

</property>

</configuration>

4.1.3 配置hdfs-site.xml

# vi hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/root/hadoop/hdfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/root/hadoop/hdfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

4.1.4 配置mapred-site.xml

# vi mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>192.168.1.10:9001</value>

</property>

<property>

<name>mapred.local.dir</name>

<value>/root/hadoop/mapred/local</value>

</property>

<property>

<name>mapred.system.dir</name>

<value>/tmp/hadoop/mapred/system</value>

</property>

</configuration>

4.1.5 配置masters

# vi masters

192.168.1.10

4.1.6 配置slaves

# vi slaves

192.168.1.20

192.168.1.21

4.2、 Hadoop启动

4.2.1 进入 /root/hadoop/bin目录下,格式化namenode

# ./hadoop namenode –format

4.2.2 启动hadoop所有进程

在/root/hadoop/bin 目录下,执行start-all.sh命令

启动完成后,可用jps命令查看hadoop进程是否启动完全。正常情况下应该有如下进程:

10910 NameNode

11431 Jps

11176 SecondaryNameNode

11053 DataNode

11254 JobTracker

11378 TaskTracker

我在搭建过程中,在此环节出现的问题最多,经常出现启动进程不完整的情况,要不是datanode无法正常启动,就是namenode或是TaskTracker启动异常。解决的方式如下:

1)在Linux下关闭防火墙:使用service iptables stop命令;

2)再次对namenode进行格式化:在/root/hadoop/bin 目录下执行hadoop namenode -format命令

3)对服务器进行重启

4)查看datanode或是namenode对应的日志文件,日志文件保存在/root/hadoop/logs目录下。

5)再次在/bin目录下用start-all.sh命令启动所有进程,通过以上的几个方法应该能解决进程启动不完全的问题了。

4.2.3 查看集群状态

在 bin目录下执行:hadoop dfsadmin -report

# hadoop dfsadmin –report

4.3 在WEB页面下查看Hadoop工作情况

打开IE浏览器输入部署Hadoop服务器的IP:

http://localhost:50070

http://localhost:50030。

5、Hadop使用

一个测试例子wordcount:

计算输入文本中词语数量的程序。WordCount在Hadoop主目录下的java程序包hadoop-0.20.2-examples.jar 中,执行步骤如下:

在/root/hadoop/bin/目录下进行如下操作:

./hadoop fs -mkdir input(新建目录名称,可任意命名)

mkdir /root/a/

vi /root/a/a.txt

写入hello world hello

# hadoop fs -copyFromLocal /root/a/ input

在/root/hadoop/bin下执行:

# ./hadoop jar hadoop-0.20.2-examples.jar wordcount input output (提交作业,此处需注意input与output是一组任务,下次再执行wordcount程序,还要新建目录intput1与output1不能跟input与output重名)

6、Maven安装

6.1下载Maven

解压tar vxzf apache-maven-3.0.2-bin.tar.gz

mv apache-maven-3.0.2 /root/maven

6.2 vi ~/.bashrc

添加如下两行

export M3_HOME=/root/maven

export PATH=${M3_HOME}/bin:${PATH}

6.3 先logout,之后再login

查看maven版本,看是否安装成功

mvn -version

7、安装mahout

安装方法见:

https://cwiki.apache.org/confluence/display/MAHOUT/BuildingMahout

8、hadoop集群来执行聚类算法

8.1数据准备

cd /root/hadoop

wget http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data

8.2 ./hadoop fs -mkdir testdata

./hadoop fs -put synthetic_control.data testdata

./hadoop fs -lsr testdata

bin/hadoop jar /root/mahout/mahout-examples-0.4-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

8.3查看一下结果吧

bin/mahout vectordump --seqFile /user/root/output/data/part-r-00000

这个直接把结果显示在控制台上。

9、hadoop集群来执行推荐算法

分布式

bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.map.tasks=3 -Dmapred.reduce.tasks=3 -Dmapred.input.dir=testdata/100wan.txt -Dmapred.output.dir=output2

伪分布式

bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob --recommenderClassName org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender -Dmapred.input.dir=testdata/10wan.dat -Dmapred.output.dir=output_w10wan

10、其他

离开安全模式:hadoop dfsadmin -safemode leave