当前课程知识点:高级大数据系统 >  In-memory Processing >  Experiment in Spark >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

我们刚刚介绍了这个spark

那么在真实的一个集群上

部署了spark之后

我们怎么样在上面

去运行一个真实的

数据处理任务

让我们通过一些实际的操作

给大家介绍这件事情

那么在spark上

去运行一个真实的程序

大概分成几个步骤

第一个步骤就是

说我们要准备数据

和我们在spark上运行数据

运行一个程序实际上是类似的

我们需要把这个程序

放到分布式文件系统

或者是放到其它hadoop

这个spark能够读取的这样一个数据源上

然后我们需要去通过

这些分布式文件系统

来生成最初的RDD

大家回想

在spark里面

我们的数据处理实际上

是基于RDD的

基于RDD的变换

基于RDD的action

然后我们会去对原生的这些

RDD进行transformation

进行一些形变

比如说map

比如说flat map

或者说是reduceByKey

然后有了这一步之后

我们会去做action

我们最终想要它输出

我们可以action

让它输出到文件

我们可以action

让它输出到桌面

最后我们会去

查看我们的结果

如果结果不正确

我们需要迭代

如果结果正确

我们需要进一步

进行持续化的操作

或者说是反复进行

这个数据的查询

我们来看看这几步

在spark的这种实际代码的编写当中

它是怎么样完成的

准备数据

那么准备数据

我们在之前已经介绍过

怎么样从本机把数据

复制到分布式文件系统上

这边我们就列举

那么实际上spark

它既能访问本机的数据

也能访问

分布式文件系统上的数据

它大概是需要这样的

文件标识的方法

本机的文件以file开头

分布式文件系统上的文件

以hdfs开头

通过两种方式

我们可以把这个数据

作为原始的这个数据源

用来生成第一批的RDD

有了这个原始数据之后

我们需要去启动

spark的程序

启动spark的程序

实际上大概会有两种模式

第一个我们编写

独立的spark程序

让它在spark这个

运行环境下去运行

它的过程有点类似于这个

hadoop的执行方式

大家可以去参考一下手册

看看怎么样运行

当然

在这个过程中

大家也可以使用不同的编程语言

包括java、python、scala的方式

来进行程序的编写

那么第二种模式

就是我们经常提到的这个

交互式的操作

我们会开启一个命令行窗口

以交互的这种形式

来进行数据的操作

我们在这个实验课当中

会重点给大家介绍这种模式

屏幕上给的这个命令行

实际上就启动了一个叫做

py-spark的这样一个终端

它是一个命令行交互的一个终端

在这里面大家可以运行

spark支持的

这些命令和语言

它的这个语言

是用python来编写的

所以

大家可以在这里面运行类似于

python的这样一个代码

在这个里面

我们指定了它的master

是一个yarn-cline

然后我们指定了他的

executor的数量是十

启动了之后

我们就可以去运行这个

spark程序了

我们第一步要运行

是需要创建一个

spark的context

这在spark的编程方式

和命令行方式

它是一致的

只不过在命令行方式

这个context

会帮我们直接创建起来

通过context

我们可以把一个

分布式文件系统的

这样一个文件

或者是本地的文件

给转成第一个RDD在这里面

就是一个text file

这样一个RDD

有了这个之后

我们可以对它做一系列的操作

那么大家看到

前面的3个大于符号

就是刚刚提到的这个shell

它的一个提示符

在这里面我们可以对它进行flat map

我们可以进行

flat map之后来继续做map

然后我们还可以进行reduceByKey

等等这样的一系列的操作

最后我们可以进行action

比如说我们要看

前10个元素是什么

然后我们可以去

对里面的一些元素进行查找

通过一个叫做filter的操作

然后我们可以把它输出到文件

把它保存

结果保存出来

下面我们会通过一些例子

来给大家介绍一下这个过程

在我的这个集群上

我们运行过

hadoop的程序

现在我们可以进一步来看

如果我们运行

spark程序的时候

是怎么样的

我这边已经保存了一系列

spark的代码

为了输入的方便

我直接把这些代码复制过去

首先

我们启动一个spark的shell

启动了之后实际上它会给

我们一个交互的操作环境

我们下面可以看到

这样一个操作的交互环境

当然它在这个过程中

已经去把相应的一些资源

进行了分配

启动spark交互环境之后

我们还是使用我们

在hadoop中使用过的

这个单词的这样一个文件

来对单词的文件

进行视频的统计

我们产生第一个RDD

通过spark的context

然后从分布式文件系统中

把这样的一个文件读取出来

我们现在已经有了一个RDD

叫做textFile

大家注意这个过程

实际上很快就完成了

因为它并没有真正的

发生什么运算

或者是io

因为它只是让spark记录了

我们要做出这样一个DD

这个RDD由于

它没有action

所以基于它的这个

lazy execution的原则

这一步操作实际上

会在真正我们

发生action的时候

才会去完成

我们可以做一些什么样的事情呢

我们首先把这个加法导入进来

因为我们后面reducer

中是需要用到的

然后我们会形成一个新的RDD

这个新的RDD是会对

这个行进行一个分割

有点像我们在map里面做的

单词的一个行的一个切分

得到一系列单词

我们得到了单词的RDD

我们得到单词RDD之后

我们进一步

去进行一个新的RDD的生成

我们把它叫做maprdd

实际上这一步

我们会把刚刚的一系列单词

输出成单词 1这样的

新的这样一个数据集

叫做maprdd

同样这些操作也是非常快的

有了maprdd之后

我们可以进一步去尝试着模拟

mapreduce的reduce过程

我们形成一个

reduceRDD

这步做的操作就是把

我们有的这个reducer

有的这个中间的这些

这个MAP RDD里面的

这个value进行叠加

叠加了之后

实际上就是我们统计好的

这个词频

有了这一步之后

实际上我们就可以

去简单的看一下我们

这个结果到底怎么样

现在我们用一个

我们用一个action

我们来提出前面的20个单词

和它的这个词频来看一眼

我们看看是什么样的情况

大家可以注意到

当我们敲这个命令之后

看起来好像spark

就已经开始工作了

的确它已经开始工作

因为take是需要

结果呈现在屏幕上的

那么用户执行

这个命令之后

实际上就已经触发了

之前我们做的

若干个transformation

那么最终要求把结果

投到屏幕上

那么我们可以通过这个进度看到

整个这个transformation和action执行的

这样一个进度的一个情况

那么当这个进度执行完了之后

实际上我们就可以

拿到这样一个结果

那么这边大家可以看到

它切分的一个情况

实际上我们通过

Context的一些控制

我们可以让

RDD的一个控制

我们可以让这个RDD

它并行的一个情况

以及它partition的一个情况

对它进行一个优化

比如说在我们的任务中

也许我们通过partition的优化

可以达到提高整个

action速度的一个目标

这个大家需要

在后面实际的运行中去尝试

我们刚刚的take

已经拿到了

我们拿到了前20个单词的

这样一个输出

那么我们现在

如果还想再进一步看多一些

我们想看前50个

我们只需要take 50

那我们发现take 50之后

这个过程就变得快多了

那这也依赖于这个spark

对in memory的RDD做了优化

我们的结果已经在

内存中出现

所以它可以直接在

屏幕上得到呈现

当然

如果大家需要

对RDD显示的要求

他在内存中得到缓存的话

大家是可以用相应的命令

把RDD调整到内存当中

那这样的话你可以满足

比如说我们对关键词

进行搜索这样的目标

达到一个快速的一个效果

我们刚刚讲了

大家可以在单机的

这个linux

机群上去进行数据的处理

那么大家也学到了一些基本的

linux的命令

也学到了怎么样通过

SSH远程的执行命令

并且通过crontabl加wget的方式

在一个中心的服务器上

指定要运行

这个程序和数据

那么大家可能会问的

一个很自然的问题

就是如果没有这些

server怎么办

那么由于我们的课程

是针对各种各样的同学

以及工程人员的

那么我们现在就给大家介绍

怎么样达到自己能够

拥有一定的这个

server资源的

这样一个目标

大概有几种方式

你可以去获得这个server的

这样一个资源

第一个我们可以使用

云计算的平台

那么EC2还有这个阿里云

腾讯云等

都是大家可以去使用的资源

大家可以通过这个按需付费

按需分配的方式

来获得你需要的

这种云计算资源

包括在上面分配这种虚拟机

这些虚拟机大家可以去安装

linux的系统

然后只需要经过几分钟的时间

大家就可以在远端

在云上有一个自己的服务器

那么大家如果不愿意付

这个很少的这个

云计算的服务费的话

依然可以使用一些免费的平台

比如说planetlab

然后phonelab实际上

都是大家可以去使用的一些

这种免费的linux

主机以及一些data center的

这种的硬件资源

同样

大家可以向我们的

课程申请使用

我们课程提供的

一些这种免费的资源

当然

如果有用户的量比较多的话

可能我们的这个小的集群

可能会出现延迟比较大

或者说服务质量

不是特别高的现象

但是这几种资源的形式

都是大家可以去在我们的

课堂上利用的

那么我重点介绍一下

大家使用云计算资源

应该去怎么做

那么使用云计算

我们这边介绍的是Amazon EC2

这个例子

就让大家使用阿里云

或者是腾讯云

应该是有类似的这样操作的

我们使用的这个云的服务

模式应该是叫做

RAS 基础设施及服务

这样的一个模式

也就是说我们可以分配

出类似于真实机器的

这样的一些基础设施

那么它给用户看起来

就像是一个真实的linux server

包含它的CPU资源

网络资源

ip资源以及它的存储资源

我们甚至可以去自定义

你自己的硬件的情况

比如说你要不要有GPU

要不要有CPU上有多少个核

你的内存有多大

那么都是能够在数十分钟之内

就可以完成一个任务

那么这边是EC2的一个情况

我们可以看到它的价格

我们可以看到

它的一些资源的分配的情况

那么在EC图里面

有大量的这种

在amazon里面

它其实有大量的资源

你可以去虚拟化

可以去分配

那么包含了我们刚刚

讲到的一些硬件的资源

一些这种甚至是软件的资源

那么拥有这些资源之后

大家不但可以

用来做数据的处理

它们甚至可以用来

做数据的存储

以及后面的这种

数据的一个服务

甚至是部署在web

上面的一些具体的这种应用

那么针对EC2的话

当大家分配好一个

EC2的节点之后

我们大概会看到

这样的一个控制的一个面板

它可以显示你分配的一个

EC2的虚拟机

它的一些基本的信息

包含它的网络的信息

存储的信息

以及它其他的一些密钥

以及安全的信息

那么如果一切信息都

没有问题的话

大家就可以把实例

给运行起来

EC2的一个虚拟机

叫做一个instance

大家把这个实例运行起来之后

那么amazon就会开始计费

那么在通知面板里面

大家还可以去查看

你当前运行的

这些服务器的情况

如果你运行的不止一台

实际上你是可以通过一个内网

把这些服务器连接起来

组织成一个你自己的小的

这样一个虚拟cluster

虚拟机群

那么在集群上能够干的事情

实际上你在当前

amazon的EC2上

你都可以做

那么在这个集群里面

我们同样还可以

对网络进行管理

比如说当我们在

进行某一些数据处理任务的时候

我们可能需要我们的机器

离我们的数据源相对近一些

那这时候我们是可以

把我们的amazon机器

分配到与它比较近的一个区域

比如说我们的数据源在美国

那我们可以选择

美国离它比较近的site

进行资源的一个分配

那么同时我们可以去配置

我们instance它网络的

一个状况

比如说我们需要

有不同的ip address

或者我们需要有什么样

质量的一个内网的

ip和instamce之

间传输数据的

这样一个连接的一个质量保证

这是可以在这里面得到配置的

那么值得一提的是

尽管EC2是对所有人都开放的

但是它针对研究针对教育

还有特别的优惠

也就是说大家可以

通过自己的学生身份

或者说大家参与课程的

这样一个身份

可以去申请到EC2

一些比较优惠的

使用他们EC2节点的支持

那么这种支持的方式

通常是以点数的方式

给到每个同学的这样一个账号

当然大家需要通过申请

大家拿到这样一个免费的

使用时长之后

实际上就可以完成很多

我们课堂或者课堂以外的

这种服务器资源的一个使用

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。