• 在Hadoop集群上运行R程序--安装RHadoop


    RHadoop是由Revolution Analytics发起的一个开源项目,它可以将统计语言R与Hadoop结合起来。目前该项目包括三个R packages,分别为支持用R来编写MapReduce应用的rmr、用于R语言访问HDFS的rhdfs以及用于R语言访问HBASE的rhbase。下载网址为https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads

    说明:下面的记录是在安装成功后的总结,中间的过程描述及解决方法可能并不精确(用红色进行了标记),仅供参考。服务器操作系统为centos 5.6。

    一、软件版本

    R 2.13.1、Hadoop集群(CDH3)、JDK1.6。

    二、安装节点

    其中rhbase和rhdfs在Hadoop集群的namenode上安装即可,而rmr则需要在集群上的每一个节点上安装。

    三、安装

    由于网络限制,只能先将源文件下载到本地,然后通过shell命令R CMD INSTALL ‘package_name’来安装。

    a)         首先安装rhdfs。该包依赖于包 rJava。所以还需要先下载rJava的源代码并安装。

    R CMD INSTALL ‘rJava_0.9-3.tar.gz’

    R CMD INSTALL ‘rhdfs_1.0.1.tar.gz’

    在执行安装rJava时,可能会失败,提示错误信息“checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details.”,这可能是由于jdk的版本问题造成的,建议安装jdk1.6。

    b)         安装rmr。该包依赖于包RJSONIO、 itertools 、digest,而包itertools 又依赖于iterators。

    R CMD INSTALL ‘iterators_1.0.5.tar.gz’

    R CMD INSTALL ‘itertools_0.1-1.tar.gz’

    R CMD INSTALL ‘RJSONIO_0.96-0.tar.gz’

    R CMD INSTALL ‘digest_0.5.1.tar.gz’

    R CMD INSTALL ‘rmr_1.1.tar.gz’

    c)         安装rhbase(参见https://github.com/RevolutionAnalytics/RHadoop/wiki/rhbase)。在安装rhbase之前,还需要安装Thrift库,建议安装Thrift 0.6.1版本,下载网址为http://thrift.apache.org/。详细的安装步骤如下:

                             i.              在centos系统下输入shell命令sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel lib-devel python-devel ruby-devel,安装一些Thrift相关的工具或库。由于网络连接的问题,在尝试的时候并不能完全安装,个人觉得也没有必要完全安装,只需保证g++ 3.3.5以上版本、boost 1.33.1以上版本即可。

                           ii.              解压并安装Thrift。

    tar -zvxf thrift-0.6.1.tar.gz

    cd thrift-0.6.1

    ./configure --with-boost=/usr/include/boost JAVAC=/usr/jdk1.6/bin/javac

    make

    make install

    其中—with-boost及JAVAC的值根据服务器的实际情况进行修改(不确定javac的设置是不是必须的)。

                          iii.              设置环境变量de>PKG_CONFIG_PATHde>de>。de>

    /etc/profile中输入

    export de>PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/de>de>(并通过命令de>de>souce /etc/profilede>de>命令使得环境变量生效)。de>之后输入shell命令de>pkg-config --cflags thriftde>de>验证de>pkg-config路径是否设置正确,返回结果若为de>-I/usr/local/include/thriftde>de>则表示成功。de>

                          iv.              复制library文件。

    cp /usr/local/lib/libthrift.so.0 /usr/lib

                           v.              安装rhbase。

    R CMD INSTALL 'rhbase_1.0.1.tar.gz'

    四、验证并测试

    R命令行中输入library(rmr)、library(rhdfs)、library(rhbase),载入成功即表示安装成功。

    测试用例:利用mapreduce实现和函数sapply相同的功能。

    de>普通R代码:de>
    
    de>groups = rbinom(32, n = 50, prob = 0.4)de>
    
    de>tapply(groups, groups, length)
    de>

    利用mapreduce实现的R代码:de>
    de>

    de>groups = to.dfs(groups)de> (为保证相同的数据,仍然利用了之前的groups)

    de>from.dfs(mapreduce(input = groups, map = function(k,v) keyval(v, NULL), reduce = function(k,vv) keyval(k, length(vv))))de>

    五、更多参考网址:

    https://github.com/RevolutionAnalytics/RHadoop/wiki/Tutorial

    https://github.com/RevolutionAnalytics/RHadoop/wiki/Writing-composable-mapreduce-jobs

    https://github.com/RevolutionAnalytics/RHadoop/wiki/Efficient-rmr-techniques

  • 相关阅读:
    Android Camera 使用小结
    Android 调用堆栈跟踪
    读取文件
    Android USB大容量存储时SD卡状态监听(转)
    Setting up PhoneGap on Ubuntu for Android app development
    python单元测试
    python数据库备份
    python多线程多进程
    python面向对象编程和类
    python异常处理及Url编码
  • 原文地址:https://www.cnblogs.com/zhp2016/p/5998394.html
Copyright © 2020-2023  润新知