0
点赞
收藏
分享

微信扫一扫

如何在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

(可左右滑动)


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


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


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

(可左右滑动)


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


[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>#

(可左右滑动)


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


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


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


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

(可左右滑动)


如何在CDSW上分布式运行GridSearch算法_依赖包_04


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


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


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


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

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


2.打开Workbench并启动会话


如何在CDSW上分布式运行GridSearch算法_依赖包_07

如何在CDSW上分布式运行GridSearch算法_依赖包_08


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


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

(可左右滑动)


如何在CDSW上分布式运行GridSearch算法_依赖包_09


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

(可左右滑动)


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


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))

(可左右滑动)


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


4.CDSW运行示例代码


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


如何在CDSW上分布式运行GridSearch算法_依赖包_12


2.查看执行结果


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

如何在CDSW上分布式运行GridSearch算法_依赖包_14


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


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


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


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

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


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实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

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

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


举报

相关推荐

0 条评论