大數據平台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

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM