大数据环境下基于R语言的数据挖掘平台 之 环境配置

时间:2021-09-16 08:57:27

为了用Hadoop集群,我们选用了Ubuntu作为开发的平台,相应的就有一堆在Windows上不会出现的问题需要解决。印象最深刻的就是由于X11的问题,在Windows上用R画图是没问题的,但是换到了Ubuntu上就显示不出来,这个问题直到比赛当天都一直存在,Team Member一直为了这个问题在改,最终还是成功的解决了,在此也对他们表示感谢。

这篇文章就列一下当时配环境时候的一些步骤,方便后人在Ubuntu上搭环境。

JDK安装

  1. 下载jdk
  2. Tar –zxvf jdk路径
  3. 配置环境变量,java_home,path,classpath
    Sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_12.bin
    sudo /usr/lib/jvm/java/jdk1.6.0_12.bin

Hadoop安装

  • 环境:ubuntu12.10、hadoop1.1.1、jdk1.7
  • namenode:master(ip:10.1.151.55)
  • datanode:slave1(ip:10.1.151.81)、slave2(ip:10.1.151.82)、slave3(ip:10.1.151.83)
  • 配置步骤:

(1)配置NameNode和DataNode:
修改每台机器的/etc/hosts(包括namenode和datanode)

10.1.151.55 master
10.1.151.81 slave1
10.1.151.82 slave2
10.1.151.83 slave3

(2)在所有的机器上建立相同的用户

useradd bit
passwd bit

成功建立bit用户后,输入用户密码就是该用户密码

(3)SSH设置
使用bit用户登录
在所有机器/home/ bit下

mkdir.ssh

在namenode上生成密钥对

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

注意点:

  • 不进行以下步骤SSH免密码登录设置会不成功
  • .ssh目录要设成700 有执行权限
  • authorized_keys要设成600 否则会出错
  • 还有ssh 登陆要加入用户名的 比如ssh root@localhost

这时从master向其他机器发起SSH连接,只有第一次登录时需要输入密码,以后则不需要。

(5)在所有机器上安装配置Hadoop
首先在namenode上配置,配置后在分发到datanode上
在这里,下载hadoop-1.1.1.tar.gz,然后解压到/home/bit/下即可

tar -zxvf hadoop-1.1.1.tar.gz

接下来需要修改hadoop的conf文件夹下的配置信息:

修改hadoop-env.sh,加入如下语句,使得hadoop能够找到java的路径:

export JAVA_HOME=/home/bit/jvm/jdk1.7.0

修改core-site.xml,如下:

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:// master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bit/hadoop-1.1.1/tmp</value>
</property>
</configuration>

注意:hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是在/tmp/{$user}下面,在local和hdfs都会建有相同的目录,但是在/tmp路径下的存储是不安全的,因为linux一次重启,文件就可能被删除。导致namenode启动不起来。

修改hdfs-site.xml,如下:

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

修改mapred-site.xml,如下:

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>

masters里写入作为namenode节点机器的IP或名称

master

slaves里写入作为datanode节点的机器的IP或名称

slave1
slave2
slave3

到此,hadoop的有关配置已经完成,namenode端通过如下命令把配置好的hadoop发送到各个datanode处:

scp -r hadoop-1.1.1 slave1:/home/bit
scp -r hadoop-1.1.1 slave2:/home/bit
scp -r hadoop-1.1.1 slave3:/home/bit

(6)注意点:关闭所有机器上的防火墙,不然会导致datanode起不来

/etc/init.d/iptables stop

在namenode端cd到hadoop文件夹下,格式化分布式文件系统:

bin/hadoop namenode –format

下面接着在namenode端启动hadoop进程:

bin/start-all.sh

如果没有其它差错的话,hadoop可以正常启动。

R安装

  • 命令行安装

    sudo apt-get install r-base

  • 手动安装

1、下载R安装包

sudo apt-get install gfortran
sudo apt-get install readline-common
sudo apt-get install build-essential
sudo apt-get libx11-dev
./configure –enable-R-shlib
Make
Make install

2、运行

tar -zvxf R-×.tar.gz

解压缩,其中×为R语言的版本号

3、进入解压缩的目录,运行

./configure –prefix=/home/me/R –enable-R-shlib

prefix参数可以设置R将要安装的路径,enable-R-shlib可以保证lib目录下的动态库能够共享,这个选项一定不要忘记添加,否则以后安装某些包的时候会出现“Error in dyn.load”的错误

4、注意问题

  • 如果系统会提示“未找到G77编译器的错误”,需要安装一个gfortran,运行命令

sudo apt-get install build-essential
sudo apt-get install gfortran

  • 如果出现错误“configure: error: –with-readline=yes (default) and headers/libs are not available”,需要安装libreadline6-dev

sudo apt-get install libreadline6-dev

  • 如果出现错误:“configure: error: –with-x=yes (default) and X11 headers/libs are not available”,需要安装libxt-dev

sudo apt-get install libxt-dev

所有依赖包安装好之后,配置就可以成功,此时进行编译就能成功:
运行命令:

make
make install

安装完之后需要配置R的环境变量,R_HOME和R_LIBS和PATH,这样R环境就安装完成。

JRI环境配置

1、在R中安装rJava包,运行R,然后执行

install.packages(“rJava”)

完成rJava的安装

2、下载JRI的三个jar包,分别是:JRI.jar,JRIEngine.jar,REngine.jar
3、配置动态链接库:

  • 进入rJava的目录,找到jri目录下的libjri.so将此文件放入到/usr/lib目录下
  • 将R安装目录下的libR.so也放入到/usr/lib目录下

即完成了jri环境的配置,这样我们在java环境下就可以直接调用R语言

Tomcat调用R

  • 将rjava中的libjri.so和libR.so复制到tomcat安装目录的bin(lib)目录下,这样在tomcat中就可以使用jri,调用R,进行语句执行
  • 在tomcat中设置环境变量TOMCAT_HOME和CATALINA_HOME配置为tomcat的安装目录
  • 将mysql和postgreSQL的jdbc放置到tomcat的bin和lib目录下,即可访问数据库

System.setProprety(),System.getProprety()设置和获取环境变量

安装mysql数据库

命令行安装

sudo apt-get install mysql-server

手动安装

cp mysql-5.1.51.tar.gz /usr/local/src/
cd /usr/local/src/
groupadd -r mysql
useradd -g mysql -r mysql
gunzip < mysql-5.1.51.tar.gz | tar -xvf -
cd mysql-5.1.51/
./configure –prefix=/usr/local/mysql/
make
make install
cd /usr/local/mysql/
chown -R mysql .
chgrp -R mysql .
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root
cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql.server
./bin/mysqld_safe --user=mysql &
chown -R mysql /usr/local/mysql/var/
/etc/init.d/mysql.server status
/etc/init.d/mysql.server start
/usr/local/mysql/bin/mysql

安装postgreSQL数据库

  • 运行命令
sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4        //其中版本可以自己设定
/usr/lib/postgresql/8.4/ //存放postgresql相关的二进制文件
/usr/lib/postgresql/8.4/bin/ //可执行文件
/usr/lib/postgresql/8.4/lib/ //共享库文件
/etc/postgres/8.4/main/ //存放postgresql配置文文件
/var/lib/postgresql/ //postgres用户的主文件夹
  • 修改PostgreSQL数据库的默认用户postgres的密码
    PostgreSQL数据库默认会创建一个postgres的帐号用户作为数据库的管理员,密码是随机的,所以:

    1. 首先,我们需要重置“postgres”用户的密码。
      命令行如下:
sudo -u postgres psql(或者sudo su postgres -c psql) //运行psql,psql是一个标准的postgressql客户端
postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’; //修改postgres的密码为postgres,不要忘记添加分号(回车后分号之前的sql语句才会立即执行)
postgres=# \q //退出

2.修改了数据库中的密码之后,我们还需要修改linux下的用户 “postgres”的密码:设定成与数据库中postgres帐号相同的密码,即postgres。

sudo passwd -d postgres //删除密码
sudo -u postgres passwd(或者 sudo su postgres -c passwd) //创建密码,然后输入跟之前一样的密码。
  • 修改PostgresSQL数据库配置实现远程访问

首先,我们需要编辑postgresql.conf:

sudo gedit /etc/postgresql/8.4/main/postgresql.conf

现在,我们需要修改“连接和权 限”两行。

改变行:#listen_addresses = ‘localhost’ 修改为:listen_addresses = ‘*’
改变行:#password_encryption = on 修改为:password_encryption = on

保存并关闭gedit。

3、最后一步,我们必须设置谁才可以操作数据服务器,这一 切都是在pg_hba.conf中完成的。

sudo gedit /etc/postgresql/8.4/main/pg_hba.conf

把以下内容添加到 pg_hba.conf底部:
# to allow your client visiting postgresql server
host all all 0.0.0.0 0.0.0.0 md5

重启服务器,以上的配置就生效了
sudo /etc/init.d/postgresql-8.4 restart

4、创建用户和数据库:
使用命令行创建用户和数据库:

sudo -u postgres createuser -D -P mynewuser //-D该用户没有创建数据库的权利,-P提示输入密码,后面的选项都可以省略,命令执行的时候会提示用户选择yes或者no
sudo -u postgres createdb -O mynewuser mydatabase //-O设定所有者为mynewuser

或者使用psql创建用户和数据库:

首先利用psql登录postgresql服务器
sudo -u postgres psql[ -U postgres -h 127.0.0.1] //运行psql,后面[]中的内容可选,用于登录服务器,默认会登录本机

然后在psql程序中创建用户和数据库:用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写:

create user “mynewuser” with password ‘mynewuser nocreatedb;
create database “mydatabase” with owner=mynewuser;

安 装和使用pgAdmin3客户端操作 postgresql数据库
安装图形客户端pgAdmin3,安装命令行
sudo apt-get install pgadmin3

Tomcat安装

下载tomcat包,解压,配置TOMCAT_HOME,即可使用tomcat服务

R语言连接数据库的配置

下载mysql postgresql数据库的jdbc将它们添加到系统的classpath中,然后在R中安装rjdbc包,这样我们就可以通过r语言来访问数据库了。