zoukankan      html  css  js  c++  java
  • 大数据平台R语言web UI应用架构 设计与开发

    1. 系统拓扑图

    在日常业务分析中,R是非常常用的分析工具,而当数据量较大时,用R语言需要需用更多的时间来完成训练模型,spark作为大规模数据处理框架,采用内存计算,可以短时间内完成大量的数据的处理及计算模型,但缺点是不能图形展示,R语言的sparkly则提供了R语言和Spark的接口,实现了在数据量大的情况下,应用Spark的快速数据分析和处理能力结合R语言的图形化展示功能,方便业务分析,模型训练。

    但是要想使多人同时共享R和Spark,还需要其他的相关组件,下图展示了所有相关的组件及应用:

    2. 安装方法

    • 2.1 Rstudio-Server简介及安装方法

    RStudio是R语言开发中的利器,是一个IDE集成环境。RStudio Server版本提供了web的功能,可以安装远程计算机,通过web进行访问,支持多用户.

    安装完成后,如果顺利可登录 http://ip地址:8787 访问Rstudio Web客户端界面,如果遇到问题,请查看博主下一篇关于常见问题的解决方案

    • 2.2 sparklyr包的简介及安装方法

    sparkly包是由Rstudio公司发布的,用于接口Spark大数据平台的,实现R与Spark的连接,sparklyr包提供了一个完整的dplyr后端,可筛选并聚合Spark数据集,接着在R中实现分析与可视化,利用Spark的MLlib机器学习库在R中实现分布式机器学习算法,同时可以创建一个扩展,用于调用Spark API,并为Spark的所有包集提供了一个接口。

    sparkyr的安装方法

    • 2.3 shiny Server简介及安装方法

    在R界面安装shiny包

    install.packages('shiny', repos=‘https://cran.rstudio.com/')

    wget https://download3.rstudio.org/centos5.9/x86_64/shiny-server-1.5.1.834-rh5-x86_64.rpm

    sudo yum install --nogpgcheck shiny-server-1.5.1.834-rh5-x86_64.rpm

    启动与关闭 shiny-server

    start shiny-server         # 启动

    stop shiny-server      # 停止

    restart shiny-server      # 重启

    status shiny-server      #查看状态  

    reload shiny-server      #不中断服务的前提下 更新加载配置项

    登陆web界面查看运行情况

    http://10.211.55.16:3838/   默认端口时3838,可以在配置文件(/etc/shiny-server/shiny-server.conf)中修改

     

     

     

     

    3. 使用说明

    • 3.1 spark的连接方法

    <本地模式>

    如果只是在本机Rstudio使用,可以在本地下载spark,并调用本地local模式

    library(sparklyr)

    spark_install(version = "1.6.2")

    sc <- spark_connect(master = “local”, version = ‘1.6.2’)

    <yarn模式>

    - 简单的配置方法:

    library(sparklyr)

    library(dplyr)

    sc <- spark_connect(master = "spark://10.211.55.18:7077",spark_home = "/home/hive/spark/")

    - 详细的配置方法:

    library(sparklyr)

    Sys.setenv(SPARK_HOME = "/home/ctsats/spark-1.6.1-bin-hadoop2.6")

    Sys.setenv(HADOOP_CONF_DIR = '/etc/hadoop/conf.cloudera.hdfs')

    Sys.setenv(YARN_CONF_DIR = '/etc/hadoop/conf.cloudera.yarn')

    config <- spark_config()

    config$spark.executor.instances <- 4

    config$spark.executor.cores <- 4

    config$spark.executor.memory <- “4G"

    sc <- spark_connect(master="yarn-client", config=config)

    • spark连接方法与参数解析

     

    spark_connect(master, spark_home = Sys.getenv("SPARK_HOME"),
    method = c("shell", "livy", "test"), app_name = “sparklyr",
    version = NULL, hadoop_version = NULL, config = spark_config(),
    extensions = sparklyr::registered_extensions())

    spark_connection_is_open(sc)

    spark_disconnect(sc, ...)

    spark_disconnect_all()

     

    参数

    参数说明

    master

    连接Spark 集群使用 url作为参数

    sc <- spark_connect(master = "spark://10.211.55.18:7077",spark_home = "/home/hive/spark/")

    连接本地(使用spark_install)安装spark使用 ”local”模式

    sc <- spark_connect(master = “local”, version = ‘1.6.2’)

    spark_home

    设置spark的安装路径,这里如果指定安装spark_home,就不要指定version这个参数,因为version参数指定,会使用本地通过spark_install安装的spark路径,造成错误

    method

    这个参数用来设置连接spark的方法,目前只实现了shell模式

    app_name

    应用的名字,用在Spark集群中显示

    hadoop_version

    只用于local模式

    config

    连接Spark的通用设置,详见spark_config参数

    extensions

    可用于连接的扩展包,默认全部都可以( sparklyr::register_extension

    sc

    一个spark链接

    其他参数

    这里暂时未用

      spark_config(file = "config.yml", use_default = TRUE)

       

    参数

    参数说明

    file

    配置文件的名字

    use_default

    默认使用spark_home构建时默认参数

    spark_install(version = NULL, hadoop_version = NULL, reset = TRUE,

      logging = "INFO", verbose = interactive())

    spark_uninstall(version, hadoop_version)

    spark_install_dir()

    spark_install_tar(tarfile)

    spark_installed_versions()

    spark_available_versions()

     

    参数

    参数说明

    version

    安装spark的版本,可以用 spark_available_versions 查看支持的版本

    hadoop_version

    安装hadoop的版本,可以用 spark_available_versions 查看支持的版本

    reset

    尝试恢复默认设置

    logging

    设置日志等级,支持选项:"WARN", "INFO"

    tarfile

    安装本地包

    其他具体参考如下链接:

    http://spark.rstudio.com/reference/index.html

    sparkly主要实现dplyr,ML,Extensions三个接口,下面主要介绍各个接口的功能:

       

    • 3.2 dply的使用说明

    dplyr是一个R接口,用于处理R内部或外部数据,dplyr使R用户操作数据更便捷,连续,高效。应用dplyr操作Spark DataFrames,你可以:

    选择,过滤,聚合数据(Select, filter, and aggregate)

    使用窗口功能(Use window functions ),e.g. for sampling

    表连接(Perform joins on DataFrames)

    采集数据(Collect data from Spark into R)

    在dplyr中,状态可以通过管道被连接(定义方法%>%)

    • 3.3 ML的使用说明

    sparklyr提供了一个Spark机器学习(spark.ml package)接口,与dplyr接口一样,你可以方便的在Spark创建和训练机器学习模型,并在R中分析应用

    sparklyr 提供了三个相似的函数,用于在Spark进行机器学习

       机器学习算法: Machine learning algorithms for analyzing data (ml_*)

       特征提取与转换: Feature transformers for manipulating individual features (ft_*)

       操作spark DataFrame: Functions for manipulating Spark DataFrames (sdf_*)

    应用Sparklyr大致用如下流程组成:

      通过sparklyr dplyr接口,执行SQL查询接口

      通过 sdf_* and ft_*函数生产新的的列或分区数据集

      从 ml_*方法选择合适的机器学习算法为数据建模

      验证模型的质量(准确度),并用它对新的数据进行预测

      应用R进行可视化分析并进行深度分析

       

      • 3.4 Extensions的使用说明

    sparklyr提供了dplyr与spark DataFrames接口,同时提供了一个R语言与spark机器学习包的接口,然而,因为Spark是一个通用集群计算系统,其他接口可通过扩展工具创建自己的R接口。

    举例1:

    library(sparklyr)

    # 读textfile RDD 这里的类型为list

    rdd_collect <- function(sc, file) {

      spark_context(sc) %>% 

        invoke("textFile", file, 1L) %>% 

    }

    a <- rdd_collect(sc, “/Users/hduser/test.txt”)

    # 查看a的数据类型,我们知道spark scala中该方法生成RDD类型,但是R语言中数据类型没有Rdd,所以这里生成list类型

    class(a) 

    [1] "list"

     其他扩展方法待大家自己扩展挖掘,方法参见:

      http://spark.rstudio.com/extensions.html#introduction

      

  • 相关阅读:
    数据结构与算法
    android vitamio的坑
    Fragment的坑
    scrollview里面嵌套listview的坑
    关于微信小程序的tabbar
    Intent初级学习
    HDU 4562 守护雅典娜
    SGU 542 Gena vs Petya
    [二] EditText and Button
    A Data Structure for Dynamic Trees
  • 原文地址:https://www.cnblogs.com/bonnienote/p/6243018.html
Copyright © 2011-2022 走看看