大数据平台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
大数据平台R语言web UI应用架构 设计与开发的更多相关文章
- 大数据之R语言速成与实战
什么是R语言? R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明.其词法和语法分别源自Scheme和S语言. R定义:一个能够自有有效的用于统计计算和绘图的 ...
- 经典书单、站点 —— 大数据/数据分析/R语言
1. 科普.入门 <大数据智能>,刘知远.崔安顺等著: 特色:系统,宏观和全面: 2. R 语言站点 http://langdawei.com/:R 语言数据采集与可视化:
- 大数据基础--R语言(刘鹏《大数据》课后习题答案)
1.R语言是解释性语言还是编译性语言? 解释性语言 2.简述R语言的基本功能. R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...
- 【大数据技术】HBase与Solr系统架构设计
如何在保证存储量的情况下,又能保证数据的检索速度. HBase提供了完善的海量数据存储机制,Solr.SolrCloud提供了一整套的数据检索方案. 使用HBase搭建结构数据存储云,用来存储海量数据 ...
- Spark项目之电商用户行为分析大数据平台之(九)表的设计
一.概述 数据设计,往往包含两个环节: 第一个:就是我们的上游数据,就是数据调研环节看到的项目基于的基础数据,是否要针对其开发一些Hive ETL,对数据进行进一步的处理和转换,从而让我们能够更加方便 ...
- 写论文,没数据?R语言抓取网页大数据
写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...
- HDP 大数据平台搭建
一.概述 Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hiv ...
- CentOS7部署CDH6.0.1大数据平台
Cloudera’s Distribution Including Apache Hadoop,简称“CDH”,基于Web的用户界面,支持大多数Hadoop组件,包括HDFS.MapReduce.Hi ...
- 朝花夕拾之--大数据平台CDH集群离线搭建
body { border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body ...
随机推荐
- Asp.net使用代码修改配置文件的节点值
使用代码修改配置文件的方法: 1.打开配置文件写入的权限 2.先按节点名称长到要修改的节点,然后删除,紧接着将有新值的节点添加回去 3.关闭配置文件写入的权限 修改Appsetting节点的值,修改其 ...
- 微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
微信小程序上传图片的时候,如果是多图片上传,一般都是直接用一个循环进行wx.uploadFile 这个在电脑上面测试与苹果手机上面都不会有什么问题 但当用安卓测试的时候,你会发现小程序会提示一个the ...
- Android 下进行单元测试 Test run failed:Instrumentation run failed due to 'java.lang.ClassNotFoundException'
废话不说,一直报错.网上介绍的都是缺少如下声明之类. 但注意的是工程配置是导出junit包, 路径为 project上右键 --> properties -> java build pa ...
- java设计模式--简单工厂模式
简单工厂设计模式 工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式.它定义一个用于创建对象的接口,由子类决定实例化哪一个类. 核心知识点如下: (1) 大 ...
- Hbase随笔
大数据时代的数据量是超大规模的,传统的关系数据库已经很难存储和管理这些数据了,为了存储海量数据,我们有了HDFS,它可以把成千上万台服务器上的硬盘聚集成一块超级大的硬盘,为了让这些数据产生价值,我们有 ...
- "+" 是怎样连接字符串的?
关于“+”运算符对字符串的连接,不同的平台在实现上可能会略有不同. 1. Oracle JDK1.7 当使用“+”对字符串进行连接时,会创建一个临时的StringBuilder对象,该对象调用appe ...
- Intent组件的传参应用
Intent是要执行的操作的抽象描述 可以在startActivity.startService等方法中使用 最为常见的用法是在Activity之间传递数据 跳转并传值: Intent intent= ...
- cent7内核升级4.9
一.手动档 手动档就是从源码开始编译内核安装,好处是可以自己选择任意版本的内核,缺点就是耗时长,编译安装消耗系统资源 1.1.获取 kernel 源码 这世界上最伟大的 Linux 内核源码下载地址是 ...
- FUND
The Shaanxi Natural Science Plan Project of China Grant NO.: 2014JM8322
- 初学python里的yield send next
今天看书的时候突然看到这个想起来一直没有怎么使用过send和next试了一下 发现了一个诡异的问题 import math def get_primes(start): while 1 : if is ...