cdh5.5 RHadoop安装

本文详细介绍了在CentOS 6.4环境下安装配置R语言、RStudio Server及RHadoop的过程,包括必要的环境变量配置和依赖安装,并提供了常见问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装环境

操作系统:CentOS release 6.4  linux集群环境:cdh5.5   hadoop2.6java版本:jdk1.7 R版本:3.3


2.环境安装

2.1 R 环境安装

apt-get update
apt-get install r-base


这种方法是自动安装R语言,也可以去R语言官网下载自行编译安装

安装完后命令行输入R,检验R语言是否安装成功


2.2 Rstudio server 安装

Rstudio server 是R 语言建模一个强大的ide,如果不需要在Rstudio进行代码编写,可以跳过此步。 

下载Rstudio server 包并且安装。 详细见官网:https://www.rstudio.com/products/rstudio/download-server/

$ wget https://s3.amazonaws.com/rstudio-server/rstudio-server-rhel5-0.99.892-x86_64.rpm
$ sudo yum install --nogpgcheck rstudio-server-rhel5-0.99.892-x86_64.rpm

启动Rstudio server 服务

$ rstudio-server start

停止RStudio-server服务

rstudio-server stop

重启RStudio-server服务

rstudio-server restart

其他配置项参考:http://blog.sina.com.cn/s/blog_403aa80a01019uwt.html

服务启动后访问地址为http://[ip地址]:8787/

3 Rhadoop相关R包安装

3.1 R包Linux依赖安装

 在安装R library包前需要安装以下相关依赖编译器等。

yum -y install gcc-gfortran
yum -y install gcc gcc-c++
yum -y install readline-devel
yum -y install libXt-devel

3.2 R包安装

R 中Rhadoop 依赖library安装,进入R 执行一下命令进行安装

install.packages("rJava")
install.packages("reshape2")
install.packages("Rcpp")
install.packages("iterators")
install.packages("itertools")
install.packages("digest")
install.packages("RJSONIO")
install.packages("functional")
install.packages("catool")

rhdfs,rmr2 包安装 ,这两个包不能通过install.packages 安装需要下载gz文件进行安装,安装包地址:https://github.com/RevolutionAnalytics/RHadoop

下载完后,执行以下命令进行安装

R CMD INSTALL "rhdfs_1.0.8.tar.gz"
R CMD INSTALL "rmr2_3.3.1.tar.gz"


R library安装需要切换到root用户下安装,不然出现4.2的问题

3.3 环境变量配置

rhdfs和rmr2需要加载hadoop环境配置,所以这里要配置hadoop环境变量

vi /etc/profile
#java
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export PATH=$JAVA_HOME/bin:$PATH

#rhadoop
export HADOOP_HOME=/usr/lib/hadoop
export HADOOP_CONF_DIR=/usr/lib/hadoop/etc/hadoop
export HADOOP_CMD=/usr/lib/hadoop/bin/hadoop
export HADOOP_STREAMING=/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.6.0-mr1-cdh5.5.0.jar

R 代码加载环境变量

Sys.setenv(HADOOP_CMD="/usr/lib/hadoop/bin/hadoop")
Sys.setenv(HADOOP_HOME="/usr/lib/hadoop/lib")
Sys.setenv(HADOOP_CONF_DIR="/usr/lib/hadoop/etc/hadoop")
Sys.setenv(JAVA_HOME="/usr/java/jdk1.7.0_67-cloudera")
Sys.setenv(HADOOP_STREAMING="/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.6.0-mr1-cdh5.5.0.jar")

重启Rstudio server,Linux配置的环境变量貌似没有加载成功,可能需要重启计算机。当然我不想这么做,可以通过上述R 语言进行加载hadoop环境变量。


3.4Rhadoop 运行测试

hdfs运行测试

Sys.setenv(HADOOP_CMD="/usr/lib/hadoop/bin/hadoop")
Sys.setenv(HADOOP_HOME="/usr/lib/hadoop/lib")
Sys.setenv(HADOOP_CONF_DIR="/usr/lib/hadoop/etc/hadoop")
Sys.setenv(JAVA_HOME="/usr/java/jdk1.7.0_67-cloudera")
Sys.setenv(HADOOP_STREAMING="/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.6.0-mr1-cdh5.5.0.jar")

library("rJava")  
library("rhdfs")
#初始化hdfs
hdfs.init()
hdfs.ls("/user/")


mapreduce 测试,下面是自己编写的一个简单的wordcount代码

test<-"/user/data.txt"

mapreduce(
  input=test,output ="/user/output",
  map = function(.,v){
    keyval(unlist( strsplit( x = v,split =" ")),1)
  },
  reduce = function(k,vs){
    keyval(k,sum(vs))
  },
  input.format = "text",
  output.format = "text"
)

运行结果:


4 安装出现的问题

4.1 hdfs.init()无法初始化

异常问题:

> hdfs.init()
Error in .jnew("org/apache/hadoop/conf/Configuration") : 
  java.lang.UnsupportedClassVersionError: org/apache/hadoop/conf/Configuration : Unsupported major.minor version 51.0

问题原因:当前的jdk 版本与hadoop运行的jdk版本不同导致。hadoop jdk 版本是1.7 ,而当前本地jdk版本是1.6。但是我此时的环境变量配置的是1.7,为什么会出现这个问题呢?是因为cm5.5在安装的时候,会安装多个jdk的版本。一种是外部环境的jdk(cm和cdh运行的Java环境是1.6),一种是内部环境的jdk(hadoop 集群运行环境是1.7)。而他默认使用的是外部环境1.6的jdk。而R 在启动的时候默认加载的是1.6的jdk。所以在hdfs初始化的时候报错。

解决方案:

分析上述原因可以发现只要我们把jdk默认运行的环境修改为1.7。我们就可以解决上述问题。

修改方法如下:

#查看当前默认运行jdk
alternatives --config java
#发现只有jdk1.6,添加jdk1.7版本
sudo update-alternatives –install /usr/bin/java java /usr/java/jdk1.7.0_67-cloudera/bin/java 200
#选择当前默认运行jdk版本
$ alternatives --config java 
共有 2 个程序提供“java”。

  选择    命令
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
 + 2           /usr/java/jdk1.7.0_67-cloudera/bin/java

按 Enter 来保存当前选择[+],或键入选择号码:


4.2 mapreduce 运行出现异常

异常问题:PipeMapRed.waitOutputThreads(): subprocess failed with code 1

问题原因:参考地址http://blog.fens.me/rhadoop-rmr2-pipemapred/

解决方案:在root用户下安装rhadoop,解决上述问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值