Spark 讨论内容及架构
Spark MapReduce
- 使用Spark transformations actions 操作构建代码
- 使用配置信息进行任务分发,不关注其具体调度过程
Jupyter 应该架于Spark集群上层,调用Spark完成MapReduce操作后返回结果
IMG_20170627_1511021.jpggoldersgreen 后端服务可以调用Spark
- MLlib: 机器学习库,提供大量机器学习工具
- SQL: 提供了查询结构化数据及计算结果等信息的接口
- Streaming: 实时数据流的处理
MLlib
- 特征的提取,转化和选择
特征提取:TF-IDF,Word2Vec, CountVectorizer
特征变换:Tokenizer, StopWordsRemover, n-gram,Binarizer
特征选择: VectorSlicer, RFormula, ChiSqSelector
局部敏感哈希:Locality Sensitive Hashing operations and alorithms - 分类和回归
分类:Logistic Regression, Decision tree classifier,Random forest classifier
回归:Linear regression, Generalized linear regression,Decision tree regression - 聚类
k - means,Latent Dirichlet allocation,高斯混合模型(GMM) - 协同过滤
- 超参数调整
CrossValidator, TrainValidationSplit
CrossValidator(本机示例程序)
设想
用户在机器学习是调用某个算法,通过jupyter连接到Spark完成该算法的分布式计算,反馈结果。 算法分布式计算需要预先写好Spark的python代码。
计划
研究关于超参数调整知识
实现超参数调整范例
Spark TensorFlow
-
using Spark’s built-in broadcasting mechanism
https://databricks.com/blog/2016/01/25/deep-learning-with-apache-spark-and-tensorflow.html
自己构建代码实现,需要对Spark和机器学习算法有深度的理解才能实现。
http://go.databricks.com/hubfs/notebooks/TensorFlow/Test_distributed_processing_of_images_using_TensorFlow.html
演示了对于不同数量的神经元,绘制关于学习率的测试性能,代码实现较为复杂,可能自己Spark, tensorflow,机器学习不够了解 -
TensorFlowOnSpark 雅虎今年2月份开源的框架
https://github.com/yahoo/TensorFlowOnSpark
提供了一个范例,通过部分代码替换,实现distributed MNIST training
https://github.com/yahoo/TensorFlowOnSpark/wiki/GetStarted_standalone
sparkmagic
interactively working with remote Spark clusters through Livy, a Spark REST server, in Jupyter notebooks
通过jupyter 发送restful api 控制集群
结论: 暂时没有应用到我们项目的价值(优先级低)
具体计划
确定好架构后研究Spark RDD操作,将需要实现的model进行map reduce操作
同时研究MLlib机器学习库,提供额外的机器学习方法