Spark平台(高级版一)介绍

完整目录、平台简介、安装环境及版本:参考《Spark平台(高级版)概览》

一、总体介绍

通过本部分学习,你将了解到本书总体讲什么,能学到什么,能获取到什么,以及学习过程中需要准备什么,本部分将一一道来。

1.1 什么是大数据

大数据主要包含两个方面,一个是基础设施,一个是方法论。

1.1.1 基础设施

数据量呈现爆炸式增长,但是大部分企业用的还是传统的关系型数据库进行数据存储、处理,并利用传统的方法进行数据分析,这就典型的编写一个自包含的简单应用程序或者说拿pandas(Python Data Analysis Library)编写一个简单应用程序,而这这就是目前见到的常态,这种方法已经不符合大数据发展的方向了。

1.1.2 方法论

随着数据量的越来越多,特别是5G物联网的出现,面临着这么多的数据使用什么方法进行分析,这就需要一套行之有效的理论来支撑我们分析大数据,这种方法论又结合了人工智能的特点或借助了人工智能的算法来达到分析数据的最终目。而且随着快速发展,不学习或者不通过大数据的观点去处理我们面临的问题,将会丢失一个时代,特别是那些从事IT开发的工程师或产品经理,更需要学习大数据的理论,学习大数据作为基础设施的实践方法。

1.2 为什么学习本教程

1.2.1 教程体系

1.2.1.1 Spark快速大数据处理

以Hadoop3和Spark为核心,同时集成Hive和Oozie。主要有以下几部分:

  • ZooKeeper-分布式过程协同组件:通过一个例子讲解ZooKeeper如何实现主从分布,如何实现加锁等等概念。以实例的方式讲解ZooKeeper的使用。
  • Hadoop3-大数据基础组件:主要从三部分进行讲解:即HDFS、Yarn、MapReduce,其中MapReduce主要讲MapReduce的思想和计算逻辑。
  • Tez-Yarn底层计算引擎:Tez是一个计算DAG的Yarn底层计算引擎,透明的提供MapReduce计算框架,可以加快大数据处理速度。
  • Hive2-大数据仓库:Hive的基本操作以及原理。
  • Spark2实时大数据处理:Spark的最新API,如以Structured Streaming、Dataset以及DataFrame SQL这两类API为中心进行讲解。
  • Oozie-大数据流程引擎:Oozie将以Hadoop、MapReduce、Hive、Spark这些为核心内容,讲解如何将这些核心内容用流程引擎串起来,Oozie主要用来解决此问题。
1.2.1.2 Flink实时大数据处理

流处理以及实时机器学习是我们时代的未来,是构建在快速大数据处理即Hadoop基础之上的。我们在做数据处理、搬运数据时,数据的流动性在集群里面是比较困难的,因为数据量太大。但是我们处理的流动性是非常容易的,即代码流动性是很容易的。Hadoop3提供了一个数据存储的集群化环境HDFS,同时提供了一个管理集群、计算框架的平台Yarn,在此之外,还产生了另一个思想MapReduce,MapReduce是我们Spark或者Flink计算框架的发展源头,没有MapReduce,大数据处理将失去本来的意义。

1.2.1.3 大数据处理细想发展史

本教材适合架构师和产品经理,以及做大数据处理的管理者、总监、VP,以及那些需要了解大数据处理思想的源头以及未来的发展方向。本教材沿着数据处理发展轨迹讲述,特别是那些能够产生思想光辉的重要节点,结合着我们的通俗语言讲解大数据处理的思想发展史。

1.2.1.4 Hadoop集群自动化项目:HFS

如果你对项目LFS (Linux From Scratch)比较熟悉的话,那么就能够理解HFS所要做的事情,即构建一个从源码到集群的自动化编译、部署的项目。

1.2.1.5 Flink实时机器学习

将以架构层次的讲解结合实时机器学习的特点,以及现有的机器学习或者人工智能发展的最新成果一起构成本模块的主要内容。

1.2.2 集群拓扑

如图1-1所示,集群包含三个ZK(ZooKeeper)节点,三个DN(DataNode)节点,两个NameSpace节点,其中每个NameSpace有三个JN(Journal Node)节点、两个NN(NameNode)节点做HA,整个集群有两个RM(Resource Manager),计算底层选择Tez作为计算底层。在这个集群的基础上,架构了Spark Standalone集群、Hive以及Oozie。


图1-1  集群拓扑

1.2.3 安装软件

集群需要安装以下软件:Anaconda、Expect、Mysql、Scala、Jupyter、Toree、Pyecharts等。

1.2.4 教程特点

  • 基于最新版本讲解API:包括 Hadoop3、Spark2、Hive3、Oozie5。通过最新版本的组合,最终搭建集群。
  • 手工搭建:详细讲解如何编译和搭建整个集群环境,环境的搭建是学习大数据最基础也是最难的门槛。
  • 配套资源:有响应的配套文件,包括课件、镜像、安装资源等。
  • 案例为主:以案例为主,进行讲解,而不是直接对着API接口文档进行讲解。 主要以分模块案例以及天池数据分析竞赛作为核心例子进行展开讲解。
  • 故障教学:以故障教学的模式进行引导,帮助大家在遇到问题时,不要惊慌,一步步分析问题,然后找到解决故障的方法。在大数据开发里面,经常发现很多莫名其妙的问题,这些问题常常是因为某一个配置或者某一个操作不当而延迟产生的结果。注意这里说到延迟,是因为大部分故障不会立即产生结果,对于立即产生的结果,容易分析和解决,而延迟产生的,则需要对整个系统运行模式、运行理论、运行过程非常熟悉,才能知道故障产生的根本原因,而非表象原因。
  • 完整实战项目:以天池数据分析为例,基于2014年淘宝的数据作为案例数据源,通过数据分析可以真切感受到淘宝或者电商的发展路径。

1.2.5 资源清单

提供三部分资源:

  • 分阶段的虚拟机镜像:产生各个阶段的虚拟机镜像。
  • 安装资源:教材涉及到的代码、源码、脚本程序等。
  • 课件:PPT文件网上公开。

1.3 开发环境介绍

案例以VirtualBox6.0为例,在操作前先确认本机电脑已经安装了VirtualBox。

1.3.1 VirtualBox

  • 宿主计算机:大数据处理非常耗资源,对计算机要求高,配置要求>16G/i5/@2.8GHz或者选购阿里云服务来部署开发环境,同时关闭安全软件。
  • 虚拟机:选择VirtualBox6.0,其中Host-Only:192.168.56.1。
  • 集群关机:先手动/自动关机后,再关闭虚拟机。
  • 故障处理:在某个环节碰到故障,可以直接删除hadoop1/2/3对应的文件夹,再解压对应zip包到响应目录即可。
  • 编译与安装:可跳过,但不推荐,学完后再安装。
  • 启动集群:启动顺序宿主计算机-》虚拟机-》集群,下一步的启动都得等到前一步启动完成后。

注:案例中所有虚拟机用户名为root,密码为*****

1.3.2 加载虚拟机

解压缩镜像文件2SetupSSHEnv.7z,加压缩到当前文件夹。

双击hadoop1目录下的hadoop1.vbox,加载虚拟机hadoop1。

依次操作加载虚拟机hadoop2和hadoop3

1.3.3 挂载操作系统文件

如果需要挂载CentOS-7-x86_64-Everything-1804.iso,默认路径是d:\hadoop,如果需要改变路径,如下操作。

选择虚拟机后,点击“设置”按钮。

选择“存储”菜单,然后再选择CentOS-7-x86_64-Everything-1804.iso。

点击分配光驱右边按钮,弹出菜单后,选择“选择一个虚拟光盘文件”。

找到文件CentOS-7-x86_64-Everything-1804.iso,并选中即可

依次操作hadoop2和hadoop3

1.3.4 网络介绍

所有虚拟机都设置了两个网卡,“网卡1”用于本地机器以及集群间通讯,“网卡2”用于安装软件过程中上网下载即更新等操作。

网卡1:主机网络模式,即192.168.56.1,便于和本地机器以及集群间通讯,需要设置固定ip地址。

网卡2:桥接网卡模式,本地机器上外网用,用于软件下载更新等请。在给定环境中,上不了外网也不影响使用。

1.3.5 启动虚拟机

通过VirtualBox,依次选择虚拟机,点击“启动”按钮,启动三个虚拟机。

出现登录页面,说明启动成功。

三个虚拟机的“网卡1”分别对应ip地址为192.168.56.102,192.168.56.103,192.168.56.104,通过SSH进行连接。

如果出现无法连接的情况,请确认网络设置是否设置,点击主菜单“管理”下的“主机网络管理器”。

查看是否已经存在VirtualBox Host-Only…,没有的话,需要创建。

创建完成后,配置IP地址及DHCP服务器。

1.3.6 环境介绍

切换到hadoop用户,命令:su – hadoop

进入到hadoop根目录

本测试环境使用的JDK版本是jdk1.8.0_131

tools目录下有两个文件夹,分别是expect和protobuf-2.5.0,其中expect常用,protobuf-2.5.0本测试环境不用。

expect目录文件如下

config.conf配置文件,保存安装过程中的一些配置信息,后续主要用于集群启动过程中控制哪些组件启动。

startAll.sh和stopAll.sh则是负责启停的自动化脚本,前期不建议直接使用,手动启动更易于理解和掌握。该自动化脚本需要hadoop用户在/hadoop目录下运行。

为了便于使用,将盘/dev/sdb挂载在/tmp目录下

即将Tmp.vdi挂载到/tmp目录下,后续所有操作如上传的脚本、安装文件都可以上传到/tmp目录下,会直接影响Tmp.vdi文件的大小。如果想还原,则直接用以前解压缩的文件覆盖即可,注意覆盖操作需要在关闭虚拟机情况下进行。

1.3.7 关闭

由于没有运行startAll.sh脚本,也就没有必要运行stopAll.sh脚本关闭。直接切换到root用户下关闭虚拟机即可。 

关闭虚拟机:shutdown -t secs 0。

查看是否显示“已关机”。

依次关闭hadoop2、hadoop3

1.4 起点准备

以SetupSSHEnv.7z集群环境为例,该集群环境安装了expect、JDK,并创建了hadoop用户。同时还做了虚拟机间相互SSH免密登录,集群内任何机器使用Hadoop用户登录到另一台机器不需要输入密码。

第二章和第三章描述的是SetupSSHEnv.7z集群环境的搭建过程,如果熟悉Linux操作系统安装、JDK、SSH免密登录等操作的,可以跳过,直接用现有的环境SetupSSHEnv.7z。

发表回复