Spark环境搭建与入门实例
1目的及要求
基于Spark平台,使用Spark ML库实现数据聚类分析。使用Synthetic Control Chart Time Series数据synthetic_control.data,数据包括600个数据点(行),每个数据点有60个属性,详细信息见:
http://archive.ics.uci.edu/ml/databases/synthetic_control/
目标:将600个数据点聚为多个类,默认输出为8个类。输入文件为synthetic_control.data,编写Spark分析算法实现600个点的聚类,输出8个聚类质点及包含的点。
2实验环境
本实验基于虚拟机环境,所采用的软件及其版本如下:
虚拟机软件:Oracle VirtualBox 5.2.6
虚拟机操作系统:Ubuntu 16.04.1 LTS - 64 bit
Java环境:JDK-1.8
Maven工具:Maven 3.5.4
Spark平台:spark-2.1.2-bin-hadoop2.7
3实验内容与步骤
3.1实验环境搭建
3.1.1搭建Java开发环境
1)键入如下命令将jdk软件包解压至指定目录:
tar -zxvf jdk-8u181-linux-x64.tar.gz -C your_java_home
2)键入如下命令编辑profile文件:
sudo vim /etc/profile
设置jdk环境变量,在profile文件的末尾添加如下内容:
export JAVA_HOME=your_java_home
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
需要注意的是,设置CLASSPATH环境变量时,等号后面有个点,代表当前目录。
3)键入如下命令,让环境变量立即生效:
source /etc/profile
4)检查jdk是否安装好,键入如下命令:
java -version
结果如下图所示:
3.1.2搭建Spark环境
Spark也有多种运行模式,现简单介绍如下:
Local模式:本地单线程方式运行,主要用于开发调试Spark应用程序;
Standalone模式:利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构。若想避免单点故障可以采用ZooKeeper实现高可靠性(High Availiabilty);
Mesos模式:基于资源管理框架Apache Mesos,该集群运行模式将资源管理交给Mesos,Spark只负责任务调度与计算;
YARN模式:基于Hadoop资源管理器Yarn,资源管理交给Yarn而Spark只负责任务调度与计算部分。该模式将Spark与Hadoop生态圈结合起来,在实际应用中较为流行。
这里搭建的是Standalone模式,过程如下:
1)键入如下命令将Spark软件包解压至指定目录:
tar -zxvf spark-2.1.2-bin-hadoop2.7.tar.gz -C your_spark_home
2)键入如下命令,给spark添加环境变量:
vim your_spark_home/conf/spark-env.sh
在spark-env.sh文件中添加的环境变量如下图所示:
3)修改spark配置文件
键入如下命令,修改slave配置文件:
vim your_spark_home/conf/slaves
在slaves配置文件中添加一行内容localhost,如下图:
4)键入如下命令,启动spark:
your_spark_home/sbin/start-all.sh
启动完毕后,使用jps命令可以查看当前运行的Java进程,如下图所示:
可看到多了Master和Worker两个进程,剩余的进程是Hadoop进程,由于使用了HDFS,故预先启动了Hadoop。
Spark启动后,在浏览器中输入如下地址,可以进入spark的管理界面:
http://localhost:8080/
如下图所示:
3.2实验步骤
1)准备可执行jar文件
根据实验要求,使用Java语言编写程序,这里使用了Java平台上流行的项目管理工具Maven来构建Spark程序。
首先使用如下命令生成一个项目框架:
mvn archetype:generate -DgroupID=kmeans -DartifactID=kmeans
然后在生成的kmeans/kmeans/src/main/java/kmeans文件夹下编写Java程序源文件kmeans.java。
由于使用了Spark的类库,在pom.xml文件中添加项目依赖,如下图所示:
程序编写完成后,使用如下命令编译项目:
mvn compile
编译完成后,使用如下命令将程序进行打包:
mvn package
将在target目录生成kmeans-1.0-SNAPSHOT.jar文件。
2)上传输入文件到HDFS
在hdfs启动后,首先在hdfs中创建目录:
your_hadoop_path/bin/hdfs dfs -mkdir -p /kmeans/input
然后使用如下命令将欲处理的文件上传到hdfs:
your_hadoop_path/bin/hdfs dfs -put synthetic_control.txt /kmeans/input
3)执行程序
在准备好可执行jar文件和待处理的输入文件后,首先程序至spark平台运行:
your_spark_path/bin/spark-submit --class kmeans.kmeans --master local target/kmens-1.0-SNAPSHOT.jar
4实验结果与数据处理
4.1 Spark ML库
本实验的目的是使用Spark ML库实现600个数据点的聚类分析,首先对Spark ML库进行介绍。
Spark ML库提供了常用机器学习算法的实现,包括聚类,分类,回归,协同过滤,维度缩减等。通过使用ML库,可以让基于海量数据的机器学习变得更加简单,开发者无需自己实现常用的机器学习算法,只需有Spark基础并且了解机器学习算法的原理,通过选取相关参数并调用相应的 API 就可以实现基于海量数据的机器学习过程。
因为通常情况下机器学习算法参数学习的过程都是迭代计算的,即本次计算的结果要作为下一次迭代的输入,这个过程中,如果使用MapReduce,我们只能把中间结果存储到磁盘,然后在下一次计算的时候重新读取,显而易见这会影响迭代算法的效率。由于Spark基于内存进行计算,故天然地适应于迭代式计算。
4.2 K-means 聚类算法
聚类分析是一个无监督学习过程, 一般是用来对数据对象按照其特征属性进行分组,经常被应用在客户分群,欺诈检测,图像分析等领域。
K-means 算法也是一个迭代式的算法,其主要步骤如下:
第一步,选择 K 个点作为初始聚类中心。
第二步,计算其余所有点到聚类中心的距离,并把每个点划分到离它最近的聚类中心所在的聚类中去。在这里,衡量距离一般有多个函数可以选择,最常用的是欧几里得距离 (Euclidean Distance), 也叫欧式距离。
第三步,重新计算每个聚类中所有点的平均值,并将其作为新的聚类中心点。
最后,重复 (二),(三) 步的过程,直至聚类中心不再发生改变,或者算法达到预定的迭代次数,又或聚类中心的改变小于预先设定的阀值。
在实际应用中,K-means算法中聚类个数K的选择往往要依赖于对待处理数据集背景知识的了解,本实验中预先指定了聚类个数为8,因此不需再对数据集进行提前处理。
4.3实验结果
程序提交至Spark平台运行后,会在终端中打印出很多程序运行信息,提交的用户程序的输出也夹杂在其中,输出的聚类质点如下图所示:
聚类质点共8个,图中的是其中一个聚类质点的信息。
Spark环境搭建与入门实例相关推荐
- spark1.6 maven java_Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】...
前言 本文旨在记录初学Spark时,根据官网快速入门中的一段Java代码,在Maven上建立应用程序并实现执行. 首先推荐一个很好的入门文档库,就是CSDN的Spark知识库,里面有很多spark的从 ...
- Spark环境搭建教程
Spark环境搭建教程 前言 Spark环境搭建-Local-本地模式 准备工作 原理 操作-开箱即用 测试 Spark环境搭建-Standalone-独立集群 原理 操作 测试 Spark环境搭建- ...
- 转载 jsonrpc环境搭建和简单实例
jsonrpc环境搭建和简单实例 一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq 访问密码 6a50 二.新建一个web工程,j ...
- java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序
[Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...
- Spark认知Spark环境搭建
Spark认知&Spark环境搭建 1 Spark认知篇 1.1 什么是Spark? 1.2 Spark 特点 1.2.1 快 1.2.2 易用 1.2.3 通用 1.2.4 兼容性 1.3 ...
- hadoop与spark环境搭建命令简易教程(Ubuntu18.04)
hadoop与spark环境搭建命令简易教程(Ubuntu18.04) Hadoop 一.single node cluster 二.multi node cluster 三.快速版(远程复制) Sp ...
- [Python人工智能] 十六.Keras环境搭建、入门基础及回归神经网络案例
从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章详细讲解了无监督学习Autoencoder的原理知识,然后用MNIST手写数字案例进行对比实验及聚类分析.这篇文章 ...
- JAVA环境搭建及入门
Java环境搭建及入门基础语法 Java概述 一 Java语言 背景介绍 1 Java语言背景 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间,进行信息交流沟通的一种特殊语言 Java语言 ...
- Appium+Java环境搭建及简单实例
Appium+Java环境搭建及简单实例 一.下载jdk并配置好环境 二.下载Android-sdk并配置好环境 三.下载Eclipse软件 四.下载Node.js 下载地址:https://node ...
最新文章
- 敏捷开发中如何做好Sprint规划?
- pandas读写结构化数据(read_csv,read_table, read_excel, read_html, read_sql)
- 团体程序设计天梯赛-练习集-L1-039. 古风排版
- 听易中天品三国---看孔融,杨修之死
- 数据基本类型以及相关举例
- P5135-painting【组合数学】
- python每隔30s检查一次_用Python写一个“离线语音提示器”来提醒我们别忘记了时间...
- 【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集
- python列表去重不改变顺序_Python列表中去重的多种方法
- linux中vim查看最后五行命令,Linux系统中Vi常用命令及高级应用
- Java基础学习总结(139)——Java8 Stream之Stream接口入门简介
- lua搭建ui_LTUI, 一个基于 lua 的跨平台字符终端 UI 界面库
- 谷粒学院-第二天笔记
- Java传智播客基础班百度云分享,详解系列文章
- python系列教程176——函数调用
- dh算法 理论依据_dh算法(dh算法原理)
- python爬虫qq付费音乐_Python爬虫实战之爬取QQ音乐数据!QQ音乐限制太多了
- win7 旗舰版激活工具(附件下载)
- m4s格式转换mp3_简单的amr转换mp3音频格式转换方法
- Maya2022和C4D哪个更好用?
热门文章
- 网络问卷调查js实现代码
- 经典又实用的零中频接收机的技术解决方案
- 2021年5月30日自由写作(14)——最近的失败,还有两周的Solidworks建模情况
- 趣味数学:赚了多少和两只火鸡
- 延时1us程序12mhz晶振c语言,51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)...
- 【电源专题】什么是AC/DC转换器
- 【NewTek Connect】Studio Monitor无法获取NewTek Connect内容的问题
- flash与字符串:字符串与属性
- mysql data目录 清空_Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~...
- java计算机毕业设计优课网设计与实现源码+数据库+系统+lw文档+部署