大數據環境下基於R語言的數據挖掘平臺 之 環境配置

爲了用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語言來訪問數據庫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章