版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
搭建Spark开发环境任务一任务1搭建Spark开发环境.pptx任务2项目数据采集.pptx任务3探索Scala编程方法.pptx任务4揭秘弹性分布式数据集.pptx任务5SparkSQL——数据融合分析.pptx任务6SparkStreaming——实时智能分析.pptx任务7数据可视化——让数据说话.pptx任务8基于SparkGraphX与MLlib的智能化场景应用.pptx任务9综合实践——区域用电分析项目.pptx全套可编辑PPT课件一、任务说明(一)学习目标(1)掌握Spark的基础架构原理。(2)了解Spark的主要组件。(3)掌握Spark开发环境的搭建和集成开发环境(integrateddevelopmentenvironment,IDE)的使用。知识目标一、任务说明您的内容打在这里,或者通过复制您的文本后,在此框中选择粘贴,并选择只保留文字。(1)能独立完成Spark开发环境的搭建,包括虚拟机JavaSDKHive分布式环境的配置。(2)能够运行简单的Spark应用程序,并通过Shell或编程接口将任务提交到本地或集群环境。(3)能够独立完成全国职业院校技能大赛大数据应用开发方向环境的部署。能力目标(1)培养对分布式计算环境的敏感度,理解资源配置的重要性。(2)了解国内相关技术的发展状况及国家在政策方面对大数据技术的支持。(3)提高系统化思维和问题解决能力,能够适应技术栈变化带来的挑战。素质目标一、任务说明(二)思维导图本任务思维导图如图1-1所示。图1-1搭建Spark开发环境思维导图二、知识引入(一)Spark的概念Spark是一种通用的大数据计算框架,其目标是使用一个技术堆栈就完美地解决大数据领域的各种计算任务。Apache官方对Spark的定义:通用的大数据快速处理引擎。Spark基于内存进行计算,从而使其速度可以达到MapReduce、Hive的数倍甚至数十倍。Spark包含了大数据领域常见的各种计算框架。例如,SparkCore用于离线计算,SparkSQL用于交互式查询,SparkStreaming用于实时流式计算,SparkMLlib用于机器学习,SparkGraphX用于图计算等。点击图标查看视频Spark的概述二、知识引入Spark+Hadoop是未来大数据领域最热门、最有发展前景的组合。Spark主要用于大数据的计算,而Hadoop主要用于大数据的存储(如HDFS、Hive、HBase等)及资源调度(如YARN)。有很多大公司在生产环境下深度地都使用Spark作为大数据的计算框架,如eBay、Yahoo、百度、阿里、腾讯、网易、京东、华为等互联网公司,以及IT厂商IBM、Intel等。(二)Spark整体架构图1-2所示为Spark架构图。图1-2Spark架构图二、知识引入相关模块解释如下:二、知识引入Spark处理结构化数据的库,就像HiveSQL、MySQL一样,企业常用来做报表统计。包含Spark的基本功能,如任务调度、内存管理、容错机制等,内部定义了RDD(弹性分布式数据集)。SparkCore提供了很多API来创建和操作这些RDD,为其他组件提供底层服务。(1)SparkCore。(2)SparkSQL。点击图标查看视频Spark的运行架构(1)二、知识引入实时流数据处理组件,定位类似于Storm。SparkStreaming提供了API来操作实时流数据。例如,可以从Kafka接收数据做实时统计。(3)SparkStreaming。一个包含通用机器学习功能的包,包含分类、聚类、回归等机器学习算法,还支持模型评估和数据导入。MLlib提供的这些方法均可支持集群上的横向扩展。(4)SparkMLlib。二、知识引入(5)SparkGraphX。(6)数据存储。处理图的库(如社交网络图),并进行图的并行计算。像SparkStreaming、SparkSQL一样,它也继承了RDDAPI。它提供了各种图的操作和常用的图算法,如PangeRank算法。支持HDFS、S3、Tachyon等多种存储方式。Spark支持多种部署模式,可以选择任一种来部署和运行Spark,以下为常用的三种部署模式。二、知识引入①SparkStandalone。独立模式,在Spark自己的资源调度管理框架上运行,该框架采用master/salve结构。②YARN。一种统一资源管理机制,在其上面可以运行多套计算框架。Spark支持在YARN框架上运行,YARN负责资源管理,Spark负责任务调度和计算。③Mesos。Apache下的开源分布式资源管理框架。Spark支持在Mesos框架上运行,Mesos负责资源管理,Spark负责任务调度和计算。(三)Spark运行流程Spark运行流程图如图1-3所示。图1-3Spark运行流程图二、知识引入有以下几个步骤:二、知识引入(2)资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上。(1)构建SparkApplication的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或Yarn)注册并申请运行Executor资源。点击图标查看视频Spark的运行架构(2)二、知识引入SparkContext构建成DAG,将DAG分解成Stage,并把TaskSet发送给TaskScheduler。Executor向SparkContext申请Task。(3)TaskScheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor。(4)Task在Executor上运行,运行完毕释放所有资源。(5)其中的重要概念解释如下:二、知识引入(1)SparkApplication:表示创建的应用程序(见图1-4)。指的是main()函数,作用是创建SparkContext。通过SparkContext完成与资源管理器通信,申请运行资源,分配和监控任务。在程序执行完毕后需要关闭SparkContext。(2)Driver(见图1-4):图1-4Spark任务结构二、知识引入二、知识引入(3)Executor(见图1-3):Application运行在Worker节点上的一个独立的JVM进程。在每个工作节点上会启动一个Executor,主要用来执行Task。一个xecutor内可以同时执行多个Task。(4)Worker(见图1-3):集群中可以运行Application代码的节点。(5)Task(见图1-4):在Executor进程中执行任务的工作单元。多个Task组成一个Stage。二、知识引入(6)Stage(见图1-4):每个Job会被拆分成很多组Task,每组TaskSet定义为Stage。(8)DAGScheduler(见图1-3):根据Job构建基于Stage的DAG(有向无环图),并提交Stage给TaskScheduler。(7)Job(见图1-4):用户程序一个完整的处理流程。(9)TaskScheduler(见图1-3):将Stage提交给Worker(集群)运行,指定某个Executor运行具体的Task。您的内容打在这里,或者通过复制您的文本后,在此框中选择粘贴,并选择只保留文字。(四)Spark和Hadoop的对比Hadoop已经成了大数据技术的事实标准,HadoopMapReduce也非常适合对大规模数据集合进行批处理操作,但是其本身还存在一些缺陷。针对实时、快速计算需求,MapReduce存在的延迟过高问题,使得需要进行多路计算和迭代算法的用例的作业过程比较低效。具体缺点如下:二、知识引入(1)HadoopMapReduce的表达能力有限。(2)磁盘I/O开销大。(3)计算延迟高。二、知识引入Spark是借鉴了HadoopMapReduce技术发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark使用Scala语言实现,它是一种面向对象的函数式编程语言,能够像操作本地集合对象一样轻松操作分布式数据集。它具有运行速度快、易用性好、通用性强和随处运行等特点,其优势主要体现在如下几方面:二、知识引入(1)Spark提供了内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。(3)Spark比Hadoop更加通用。(2)Spark提供了一个全面、统一的框架,用于管理不同类型(文本数据、图表数据等)的数据集和数据源(批量数据或实时流数据)大数据处理的需求。(4)Spark基于DAG的任务调度执行机制比HadoopMapReduce的迭代执行机制更优越。(五)Spark发展历程Spark是一种通用的大数据计算框架,使用了内存内运算技术。二、知识引入2009年2010年2012年Spark通过BSD许可协议正式对外开源发布。Spark诞生于美国加州大学伯克利分校AMP实验室,最初是一个研究性项目。第一篇Spark论文发布,同时发布了第一个正式版(Spark0.6.0)。二、知识引入2013年2014年2015年Spark成为Apache基金会下的项目,并发布了SparkStreaming、SparkMLlib和Shark(SparkonHadoop)。Spark成为Apache的顶级项目,并在5月底发布了Spark1.0.0,同时发布了SparkGraphX和SparkSQL。同年,Spark的母公司Databricks团队使用Spark刷新了数据排序世界纪录,展示了Spark的高效性能。Spark推出了DataFrame(大数据分析)。(一)安装虚拟机软件与虚拟机三、任务实现VMwareWorkstation是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统和进行开发、测试、部署新的应用程序的最佳解决方案。本书使用VMwareWorkstation-pro-17.5,操作系统为Windows,首先需要下载Windows版软件并按照安装要求完成安装。下载链接:/cn/products/workstation-pro/workstation-pro-evaluation.html。三、任务实现Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。本书采用基础的Linux发行版CentOS作为虚拟机环境部署相关软件。下载链接:/centos/7.9.2009/isos/x86_64/。打开网站后,选择CentOS-7-x86_64-DVD-2207-02.iso下载安装。本书项目实践需要采用3个虚拟机实现,主机名分别定义为hadoop001、hadoop002、hadoop003。三、任务实现在苹果计算机上,可以安装免费虚拟机软件VirtualBox来实现与VMwareWorkstation同样的功能。访问VirtualBox官网(/),下载dmg格式的安装文件进行安装即可,建议选择最新版本VirtualBoxV7.0.14,考虑到网上资料丰富,本书不再赘述。虚拟机安装成功后,可以按照如下步骤继续安装虚拟机。1.安装CentOS虚拟机三、任务实现(1)打开VMware,选择hadoop001服务器,打开虚拟机启动界面,单击“编辑虚拟机设置”链接,如图1-5所示。图1-5单击“编辑虚拟机设置”链接三、任务实现(2)进入虚拟机编辑界面,选择DVD镜像文件,如图1-6所示。图1-6选择DVD镜像文件三、任务实现(3)单击“开启此虚拟机”链接,进入操作系统安装界面,选择“InstallCentOS7”选项,如图1-7所示。图1-7安装CentOS7三、任务实现(4)进入系统安装界面,配置CentOS7的语言为“简体中文(中国)”,如图1-8所示。图1-8选择安装语言三、任务实现(5)配置操作系统界面,如图1-9所示。图1-9配置操作系统界面三、任务实现(6)进入“日期&时间”界面,配置时区,单击“完成”按钮,如图1-10所示。图1-10配置时区三、任务实现(7)进入“软件选择”界面,选择“带GUI的服务器”单选按钮,单击“完成”按钮,如图1-11所示。图1-11选择“带GUI的服务器”单选按钮三、任务实现(8)进入“安装目标位置”界面,保持默认即可,单击“完成”按钮,如图1-12所示。图1-12“安装目标位置”界面三、任务实现(9)进入“网络和主机名”界面,开启网络并修改主机名为“hadoop001”,单击“完成”按钮,如图1-13所示。图1-13开启网络并修改主机名三、任务实现(10)进入“ROOT密码”界面,配置root账户密码。然后进入“创建用户”界面,创建用户“hadoop”,如图1-14~图1-16所示。图1-14配置root用户密码三、任务实现图1-15选择“创建用户”选项图1-16创建用户“hadoop”三、任务实现(11)等待操作系统安装完成后单击“重启”按钮,如图1-17所示。图1-17单击“重启”按钮2.复制虚拟机三、任务实现图1-18克隆虚拟机(1)打开VMware软件,选中创建的虚拟机,右击并选择“管理”→“克隆”选项,克隆虚拟机,如图1-18所示。三、任务实现图1-19“克隆虚拟机向导”对话框(2)打开“克隆虚拟机向导”对话框,单击“下一页”按钮进入下一步操作,如图1-19所示。三、任务实现图1-20选择克隆状态(3)默认选择克隆自“虚拟机中的当前状态”,单击“下一页”按钮进入下一步操作,如图1-20所示。三、任务实现图1-21选择“创建完整克隆”单选按钮(4)克隆类型选择“创建完整克隆”单选按钮,单击“下一页”按钮进入下一步操作,如图1-21所示。三、任务实现图1-22设置虚拟机名称及位置(5)新虚拟机名称。设置虚拟机名称为“hadoop002”,虚拟机位置为本地存储,如图1-22所示。三、任务实现图1-23正在克隆虚拟机(6)等待虚拟机克隆完成,如图1-23和图1-24所示。图1-24克隆虚拟机完成界面三、任务实现图1-25虚拟机创建完成界面(7)按照以上步骤再克隆一个虚拟机,如图1-25所示。(二)安装远程服务器管理工具三、任务实现远程服务器管理工具是允许用户管理远程服务器的实用工具。其通常提供图形用户界面(GUI),允许用户执行各种任务,例如,配置服务器、管理服务器用户、管理服务器资源和监视服务器性能。市面上有很多远程服务器管理工具可用,选择远程服务器管理工具时需要考虑的一些因素包括所提供的特性、易用性、价格和可用的支持。远程服务器管理有如下协议:三、任务实现SSH(secureshell)是一种远程管理协议,允许用户控制和修改远程服务器。SSH通常用于登录远程服务器、执行命令和传输文件。SSH是一种安全协议,它通过加密来保护数据不被拦截。SSH协议主要有以下几个版本:SSH-1、SSH-2和OpenSSH。其中,SSH-1由TatuYlönen开发,而SSH-2是SSH-1的改进版本,更安全且功能更强大。OpenSSH是SSH协议的免费开源实现,也是Linux系统默认使用的SSH实现。(1)SSH。三、任务实现RDP(remotedesktopprotocol)即远程桌面协议,是一种远程管理工具,允许用户控制和修改远程服务器。RDP协议通常用于登录远程服务器、执行命令和传输文件。RDP是一种私有协议,不像SSH那样安全。(2)RDP。VNC(virtualnetworkcomputing,虚拟网络计算)是一种远程管理协议,允许用户控制和修改远程服务器。VNC通常用于登录远程服务器、执行命令和传输文件。VNC不像SSH或RDP那样安全。(3)VNC。三、任务实现MobaXterm是一款SSH客户端,它帮助人们在Windows操作系统下去连接并操作Linux服务器。MobaXterm是一款增强型终端、X服务器和UNIX命令集工具箱。MobaXterm可以开启多个终端窗口,轻松地试用UNIX/Linux上的GNUUNIX命令。MobaXterm还有很强的扩展能力,可以集成插件来运行Gcc、Perl、Curl、Tcl/Tk/Expect等程序。MobaXterm分免费开源版和收费专业版,免费开源版又分便捷版(解压即用)和安装版(需要一步步安装)。MobaXterm支持SSH、X11、RDP、VNC、FTP、MOSH等连接,也支持UNI命令,如bash、ls、cat、sed、grep、awk、rsync等。连接SSH终端后支持SFTP传输文件。MobaXterm的下载链接为/download-home-edition,下载界面如图1-26所示。三、任务实现图1-26MobaXterm下载界面在Windows中安装MobaXterm工具的步骤如下:三、任务实现图1-27软件下载(1)下载Portableedition免安装版本,如图1-27所示。三、任务实现图1-28软件解压(2)右击下载的压缩包,选择安装位置,完成解压,如图1-28所示。三、任务实现图1-29免安装版MobaXterm(3)解压后,文件目录内有三个文件,双击“MobaXterm_Personal_24.2.exe”即可打开软件,如图1-29所示。三、任务实现图1-30账号登录(4)在软件界面左侧窗口中,右击“Usersessions”选项,在弹出的快捷菜单中选择“Newsession”选项,弹出“Sessionsettings”对话框,再单击“SSH”按钮,在打开的界面中输入IP地址(Remotehost)、用户名(Specifyuserhame),单击“OK”按钮,如图1-30所示。三、任务实现图1-31服务器登录(5)双击创建好的session,输入密码即可登录服务器,并进行业务操作,如图1-31所示。(三)安装JDK三、任务实现首先下载安装包,登录到Oracle官网,然后下载。下载链接为/java/technologies/javase/javase8u211-later-arcHIVE-downloads.html。(1)下载JDK1.8安装包,将JDK安装包上传到hadoop001服务器的/opt/software/package目录下。(2)解压JDK安装包到/opt/software/bigdata目录下。tar-xvfjdk-8u381-linux-x64.tar.gz-C/opt/software/bigdata/jdk/三、任务实现(3)配置环境变量,执行“vim/etc/profile”命令,将如下配置放到文件末尾,使用同样的方法在节点hadoop002、hadoop003上配置环境变量。(4)按“Esc”键,执行“:wq”命令,保存并退出。t#JAVA_HOMEJAVA_HOME=/opt/software/bigdata/jdk/jdk1.8.0_381JRE_HOME=${JAVA_HOME}/jreCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libPATH=${JAVA_HOME}/bin:$PATH三、任务实现(5)重新加载环境变量。source/etc/profile(6)验证Java是否安装成功。java-version如图1-32所示,出现Java版本号,则表示安装成功。图1-32确认Java安装成功三、任务实现(7)查看jps进程脚本。#!/bin/bashsource/etc/profile#获取控制台指令cmd=$*#判断指令是否为空if[!-n"$cmd"]thenecho"commandcannotbenull!"exitfi三、任务实现#获取当前登录用户user='whoami'#在从机执行指令,这里需要根据具体的集群情况配置,host与具体主机名一致,同上forhostinhadoop001hadoop002hadoop003doecho"================currenthostis$host================="echo"-->excutecommand\"$cmd\""ssh$user@$hostsource"/etc/profile;${cmd}"done演示脚本功能,执行结果如图1-33所示。因为笔者连接的服务器已经安装了部分软件,所以能够通过脚本查看每个服务器上已经运行的Java程序。三、任务实现图1-33jps脚本运行结果(四)搭建Hive环境三、任务实现在搭建Hive环境前,
读者需要提前安装Hadoop环境和MySQL数据库,作为Hive的依赖环境。为了聚焦讲解本书重点知识,且网络资料较多,本书不再详解Hadoop环境和MySQL数据库的安装过程,读者可自行完成安装。Hadoop环境和MySQL数据库安装完成后,可继续安装Hive环境。首先下载Hive安装包,使用浏览器访问以下链接:https://arcHIVE./dist/HIVE/HIVE-3.1.3/apache-HIVE-3.1.3-bin.tar.gz。三、任务实现(1)下载Hive安装包apache-HIVE-3.1.3-bin.tar.gz,并上传到Linux的/opt/software目录下。#HIVE_HOMEexportHIVE_HOME=/opt/software/bigdata/HIVE/apache-HIVE-3.1.3-binexportPATH=$PATH:$HIVE_HOME/bin(3)配置环境变量,执行“vim/etc/profile”命令,将如下配置放到最后。tar-xvfapache-HIVE-3.1.3-bin.tar.gz-C/opt/software/bigdata/HIVE/(2)将Hive安装包解压到/opt/software/bigdata/HIVE目录下。(4)按“Esc”键,执行“:wq”命令,保存并退出。三、任务实现(5)重新加载环境变量。cp/opt/software/bigdata/MySQL/MySQL-connector-java-5.1.49/MySQL-connector-java-5.1.49.jar$HIVE_HOME/lib(7)将MySQL的JDBC驱动程序复制到Hive的lib目录下。#登录MySQLMySQL-uroot-proot#创建Hive元数据库MySQL>createdatabasemetastore;MySQL>quit;(6)新建Hive元数据库。source/etc/profile三、任务实现<?xmlversion="1.0"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><!--jdbc连接的URL--><property>①
执行“vimHIVE-site.xml”命令,在打开的文件中输入以下内容。(8)创建HIVE-site.xml配置文件。三、任务实现<name>javax.jdo.option.ConnectionURL</name><value>jdbc:MySQL://hadoop001:3306/metastore?useSSL=false</value></property><!--jdbc连接的Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.MySQL.jdbc.Driver</value></property>三、任务实现<!--jdbc连接的username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!--jdbc连接的password--><property><name>javax.jdo.option.ConnectionPassword</name>三、任务实现<value>root</value></property><!--Hive在HDFS中的默认工作目录--><property><name>HIVE.metastore.warehouse.dir</name><value>/user/HIVE/warehouse</value></property><!--指定server2连接的host--><property>三、任务实现<name>HIVE.server2.thrift.bind.host</name><value></value></property><!--指定server2连接的端口号--><property><name>HIVE.server2.thrift.port</name><value>10000</value>三、任务实现</property><!--指定metastore服务的地址--><property><name>HIVE.metastore.uris</name><value>thrift://hadoop001:9083</value></property></configuration>三、任务实现②
修改Hadoop配置文件etc/hadoop/core-site.xml,加入如下配置项。<!--配置该root允许通过代理访问的主机节点--><property><name>xyuser.root.hosts</name><value>*</value></property><!--配置该root允许代理的用户所属组--><property><name>xyuser.root.groups</name><value>*</value></property>三、任务实现保存并退出,并重启hdfs服务。(9)初始化Hive元数据库(修改为采用MySQL存储元数据)。cd$HIVE_HOMEbin/schematool-dbTypeMySQL-initSchema-verbose进入HIVE_HOME。(10)验证Hive功能。cd$HIVE_HOMEbin/HIVE三、任务实现查看数据库,如图1-34所示。hive>showdatabases;hive>showtables;图1-34查看数据库1查看表,如图1-35所示。图1-35查看表1三、任务实现创建表,如图1-36所示。hive>createtablestu(idint,namestring);hive>insertintostuvalues(1,"ss");图1-36创建表1插入数据,如图1-37所示。图1-37插入数据1三、任务实现查询数据,如图1-38所示。hive>select*fromstu;图1-38查询数据1(11)启动metastore和HIVEserver2服务。cd$HIVE_HOME#启动metastore服务bin/HIVE--servicemetastore#启动HIVEserver2服务bin/HIVE--serviceHIVEserver2三、任务实现(12)使用beeline连接Hive。[root@hadoop001~]#beeline-ujdbc:HIVE2://hadoop001:10000/default-nroot查看数据库,如图1-39所示。jdbc:hive2://hadoop001:10000/default>showdatabases;图1-39查看数据库2三、任务实现hive>showtables;查看表,如图1-40所示。图1-40查看表2创建表,如图1-41所示。jdbc:hive2://hadoop001:10000/default>createtablestu2(idint,namestring);图1-41创建表2三、任务实现jdbc:hive2://hadoop001:10000/default>insertintostu2values(1,”ss”);插入数据,如图1-42所示。图1-42插入数据2查询数据,如图1-43所示。jdbc:hive2://hadoop001:10000/default>select*fromstu2;图1-43查询数据2(五)安装Spark分布式独立集群三、任务实现首先下载安装包。使用浏览器访问以下链接:https://arcHIVE./dist/Spark/Spark-3.2.3/Spark-3.2.3-bin-hadoop3.2.tgz。(1)下载Spark安装包Spark-3.2.3-bin-hadoop3.2.tgz,并上传到hadoop001服务器的/opt/software/package目录下。[root@hadoop001package]#tar-xvfSpark-3.2.3-bin-hadoop3.2.tgz-C/opt/software/bigdata/Spark/(2)将安装包解压到/opt/software/bigdata/Spark目录下。三、任务实现(3)配置环境变量,执行“vim/etc/profile”命令,将如下配置放到文件末尾,对其他节点hadoop002、hadoop003配置环境变量。[root@hadoop001]#source/etc/profile(4)按“Esc”键,执行“:wq”命令,保存并退出。#Spark_HOMEexportSpark_HOME=/opt/software/bigdata/Spark/Spark-3.2.3-bin-hadoop3.2exportPATH=$PATH:$Spark_HOME/bin(5)重新加载环境变量。三、任务实现(6)修改workers配置文件,保存并退出,集群为3个节点。[root@hadoop001]#cd$Spark_HOME/conf[root@hadoop001conf]#vimSpark-defaults.conf(7)修改Spark-defaults.conf文件。[root@hadoop001]#cd$Spark_HOME/conf[root@hadoop001conf]#vimworkershadoop001hadoop002hadoop003三、任务实现#开启记录事件日志的功能Spark.eventLog.enabledtrue#设置事件日志存储的目录Spark.eventLog.dirhdfs://nameservice/Spark/log#设置HistoryServer加载事件日志的位置Spark.yarn.historyServer.addresshttp://hadoop001:19888/jobhistory/logs#设置HistoryServerUI端口Spark.history.ui.port18080三、任务实现(8)修改Spark-env.sh文件。[root@hadoop001~]#cd$Spark_HOME/conf[root@hadoop001conf]#vimSpark-env.sh#配置JAVA_HOMEexportJAVA_HOME=/opt/software/bigdata/jdk/jdk1.8.0_381#配置SparkMaster节点IPSpark_MASTER_HOST=hadoop001#配置SparkMaster端口Spark_MASTER_PORT=7077三、任务实现#配置HADOOP_HOMEexportHADOOP_HOME=/usr/local/ha/hadoop-3.3.5/#配置SparkMasterUI端口Spark_MASTER_WEBUI_PORT=8989#配置SparkWORKERUI端口Spark_WORKER_WEBUI_PORT=8020#配置HADOOP_HOMEexportHADOOP_HOME=/opt/software/bigdata/hadoop/hadoop-3.3.4#配置Hadoop配置文件路径三、任务实现exportHADOOP_CONF_DIR=/opt/software/bigdata/hadoop/hadoop-3.3.4/etc/hadoop#配置YARN配置文件路径exportYARN_CONF_DIR=/opt/software/bigdata/hadoop/hadoop-3.3.4/etc/hadoop#设置通用JVM参数exportSpark_DAEMON_JAVA_OPTS="-DSpark.deploy.recoveryMode=ZOOKEEPER-DSpark.deploy.zookeeper.url=hadoop001,hadoop002,hadoop003三、任务实现-DSpark.deploy.zookeeper.dir=/Spark"#配置Hadoop目录中的CLASSPATHexportSpark_DIST_CLASSPATH=$(/opt/software/bigdata/hadoop/hadoop-3.3.4/bin/hadoopclasspath)#设置Spark日志配置exportSpark_HISTORY_OPTS="-DSpark.history.ui.port=18080-DSpark.history.fs.logDirectory=hdfs://nameservice/Spark/log-DSpark.history.retainedApplications=30"三、任务实现(9)分发Spark文件到其他两个节点。[root@hadoop001bigdata]#sh$Spark_HOME/sbin/start-all.sh(10)启动Spark集群。启动hadoop001上的master和所有的slave节点。[root@hadoop001~]#cd/opt/software/bigdata/[root@hadoop001bigdata]#scp-rSpark/hadoop002:/opt/software/bigdata/[root@hadoop001bigdata]#scp-rSpark/hadoop003:/opt/software/bigdata/三、任务实现shxcall.sh"jps-ml|grepSpark"在hadoop001上执行jps进程可以查看到master和worker进程是否启动,如图1-44所示。图1-44查看master和worker是否启动三、任务实现[root@hadoop002~]#sh$Spark_HOME/sbin/start-master.sh(11)分别在hadoop002上启动standbymaster。图1-45查看master是否启动执行jps进程可以查看hadoop002节点master是否启动,如图1-45所示。三、任务实现(12)查看Web界面,登录到hadoop001、hadoop002的UI界面,分别如图1-46和图1-47所示。图1-46hadoop001节点监控界面图1-47hadoop002节点监控界面三、任务实现[root@hadoop001~]#Spark-submit--classorg.apache.Spark.examples.SparkPi\--masterSpark://hadoop001:7077,hadoop002:7077\--executor-memory512MB\--total-executor-cores4\/opt/software/bigdata/Spark/Spark-3.2.3-bin-hadoop3.2/examples/jars/Spark-examples_2.12-3.2.3.jar10(13)验证Spark功能,执行SparkPI。这里运行官方示例“计算PI的值”,将计算任务提交到Spark集群。三、任务实现代码说明如下:--master:master的地址,指提交任务到哪里执行,例如,Spark://host:port,yarn,local。--executor-memory:每个Executor的内存,默认是1GB。--total-executor-cores:所有Executor的核数。仅在mesos或standalone模式下使用。三、任务实现运行结果如图1-48所示,web-UI监控界面如图1-49所示。图1-46hadoop001节点监控界面图1-49运行任务的web-UI监控界面三、任务实现(14)Spark-SQL对接Hive。将HIVE-site.xml文件复制到Spark_HOME/confvnf目录下,然后重启Spark集群即可,如图1-50所示。[root@hadoop001~]#cp$HIVE_HOME/conf/HIVE-site.xml$Spark_HOME/conf图1-50对接Hive三、任务实现[root@hadoop001~]#Spark-sql\--masterSpark://hadoop001:7077,hadoop002:7077\--executor-memory512MB\--num-executors4查看数据库,如图1-51所示。Spark-sql>showdatabases;图1-51查看数据库3(15)验证Spark-SQL。三、任务实现Spark-sql>usetemp;进入temp数据库,如图1-52所示。图1-52进入temp数据库查看表,如图1-53所示。Spark-sql>showtables;图1-53查看表3三、任务实现Spark-sql>insertintostu2values(2,"tom");插入数据,如图1-54所示。图1-54插入数据3查询数据,如图1-55所示。Spark-sql>select*fromstu;图1-55查询数据3三、任务实现[root@hadoop001bigdata]#sh$Spark_HOME/sbin/stop-all.sh在hadoop001上执行jps进程可以查看mater和worker进程是否停止,如图1-56所示。shxcall.sh"jps-ml|grepSpark"图1-56查看进程1(16)停止集群方法(在hadoop001上执行)。三、任务实现[root@hadoop002bigdata]#sh$Spark_HOME/sbin/stop-master.sh在hadoop002上执行以下进程。在hadoop002上执行jps进程可以查看master进程是否停止,如图1-57所示。[root@hadoop002sbin]#jps-ml|grepSpark图1-57查看进程2(一)在国家战略层面的地位四、知识拓展——基于Spark技术的国家数字化发展战略引擎Spark技术不仅在商业领域取得了显著成果,更在我国信息化发展战略中扮演着重要角色。随着“互联网+”“数字中国”等政策的推进,Spark在政务、教育、医疗、能源等领域的应用日益广泛,有力支撑了我国数字化转型和新型基础设施建设。例如,在智慧城市项目中,Spark被用于整合和分析来自交通、环保、公共安全等多部门的数据资源,助力城市管理者做出科学决策,提高城市管理效能;在疫情防控、社会治理等方面,Spark也发挥了重要作用,通过实时分析海量数据辅助疫情追踪、防控策略制定等工作。(二)华为Spark应用领域四、知识拓展——基于Spark技术的国家数字化发展战略引擎华为作为全球领先的信息和通信技术解决方案供应商,在大数据处理领域深度应用了ApacheSpark技术。具体应用如下。(1)数据分析优化。(3)云计算服务。(2)5G与物联网(IoT)融合。(三)国内一些厂商Spark应用情况四、知识拓展——基于Spark技术的国家数字化发展战略引擎阿里巴巴集团旗下的阿里云在其MaxCompute(原名ODPS)大数据平台上集成了Spark,支持用户进行交互式查询、流式计算等多种场景的数据处理,服务于电商、金融、物流等多个行业的海量数据分析。腾讯同样在内部大数据平台及对外提供的云服务中广泛应用Spark技术。例如,在社交网络数据分析、广告推荐系统等领域,借助Spark强大的并行计算能力实现大规模数据的快速处理与价值挖掘。四、知识拓展——基于Spark技术的国家数字化发展战略引擎总体而言,Spark技术在国内的广泛应用充分体现了其在大数据处理方面的核心竞争力,同时也积极响应了国家数字化发展战略的需求,对我国经济社会发展起到了重要的技术支持作用。搭建Spark考评记录表任务实现心得:____________________________________________________________________________________五、任务考评姓名完成日期序号考核内容标准分/分评分/分1安装虚拟机软件与虚拟机102安装远程服务器管理工具103安装JDK204搭建Hive环境405安装Spark分布式独立集群20总评分100六、任务实训任务实训搭建项目所用的环境任务步骤1.本机安装远程服务器管理工具。2.本机安装VMware、虚拟机。3.在虚拟机中安装JDK。4.在虚拟机中搭建Hive和Spark分布式独立集群。5.验证SparkSQL的执行任务目标掌握搭建开发环境的方法任务总结感谢您的观看项目数据采集任务二一、任务说明(一)学习目标(1)了解常用的大数据采集工具。(2)掌握Sqoop的数据采集原理和方法。(3)掌握Flume的实时数据采集原理和方法。知识目标一、任务说明您的内容打在这里,或者通过复制您的文本后,在此框中选择粘贴,并选择只保留文字。(1)能设计和实施数据采集策略,针对不同场景选择合适的数据导入方式。(2)能编写脚本或程序实现从不同源头采集数据。(3)能够对数据质量进行初步评估和预处理。(4)能够使用Sqoop和Flume完成数据采集任务。能力目标(1)建立数据驱动意识,重视数据质量及完整性。(2)建立数据安全意识,了解数据采集过程的安全策略。(3)提升跨领域协作能力,能在数据获取阶段与团队成员进行有效沟通。素质目标一、任务说明(二)思维导图本任务思维导图如图2-1所示。图2-1项目数据采集思维导图二、知识引入(一)数据采集的概念和常用工具数据采集是指将应用程序产生的数据和日志等同步到大数据系统中。数据源可以是数据库、文件、API等。在进行数据采集时,需要考虑数据来源的可靠性、数据格式的一致性及数据质量的高低。数据库同步通常使用Sqoop,日志同步可以选择Flume,打点采集的数据经过格式化转换后通过Kafka等消息队列进行传递。常见工具如下:二、知识引入(1)Sqoop。这是一个用于将结构化数据存储(如关系型数据库)导入Hadoop中的工具。它可以高效地将大量数据从关系型数据库导入Hadoop的HDFS、Hive、HBase等存储系统中,也可以将数据从Hadoop导出到关系型数据库。(2)Flume。这是一个分布式、可靠且可用的服务,用于有效地收集、聚合和移动大量日志数据。它可以用来将日志数据从源头传输到目的地。例如,从Web服务器传输到Hadoop。二、知识引入(3)Logstash。这是一个强大的数据收集引擎,用于实时处理和传输大量数据。它可以用来接收、解析、转换和传输各种类型的数据,如日志数据、网络数据等。(4)ApacheKafka。这是一个分布式流处理平台,可以实时地处理和传输大量的数据流。它具备高吞吐量、低延迟、高可靠性的数据传输能力,常用于构建实时流处理应用。(5)ApacheBeam。这是一个用于大数据处理的统一编程模型,支持批处理和流处理两种模式。它提供了统一的API和运行时,支持多种数据源和数据处理引擎,可以方便地进行大规模数据的导入和导出。(二)数据采集的多元视角与深度实践在大数据领域,数据采集不限于使用Sqoop从关系型数据库(如MySQL)中抽取数据到Hadoop。实际上,数据源的多样性、数据格式各异及实时性需求等因素使得数据采集具有更为丰富的内涵和复杂度。二、知识引入1.多类型数据源集成二、知识引入(1)NoSQL数据库采集。(2)消息队列采集。MongoDB、Cassandra等NoSQL数据库的数据可以通过各自的驱动程序或适配器迁移至Hadoop。Kafka、RabbitMQ等消息队列中的流式数据可以被实时抓取并输入流处理系统(如ApacheStorm、Flink)或存入HDFS。二、知识引入(3)日志文件采集。(4)API接口数据采集。使用Flume、Logstash等工具对服务器日志、应用日志进行收集,并通过自定义解析规则转化为结构化数据存储至Hadoop。许多服务提供RESTfulAPI接口,可通过编程方式调用获取数据,并整合到大数据平台。2.数据格式转换与预处理二、知识引入数据在采集过程中可能需要进行清洗、过滤、转换等预处理工作,以满足后续分析和存储的需求。
例如,使用ETL(ExtractTransformLoad)工具ApacheNiFi、PentahoDataIntegration(Kettle)等完成这一过程。二、知识引入3.实时数据流处理4.大规模分布式数据采集针对实时数据流场景,采用流处理技术实现实时数据采集与处理。例如,结合SparkStreaming、FlinkCDC等功能来捕获数据库变更记录,并实时更新Hadoop或其他存储系统中的数据。当面对非常庞大的数据集或需要从多个地理位置分布的数据源进行同步采集时,需要设计和实施分布式数据采集策略,确保数据的一致性和完整性。二、知识引入5.数据安全与合规6.边缘计算与物联网数据采集在数据采集的过程中,必须遵循相关的法规政策,保护用户隐私和个人信息的安全,同时实施数据脱敏、加密传输等安全保障措施。物联网设备产生的大量实时数据通常首先在边缘节点进行初步处理和筛选,再上传到云端或中心化的Hadoop集群。在这种情况下,需要考虑边缘计算框架的支持,如ApacheEdgent、AWSIoTGreengrass等。(三)Sqoop概述Sqoop全称为SQLtoHadoop,是一个用于在ApacheHadoop与关系型数据库之间高效传输大量结构化数据的工具。其技术原理基于MapReduce框架,涵盖了数据导入与导出的核心过程,如图2-2所示。图2-2Sqoop的应用场景二、知识引入(1)数据导入原理(Import)。二、知识引入首先,Sqoop使用JDBC(JavaDatabaseConnectivity)与目标关系型数据库建立连接。通过此连接,Sqoop能够检索数据库中的表及其列信息,包括数据类型。①连接与元数据检索。Sqoop将关系型数据库的SQL数据类型转换为Hadoop中的相应Java数据类型,为后续的数据处理和存储做准备。②数据类型映射。二、知识引入基于表的结构信息,Sqoop自动生成一个与表名相同的Java类,用于序列化表中的每一行记录。③
表类生成。在这一阶段,Sqoop生成一个MapReduce作业。Map阶段从数据库读取数据,根据Sqoop的转换规则将其转换为Hadoop可以处理的格式,然后写入HDFS。④MapReduce作业。经过MapReduce处理后的数据被存储在HDFS中,为后续的数据处理和分析提供基础。⑤
数据存储。(2)数据导出原理(Export)。二、知识引入Sqoo从HDFS中读取数据,并根据目标数据库的数据格式要求进行转换。用户需指定要导出的表的结构,包括列名、对应的数据类型等信息。Sqoop根据用户提供的表结构和数据格式在目标关系型数据库中创建相应的表。②
表创建。③
数据读取与转换。①
表结构定义。二、知识引入④MapReduce作业。类似地,Sqoop将导出的命令翻译为一个MapReduce作业。在作业的Map阶段,数据从HDFS读取并进行必要的格式转换;在Reduce阶段,数据被写入目标关系型数据库中。经过转换后的数据被写入指定的关系型数据库表中。⑤
数据写入。(3)高级特性。二、知识引入在数据导入或导出过程中,为了确保数据的完整性和准确性,Sqoop提供了数据校验功能。这包括但不限于检查数据的长度、范围及与其他数据的匹配度等。③
数据校验。为了加速大数据量的导入和导出过程,Sqoop支持并行传输。这意味着多个任务可以同时进行,从而显著提高数据传输的速度。②
并行传输。为了降低数据传输过程中的带宽需求和提高存储效率,Sqoop支持对传输的数据进行压缩。常见的压缩算法有Gzip和Snappy等。①
数据压缩。(四)Flume概述Flume是一个分布式、可靠、可用的系统,主要用于海量日志数据的采集、聚合和传输。它被广泛应用于大数据环境中,特别是与Hadoop生态系统集成,将日志数据从各种源传输到Hadoop等存储系统,如图2-3所示。图2-3Flume的应用场景二、知识引入(1)核心原理。二、知识引入Flume的数据流处理主要包括三个阶段:源(Source)、通道(Channel)和汇(Sink)。在源阶段,数据从各种数据源流入Flume。这些源可以是文件、网络端口、消息队列等。数据从源流入后,会被放入通道中进行暂存。通道是一个缓冲区,用于存储从源获取的数据,直到数据被传输到汇阶段。汇阶段是数据的最终目的地,可以是文件系统、数据库或Hadoop等存储系统。①
数据流处理。二、知识引入Flume通过使用事务性机制来确保数据传输的可靠性。每当数据从一个Agent传输到另一个Agent时,都会启动一个事务。事务的commit操作会将数据写入目标存储,从而确保即使在传输过程中发生故障,数据也不会丢失。②
可靠性保障。为了处理大规模数据,Flume采用了分布式架构。这意味着它可以同时从多个源接收数据,并将这些数据传输到单一或多个目标存储系统。这种分布式特性使得Flume能够高效地处理大量数据,并具有良好的可扩展性。③
分布式架构。(2)应用场景。二、知识引入Flume的应用场景非常广泛,尤其适用于需要大规模日志采集和传输的场景。例如,它可以用于以下情况:①
日志采集。从Web服务器、应用服务器或数据库中收集日志数据,并将其传输到Hadoop或其他存储系统进行后续分析。②
实时数据处理。结合其他工具(如Spark、Flume)可以用于实时处理和转换从各种源收集的数据。③
数据整合。将来自不同源的数据整合到一个中心存储系统,以便进行统一的数据分析和挖掘。(一)安装Sqoop三、任务实现(1)将Sqoop安装包上传到hadoop001服务器的/opt/software/package目录下,如图2-4所示。首先下载安装包。
使用浏览器访问以下链接:https://arcHIVE./dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz。图2-4上传Sqoop安装包三、任务实现(2)将Sqoop安装包解压到/opt/software/bigdata/sqoop目录下。(3)配置环境变量,执行“vim/etc/profile”命令,将如下配置放到文件末尾。[root@hadoop001package]#tar-xvfsqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/opt/software/bigdata/sqoop/#SQOOP_HOMEexportSQOOP_HOME=/opt/software/bigdata/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0exportPATH=$SQOOP_HOME/bin:$PATH三、任务实现(4)按“Esc”键,执行“:wq”命令,保存并退出。(5)重新加载环境变量。source/etc/profile(6)验证Sqoop安装结果,如图2-5所示。[root@hadoop001package]#sqoopversion三、任务实现图2-5验证Sqoop安装结果三、任务实现[root@hadoop001MySQL-connector-java-5.1.49]#cpMySQL-connector-java-5.1.49.jar/opt/software/bigdata/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0/lib/①
配置Sqoop连接MySQL所需的JDBC驱动,通常需要将MySQLJDBC驱动jar包添加到Sqoop类路径中。(7)连接数据库验证。至此Sqoop安装完成。下面结合Hadoop环境进行Sqoop功能验证。三、任务实现[root@hadoop001MySQL-connector-java-5.1.49]#MySQL-hhadoop001-P3306-uroot-proot②
在MySQL中创建用户并赋予其对所需数据库及表的读取权限。确保Sqoop能通过JDBCURL、用户名和密码连接到MySQL数据库,如图2-6所示。图2-6验证MySQL状态三、任务实现[root@hadoop001~]#sqoop\list-databases\--connectjdbc:MySQL://hadoop001:3306/?useSSL=false\--usernameroot\--passwordroot③
使用Sqoop查看MySQL的库表,验证Sqoop功能。如图2-7所示。三、任务实现图2-7测试获取数据库列表(二)获取电力离线数据三、任务实现在本任务中,通过程序模拟生成全国各区县的用电量数据,采用全国各县区数据按照数据随机产生的形式来生成,并将数据存储到MySQL或本地csv文件中。第一步,下载电力测试数据并将其写入MySQL数据库。将测试数据下载到本地,然后通过MySQL的导入工具将其导入MySQL数据库中。第三步,使用Sqoop的import命令将数据导入Hive中。第二步,编写SQL查询语句,从数据库中提取所需的数据。三、任务实现(1)修改Sqoop的配置文件。[root@hadoop001~]#cd$SQOOP_HOME/conf[root@hadoop001conf]#mvsqoop-env-template.shsqoop-env.sh[root@hadoop001conf]#vimsqoop-env.sh#ZOOKEEPER_HOMEexportZOOKEEPER_HOME=/opt/software/bigdata/zookeeper/apache-zookeeper-3.5.10-binexportPATH=$ZOOKEEPER_HOME/bin:$PATH#HADOOP_HOME三、任务实现exportHADOOP_HOME=/opt/software/bigdata/hadoop/hadoop-3.3.4exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoopexportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH#HIVE_HOMEexportHIVE_HOME=/opt/software/bigdata/HIVE/apache-HIVE-3.1.3-binexportPATH=$PATH:$HIVE_HOME/binexportHIVE_CONF_DIR=$HIVE_HOME/conf三、任务实现(2)抽取数据。将MySQL的daily_electricity_usage表导入Hive表power_system.daily_electricity_usage中,在导入前要确保Hive中不存在同名的表,如图2-8所示。图2-8将MySQL数据导入Hive三、任务实现[root@hadoop001~]#sqoopimport\--connectjdbc:MySQL://hadoop001:3306/power_system?useSSL=false\--usernameroot\--passwordroot\--tabledaily_electrici
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公共卫生常识竞赛题库
- 2026年信息安全防护技术测评与策略测试
- 2026年浙江省苏教版初中化学下册第11章溶液计算练习
- 2026年小学科学实验与探究专项训练
- 2026年初中物理光学知识点巩固习题
- 2026年浙江省部编版小学语文三年级上册第2单元同步练习题
- 2026年重庆市人教版小学语文五年级第6单元同步练习
- 2026年云南省北师大版小学语文五年级上册第4单元同步练习题
- 2026年四川省人教版初中英语下册第5单元写作专项训练
- 2026年浙江省部编版七年级语文上册第3单元课后练习题
- GB/T 25246-2025畜禽粪肥还田技术规范
- 教学课件-人员测评原理与方法(第二版)侯典牧
- 学前教育政策与法规(第三版) 教案 导论
- 机械测量技术课件
- 公共基础知识1000题题库
- 广州市城市规划审批技术标准与准则(建筑篇)
- 健康生活预防癌症智慧树知到期末考试答案章节答案2024年昆明医科大学
- 2021人民币跨境支付清算信息交换规范
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 《高温熔融金属吊运安全规程》(AQ7011-2018)
- 消防救援-水域救援培训课件
评论
0/150
提交评论