如何在CDSW上分布式运行GridSearch算法

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的

在前面的文章Fayson介绍了《如何在CDH中使用PySpark分布式运行GridSearch算法》,本篇文章Fayson主要介绍如何在CDSW上向CDH集群推送Gridsearch算法进行分布式计算。

  • 内容概述

1.环境准备

2.CDSW运行环境及示例代码准备

3.CDSW运行示例代码

4.总结

  • 测试环境

1.CM和CDH版本为5.13.1

2.Redhat7.2

3.Spark2.2.0

4.CDSW1.2.2

  • 前置条件

1.CDH集群正常运行

2.CDSW集群已部署则正常运行

2.环境准备

1.在CDH集群的所有节点执行如下命令安装OS依赖包

[root@ip-172-31-6-83 shell]# yum -y install gcc python-devel

(可左右滑动)

2.在CDH集群的所有节点安装scikit-learn的python依赖

[root@cdh1 ~]<20180716 15:24:42># pip install scikit-learn

(可左右滑动)

[root@cdh1 ~]<20180716 15:06:25># pip show scikit-learn
Name: scikit-learn
Version: 0.18.1
Summary: A set of python modules for machine learning and data mining
Home-page: http://scikit-learn.org
Author: Andreas Mueller
Author-email: amueller@ais.uni-bonn.de
License: new BSD
Location: /opt/cloudera/parcels/Anaconda-4.3.1/lib/python2.7/site-packages
Requires: 
[root@cdh1 ~]<20180716 15:06:32>#

(可左右滑动)

注意:这里需要在集群的所有节点安装,GridSearch算法分布式计算时会调用当前节点scikit-learn依赖。

3.在集群所有节点安装spark-learn的python依赖包

[root@cdh1 ~]<20180716 15:34:21># pip install spark-sklearn

(可左右滑动)

注意:如果你的spark作业以cluster模式提交则必须确保所有节点安装了spark-sklearn依赖包,如果以client模式提交则只需在提交的节点上安装spark-learn依赖包即可。

3.CDSW运行环境及示例代码准备

1.登录CDSW,创建一个pyspark工程

2.打开Workbench并启动会话

3.在对话窗口执行pip install命令安装spark-sklearn和scikit-learn依赖包

!pip install scikit-learn
!pip show scikit-learn

(可左右滑动)

!pip install spark-sklearn
!pip show spark-sklearn

(可左右滑动)

4.在pyspark_gridsearch工程下创建gridsearch.py文件,编写pyspark代码示例代码,内容如下

# -*- coding: utf-8 -*-

from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from spark_sklearn.grid_search import GridSearchCV
from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("PySpark_GridSearch") \
    .getOrCreate()

# Loading the Digits dataset
digits = datasets.load_digits()

# To apply an classifier on this data, we need to flatten the image, to
# turn the data in a (samples, feature) matrix:
n_samples = len(digits.images)
X = digits.images.reshape((n_samples, -1))
y = digits.target

# 将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)

# 设置gridsearch的参数
tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4],
                     'C': [1, 10, 100, 1000]},
                    {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}]

#设置模型评估的方法.如果不清楚,可以参考上面的k-fold章节里面的超链接
score = 'precision'
#构造这个GridSearch的分类器,5-fold
svr = svm.SVC()
clf = GridSearchCV(spark.sparkContext, svr, tuned_parameters, cv=5, scoring='%s_weighted'% score)

#只在训练集上面做k-fold,然后返回最优的模型参数
clf.fit(X_train, y_train)
#输出GridSearch计算结果
clf.cv_results_

#在测试集上测试最优的模型的泛化能力.
y_true, y_pred = y_test, clf.predict(X_test)
print(classification_report(y_true, y_pred))

(可左右滑动)

4.CDSW运行示例代码

1.在Session启动会话创建,打开gridsearch.py文件,点击执行按钮

2.查看执行结果

3.查看Spark作业执行情况,点击“Spark UI”

可以看到该作业在CDH集群的各个节点上进行运算,有多个Executor并行计算

5.总结

1.使用pyspark分布式运行gridsearch算法,需要在CDH集群的所有节点安装scikit-learn的Python依赖包

2.如果使用spark client模式提交作业则只需要在当前节点安装spark-sklearn依赖包,如果使用cluster模式提交Spark作业则需要将集群所有节点都安装spark-sklearn依赖包。

3.在CDSW上运行pyspark代码代码同样也需要安装scikit-learn和spark-sklearn依赖包。

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏点滴积累

geotrellis使用(十八)导入多波段Tiff、读取多波段Tile

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 多波段数...

4045
来自专栏Java成神之路

hadoop_学习_00_资源帖

2.Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0

842
来自专栏windealli

同步异步与阻塞非阻塞

标题有点简单粗暴,直接用了本文要介绍的几个概念。本来想取个高大上一点的标题,但是感觉主题不那么明了。

47123
来自专栏琦小虾的Binary

Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9

Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9 当前两个手头有两个项目都是都需要在ARM板中使用OpenCV,...

1.2K9
来自专栏微服务生态

SEDA架构模型

特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。

1523
来自专栏吉浦迅科技

PG-Storm:让PostgreSQL在GPU上跑得更快

PostgreSQL的扩展PG-Storm允许用户自定义扫描方式,将CPU的密集型工作负载转移到GPU处理,从而利用GPU强大的并行执行能力完成数据任务。在处理...

3756
来自专栏Snova云数仓

gpexpand分析

具体包括不限于以下内容: 创建用户名,设置环境变量,创建数据目录,安装greenplum软件包,解压目录路径。

3.4K6
来自专栏Spark学习技巧

Spark度量系统相关讲解

Spark的Metrics System的度量系统,有两个部分组成:source,sink,创建的时候需要制定instance。度量系统会周期的将source的...

4656
来自专栏人工智能LeadAI

在NVIDIA Jetson TX2上安装TensorFlow

刷机的目的是把Ubuntu操作系统和JetPack SDK安装到Jetson TX2上。刷机的操作按照官方教程即可,比较容易。这个过程中有一点需要注意:Jets...

3012
来自专栏数据和云

内存为王:DBIM RAC Share Nothing架构的挑战和解决方案

陈焕生 Oracle Real-World Performance Group 成员,senior performance engineer,专注于 OLTP...

2805

扫码关注云+社区

领取腾讯云代金券