搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Spark大数据分析
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121370519
  • 作      者:
    刘景泽编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2019
收藏
编辑推荐

过程完整:从基础配置过程一直到真正的商业项目开发

例子丰富:90个“实例”,1 个完整项目

原理清晰:重点概念、操作、思路都有图示,避免抽象理解

代码详尽:所有实例都有详细的代码,所有代码都有详尽的解读

知识点新:包含Structured Streaming详解

阅读感好:采用短段、短句,可以流畅阅读

辐射面广:讲解了Spark与周边框架的交互

服务完善:读者可加入本书QQ学习群在线交流


展开
作者简介

刘景泽

全栈工程师,长期从事大数据的研发工作,拥有丰富的大数据开发经验。

曾担任多家知名企的主力研发,并负责大数据云服务组件开发。

精通Java、Scala、Python等多种编程语言,擅长大数据生态圈的研发、算法、逆向工程等技术。

为多家企业提供技术支持,并长期面向企业一线开发人员分享实战经验。


展开
内容介绍

本书基于Spark 2.3.x、Spark 2.4.x系列版本,采用“理论+实践”的形式编写。全书共有90个实例,1个完整项目。

第1篇“准备”,包括认识大数据和Spark、安装与配置Spark集群、第1个Spark程序;

第2篇“入门”,包括读写分布式数据、处理分布式数据;

第3篇“进阶”,包括RDD的高级操作、用SQL语法分析结构化数据、实时处理流式数据;

第4篇“高阶”,包括实时处理流式数据、Spark的相关优化;

第5篇“商业项目实战”,用Spark的各种组件实现一个学生学情分析商业项目。

本书结构清晰、实例丰富、通俗易懂、实用性强,特别适合Spark的初学者和进阶读者作为自学用书。另外,本书也适合社会培训学校作为培训教材,还适合大中专院校的相关专业作为教学参考书。


展开
精彩书摘

第3章   第1个Spark程序

-学习编程语言首先需要安装开发环境,并编写“Hello World”代码,然后编译、运行。而学习框架可能会麻烦一点:首先准备安装环境、部署相关服务、修改配置文件,让框架服务-稳定运行在集群之中;然后编写并编译代码;最后将编译好的程序提交到集群中运行。

本章将主要介绍如何编写、编译程序,并将程序提交到集群中运行。

-

/3.1  运行第1个Spark程序

在运行第一个Spark程序之前,需要先了解提交并运行程序的流程。

(1)在提交一个Spark程序时,用于提交该程序的窗口被称为Client(客户)端。提交后的程序会向Master服务申请资源,并启动一个Driver进程,其中包含该程序的全部代码。

(2)每个Worker服务会启动Executor进程,该进程负责与Driver进程建立RPC通信,用于接收并运行Driver进程派发过来的任务,并将任务的执行状态持续反馈给Driver进程。

接下来准备运行第1个Spark程序——求Pi的值。

-

∣3.1.1  实例5:基于Standalone模式运行第1个Spark程序

----------------

实例描述

使用蒙特卡洛算法求Pi的值。

----------------

读者可根据如下步骤完成实例。

/

1. 提交程序

进入Spark的安装目录,通过脚本提交程序,见代码3-1。

--代码3-1  提交Spark官方案例任务----------------------

[admin@linux01 spark-2.3.1-bin-hadoop2.7]$ bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://linux01:7077 \

--executor-memory 1G \

--total-executor-cores 3 \

/home/admin/modules/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-exampl

     es_2.11-2.3.1.jar \

100

------------------------------------------------------------------------------

上述代码中的参数解释如下:

-代码第02行,通过“--class”参数设置jar包中入口类的类名。

-代码第03行,通过“--master”参数设置Master服务的通信地址,包含机器的IP地址和端口号。

-代码第04行,通过“--executor-memory”参数设置每一个Executor进程的可用内存。如果任务运行时所使用的内存超过该值,则会出现虚拟机内存溢出错误。

-代码第05行,通过“--total-executor-cores”参数设置集群中一共可以调度多少个CPU内核(CPU Cores)来执行任务。一个CPU内核在同一时间内只能运行一个任务(Task)。在设置该参数时,需要结合机器硬件资源的配置情况。例如,分配到的CPU内核越多,则任务的并行度越高,任务完成的时间也越短。

-代码第06行,指定jar包的位置。该jar包中包含要运行的程序。

-代码第07行,“100”为程序参数,该参数会被传递到主方法中。该参数用于指定随机“点”的个数。

/

2. 观察与总结

在上述操作中,即使没有明显的报错信息,也应该去看一下任务日志。这是一个非常好的习惯。下面将通过Spark历史服务(History Server)页面来查看任务日志。

(1)查看Spark的历史任务。

在任务成功运行后,可以看到Pi的粗略值已经被计算出来了:Pi is roughly 3.1417199141719916。

此时来到Spark历史服务页面“http://linux01:4000”,可以看到该任务日志,如图3-1所示。

 图3-1  Spark的历史服务页面

单击右侧的“Download”按钮可以完整地下载任务日志。

该日志文件实际上存储于第2章所配置的HDFS目录中,也可以通过HDFS页面下载该日志文件。

/

(2)查看HDFS中的日志文件。

访问“http://linux01:50070/explorer.html#/spark-logs”,来到HFDS的“/spark-logs”目录下,可以看到,产生了一个对应刚才任务的文件夹。该文件夹目录下的文件记录着刚才任务的日志信息,如图3-2所示。

 提示:

在本例中,如果当前查看该目录的不是“admin”用户,则没有权限进入该目录中。可以根据Hadoop相关知识修改HDFS对应目录的访问权限,或者变更为有权限的用户进行操作。

在一般情况下,开发者也很少通过HDFS页面来操作该目录下的内容。

 /

3.1.2  实例6:基于YARN模式运行第1个Spark程序

实例描述

使用两种不同的方式将求Pi值的程序提交到YARN集群中运行,并查看程序的运行结果。

/

1. 确认Hadoop集群已正常运行

如要查看程序在YARN集群的运行日志,应先确保HDFS服务、YARN服务及Hadoop中的Job History Server服务已全部稳定运行。

接下来,将分别介绍两种提交程序的方式——YARN-Client方式与YARN-Cluster方式。

/

2. 用YARN-Client方式提交程序

此时先不必深究YARN-Client方式到底是何用意,先将程序运行起来,保障操作的流畅性,然后再去思考YARN-Client与YARN-Cluster的区别。

(1)提交程序。

进入Spark的安装目录,使用YARN-Client方式提交程序。具体命令如下:

[admin@linux01 spark-2.3.1-bin-hadoop2.7]$ bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode client \

--executor-memory 1G \

--total-executor-cores 3 \

/home/admin/modules/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2. 11-2.3.1.jar \

100

(2)查看任务进度。

在提交程序后,可以进入YARN的Web页面查看任务进度。Web页面地址如下:

 http://linux02:8088/cluster/apps

耐心等待程序执行完毕,即可在控制台的输出中看到Pi的粗略值已经计算出来“Pi is roughly 3.1406739140673916”。此时YARN的Web页面中的内容如图3-3所示。

图3-3  YARN的Web页面

/

(3)查看历史记录。

程序运行完毕后,还可以通过Spark历史服务(Spark History Server)页面查看日志。访问地址如下:

http://linux01:4000

可以看到刚才在YARN上运行的程序记录,如图3-4所示。

 

图3-4  Spark历史服务页面

 提示:

基于该方式运行的程序,Client客户端会与Driver进程绑定在一起。如果用于提交程序的Client客户端退出,则意味着Driver进程退出,程序将无法继续执行。

/

3. 用YARN-Cluster方式提交程序

用YARN-Cluster方式提交程序也非常简单,但是该方式无法在控制台直接看到Pi的输出结果。

(1)提交程序。

进入Spark的安装目录后,执行如下命令:

[admin@linux01 spark-2.3.1-bin-hadoop2.7]$ bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode cluster \

--executor-memory 1G \

--total-executor-cores 3 \

/home/admin/modules/spark-2.3.1-bin-hadoop2.7/examples/jars/spark-examples_2. 11-2.3.1.jar \

100

(2)查看任务记录。

此时并不能在控制台直接看到输出结果,只是看到程序在进行。

当程序运行完毕后,前往YARN的Web页面,找到本次程序的运行记录,然后依次单击“History”链接→“Logs”链接打开日志,在日志最后一行可以看到已经求出了Pi的值,如图3-5所示。

 

图3-5  YARN的历史任务日志

 提示:

基于该方式运行的程序,Client客户端不会与Driver进程绑定在一起。如果用于提交程序的Client客户端退出,程序依然可以继续执行。

这种方式可以保障集群内Executor进程和Driver进程通信更加稳定。

4. 总结

结合上面的实例,总结如下:

(1)如果现有集群中没有部署YARN集群,则使用Standalone模式提交程序。

(2)如果在现有的集群中已经部署了YARN集群,则使用YARN模式提交程序。当基于YARN模式提交程序时:

在正式的生产环境中,推荐使用YARN-Cluster方式提交程序。

在调试环境中,推荐使用YARN-Client方式提交程序。

3.1.3  提交Spark程序时的参数规范

提交程序时,除常用的参数外,还有一些其他参数。表3-1列出了提交Spark任务时常用的几个参数。

……

展开
目录

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证