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环境搭建与入门实例相关推荐

  1. spark1.6 maven java_Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】...

    前言 本文旨在记录初学Spark时,根据官网快速入门中的一段Java代码,在Maven上建立应用程序并实现执行. 首先推荐一个很好的入门文档库,就是CSDN的Spark知识库,里面有很多spark的从 ...

  2. Spark环境搭建教程

    Spark环境搭建教程 前言 Spark环境搭建-Local-本地模式 准备工作 原理 操作-开箱即用 测试 Spark环境搭建-Standalone-独立集群 原理 操作 测试 Spark环境搭建- ...

  3. 转载 jsonrpc环境搭建和简单实例

    jsonrpc环境搭建和简单实例 一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq  访问密码 6a50 二.新建一个web工程,j ...

  4. java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序

    [Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...

  5. 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 ...

  6. hadoop与spark环境搭建命令简易教程(Ubuntu18.04)

    hadoop与spark环境搭建命令简易教程(Ubuntu18.04) Hadoop 一.single node cluster 二.multi node cluster 三.快速版(远程复制) Sp ...

  7. [Python人工智能] 十六.Keras环境搭建、入门基础及回归神经网络案例

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章详细讲解了无监督学习Autoencoder的原理知识,然后用MNIST手写数字案例进行对比实验及聚类分析.这篇文章 ...

  8. JAVA环境搭建及入门

    Java环境搭建及入门基础语法 Java概述 一 Java语言 背景介绍 1 Java语言背景 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间,进行信息交流沟通的一种特殊语言 Java语言 ...

  9. Appium+Java环境搭建及简单实例

    Appium+Java环境搭建及简单实例 一.下载jdk并配置好环境 二.下载Android-sdk并配置好环境 三.下载Eclipse软件 四.下载Node.js 下载地址:https://node ...

最新文章

  1. Window环境下配置MySQL 5.6的主从复制、备份恢复
  2. PHPStorm不能修改PHP langauge level
  3. 入职体检——项目列表(7项)
  4. Lambda表达式的注意事项【理解】
  5. 【最新合集】编译原理习题(含答案)_8-10语法制导翻译_MOOC慕课 哈工大陈鄞
  6. Microsoft SQL Server 2005 Service Pack 2 已经可以下载
  7. 【渝粤题库】国家开放大学2021春2143西方经济学题目
  8. 为什么Alpha多样性的输入数据会是它?
  9. 为什么说IT科技公司应该留住35岁员工?
  10. 第二十七篇、使用MVVM布局页面
  11. 实验四 lr0分析程序的设计与实现_试验机海外直播丨实现高精度CAE分析实验的材料评价案例技术介绍...
  12. GitHub如何在README.md文件中插入图片
  13. bigsur降级回catalina_big sur怎么降到Catalina,macOS Big Sur降级教程
  14. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
  15. Flutter 2.5 的新特性
  16. 怎样用计算机粉碎文件夹,电脑粉碎文件用什么软件好,怎么彻底粉碎电脑文件...
  17. TikTok API接口,关键词搜索用户
  18. 复合文档学习(六) - 目录Directory
  19. STM32的ETR引脚计数功能
  20. Python+Vue计算机毕业设计H5的豫宛旅游网站v6giy(源码+程序+LW+部署)

热门文章

  1. 红外弱小目标检测:LoG尺度空间
  2. python可以写脚本_Python写一个痒痒鼠脚本
  3. java基础总结-第五部分 (pAq)
  4. ChatGPT:hankeer-chatgpt食用指南详解
  5. XGBOOST Fit 一直显示Kernel死掉
  6. 【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】
  7. 解决Cisco Packet Tracer注册问题
  8. 使用unix的time命令进行简单的计时
  9. 轻松提高搜索能力-实用网站合集
  10. teb_local_planner编译