公司开发个网站怎么做,wordpress主题的使用教程,汉川网站推广服务,网站提交入口百度课程资源#xff1a;#xff08;林子雨#xff09;Spark编程基础(Python版)_哔哩哔哩_bilibili 第1章 大数据技术概述#xff08;8节#xff09;
第三次信息化浪潮#xff1a;以物联网、云计算、大数据为标志
#xff08;一#xff09;大数据
大数据时代到来的原因…课程资源林子雨Spark编程基础(Python版)_哔哩哔哩_bilibili 第1章 大数据技术概述8节
第三次信息化浪潮以物联网、云计算、大数据为标志
一大数据
大数据时代到来的原因
技术支撑存储设备价格下降、CPU计算能力多核CPU、网络带宽单机不能够完成海量数据的存储和处理借助网络分布式的集群运算数据产生方式的变革运营式系统阶段如超市购物在数据库系统中生成购物信息 — 用户原创内容阶段 — 感知式系统阶段物联网感知终端如传感器、摄像头、RFID
大数据4V特性
大量化Volume数据量大摩尔定律人类在最近两年产生的数据量相当于之前产生的全部数据量快速化Velocity处理速度快一秒定律数据从生成到决策响应仅需1s1s的响应才能够具备它相应的商业价值多样化Variety数据类型繁多非结构化数据存储于非关系型数据库中 结构化数据具有规范行和列存储于关系型数据库中价值密度低Value但单点价值高
大数据影响
对科学研究的影响科学研究的四种范式分别为 实验-理论-计算事先知道问题-数据从数据中发现问题对思维方式的影响全样而非抽样存储和算力均提升了、效率而非精确全样分析不存在误差放大问题故不再苛求精确度、相关而非因果
大数据关键技术
数据采集数据存储与管理核心一分布式存储解决数据存储问题如GFS/HDFS、BigTable/HBase、NoSQL键值、列族、图形、文档数据库、NewSQL如SQL Azure数据处理与分析核心二分布式处理解决数据高效计算问题如MapReduce、Spark、Flink数据隐私与安全
大数据计算模式
企业不同应用场景对应不同计算模式典型计算模式 批处理计算大规模数据的批量处理MapReduce/Spark流计算流数据的实时计算实时处理实时响应秒级/毫秒级Storm/Flume图计算大规模图结构数据的处理如地理信息系统、社交网络数据Pregel/GraphX查询分析计算大规模数据的存储管理和查询分析Dremel/Hive/Cassandra 二代表性大数据技术
Hadoop、Spark、Flink、Beam
1、Hadoop
不是单一软件是一个生态系统 HDFS分布式文件系统非结构化数据存储【Hadoop关键技术之一】YARN资源调度和管理框架分配计算所需的内存和CPU资源MapReduce分布式计算框架【Hadoop关键技术之二】Hive数据仓库本身并不存储数据数据存储在HDFS里。本质是一个编程接口提供SQL查询分析查询时写的是SQL语句将SQL语句转成MapReduce程序对底层数据进行查询分析Pig数据流处理。数据清洗、转换、加载Pig Latin语言一般和Hive组合使用Mahout数据挖掘和机器学习算法库。实现常用的数据挖掘算法如分类、聚类、回归等单机版—分布式。用MapReduce实现的算法库只需调接口、传参数减少工作量Ambari自动安装、部署、配置、管理Hadoop集群ZooKeeper分布式协作服务负责分布式协调一致性。如协调共享加锁、选管家等Hbase分布式数据库。HDFS面向批处理HBase面向实时计算Flume日志采集工具SqoopETL抽取Extract转换Transform加载Load将历史保存在关系型数据库中的数据抽取出来保存到HDFS中反之亦可。完成Hadoop系统组件之间的互通即Hadoop与关系型数据库数据之间的导入导出
MapReduce编程容易屏蔽底层分布式并行编程细节写MR程序跟写单机程序差别不大自动分发任务到不同机器并收集结果。核心策略为分而治之即把一个大的任务拆分成很多子任务分发到不同机器上并行执行只有满足分而治之的任务才能用MapReduce如词频统计 YARNYet Another Resource NegotiatorHadoop2.0才出现。资源调度管理框架实现“一个集群多个框架”
离线批处理MapReduce实时交互式查询分析Impala流式数据实时分析Storm迭代计算Spark
以前为了防止资源打架会独立部署各个计算框架如1000台机器指定300台部署MapReduce计算框架300台部署Spark计算框架以此类推但这导致开发成本高、集群资源利用率低、底层数据无法共享和无缝集成YARN的出现解决了这一问题 2、Spark
不是单一软件是一个生态系统 Spark Core完成RDD应用开发。满足企业批处理的需求Spark SQL查询分析计算分析关系数据Spark Streaming流计算Structured Streaming结构化数据流MLlib机器学习算法库GraphX编写图计算应用程序
Hadoop vs SparkHadoop存在以下缺点主要是其中MapReduce的缺点
表达能力有限。MapReduce把复杂业务逻辑拆分成Map函数和Reduce函数降低了分布式应用开发的复杂性同时也限制了表达能力磁盘IO开销大。MapReduce是基于磁盘开发的不同阶段的衔接中间结果的存储均涉及读写磁盘。如逻辑斯蒂回归、模拟退火算法、遗传算法等迭代算法都需要使用MapReduce进行反复迭代读写磁盘效率低延迟高。任务分解为多个map和多个reduce完成全部map任务才能进入reduce阶段涉及任务之间的衔接开销难以胜任多阶段的、比较复杂的计算任务尤其是迭代式的计算
Spark有以下优点
Spark本质上计算模式也属于MapReduce但它的操作不再局限于map和reduce如filter过滤、groupBy分组、join连接等等操作类型更多表达能力更强Spark提供内存计算把计算的中间结果放到内存中高效提高迭代计算Spark是基于有向无环图DAG的任务调度机制好于MapReduce的执行机制流水线优化使得很多数据可以一条线地执行下去不用落磁盘进行读写可以大大加快执行速度 QSpark会取代Hadoop吗
Hadoop有两大核心存储框架HDFS分布式文件系统、分布式计算框架MapReduceSpark是一个单纯的计算框架本身不具备存储能力一般和HDFS组合使用数据保存在HDFS中借助于Spark计算。Spark取代的是Hadoop里的计算框架MapReduce而不是Hadoop
3、Flink
不是单一软件是一个生态系统批处理、查询分析、流计算、图计算、机器学习算法库也都有。Flink是和Spark同一类型的计算框架 本质区别Spark是基于RDD的批处理模型Flink是基于一行行的流处理模型实时性好于Spark Streaming
4、Beam
Google提出统一编程接口Beam SDK自动翻译成其他引擎。但目前主流HadoopSpark 第二章 Spark的设计与运行原理8节
一Spark概述
背景MapReduce磁盘读写、IO开销大 —— 提出Spark基于内存的计算框架构建大型的、低延迟的数据分析应用程序
三大分布式计算系统开源项目Hadoop、Spark、Storm
Spark优点
运行速度快基于内存的计算数据很少落磁盘循环数据流DAG有向无环图执行引擎优化执行过程实现流水线优化容易使用支持Java、Scala、R、Python四种编程语言其中Scala可通过Spark Shell进行交互式编程通用性不是单一组件是一个完整的生态系统、完整的解决方案、技术软件栈 SQL查询Spark SQL流式计算Spark Streaming机器学习Spark MLlib图算法组件Spark的GraphX运行模式多样 单机集群本地集群云端集群都支持可访问多种数据源分布式文件系统HDFS、数据库Cassandra、分布式数据库HBase、数据仓库Hive等Spark是计算框架本身不存储数据
Spark vs Hadoop主要是其中MapReduce的缺点
MapReduce缺点表达能力有限、磁盘IO开销大、延迟高Spark优点 操作类型更多表达能力更强内存计算高效提高迭代运算内存计算的意思是能够不落磁盘尽量不落磁盘而不是所有数据都在内存中运行如shuffle必须要落磁盘DAG有向无环图任务调度执行机制 反复读写开销 二Spark生态系统
三大典型应用场景 批处理MapReduce 交互查询数据仓库Impala流处理Storm
问题1无法无缝共享需要进行数据格式转换2维护成本较高3资源利用不充分无法做统一的资源管理分配
Spark一个软件栈满足不同应用场景需求如SQL即席查询、实时流式计算、机器学习、图计算。Spark中各个组件可借助于Yarn进行统一资源调度分配管理
伯克利数据分析软件栈BDASBerkeley Data Analytics Stack Spark的生态系统技术软件栈一站式服务 三Spark运行架构
1、基本概念
RDD弹性分布式数据集。分布式内存的一个抽象概念整个Spark编程最核心的数据抽象提供了一种高度受限的共享内存模型
弹性数据可大可小、分区数目动态可变化分布式分布式保存在多台机器的内存中
DAG有向无环图。反映RDD之间的依赖关系RDD操作会形成DAG
Executor运行在工作节点WorkerNode从节点的一个进程一个进程会派生出很多线程负责运行具体的任务/Task
应用/Application用户编写的Spark应用程序
任务/Task运行在Executor进程上的工作单元任务控制节点Driver Program
作业/Job一个Job包含多个RDD及作用于相应RDD上的各种操作。一个Spark应用程序提交后就是分解成1到多个Job去完成的
阶段/Stage作业的基本调度单位。每个Job会被分解成多组Task每一组Task的集合叫Stage
2、架构设计 一主Driver多从Worker架构 执行应用时Driver会向集群资源管理器申请资源并启动Executor进程向进程发送应用程序的代码和文件应用程序会在进程上派发出线程去执行任务执行结束后将结果返回给Driver提交给用户/HDFS/关系型数据库等 分布式系统的两种架构对等架构P2P一主多从架构Spark、Hadoop都是这种 3、Spark运行基本流程
为Application构建基本的运行环境Driver节点生成SparkContext对象负责整个任务的调度、监控、执行、失败恢复、结果汇总等 运行Executor进程必须要有相关的内存、CPU资源。SparkContext向资源管理器申请资源进行任务的分配和监控集群资源管理器Cluster Manager接到申请后为Executor进程分配CPU、内存资源此时Worker Node上的Executor进程就可以启动了可以派生出很多线程去执行任务任务是怎么来的呢SparkContext根据提交的代码针对RDD的操作生成DAG图交给DAG Scheduler将DAG图分解成Stage每个Stage包含很多TaskTask任务如何分发呢Task Scheduler会把每个阶段的任务分发给不同节点来处理分发基本原则计算向数据靠拢尽量减小数据的移动开销优先把计算分发到数据所在的节点实现数据的本地化处理线程执行完任务后把结果反馈给Task Scheduler再反馈给DAG Scheduler运行结束后写入数据并释放资源 4、RDD的设计与运行原理
MapReduce不适合处理迭代场景如逻辑斯蒂回归、模拟退火算法、遗传算法中间结果反复读写磁盘磁盘IO开销太大反复读写工作子集序列化和反序列化开销
序列化把内存中的对象转化为可保存和传输的格式如Java对象转化为二进制或字符串反序列化从可保存和传输的格式生成对象
RDD为了避免这些问题而出现提供了抽象的数据结构把具体应用逻辑表达为RDD转换不同RDD转换之间的依赖关系即DAG图优化实现数据的管道化流水线化处理即一个操作结束后数据不需要落磁盘马上输入给下一个操作避免数据落地
一个RDD就是一个数据分布式对象的集合本质上是一个只读的分区记录集合可以分布式保存在很多机器上若干分区每个分区放在不同机器上每个分区都是一个数据片段分布式并行处理高效并行计算RDD加载高度受限只读的共享内存模型生成内存当中的数据集合创建后就不能修改了。转化过程中可以修改即通过生成新的RDD来完成一个数据修改的目的RDD提供了丰富的操作类型分为两大类动作类型操作Action、转换类型操作Transformation。均支持粗粒度修改一次只能针对RDD全集进行转换不支持细粒度修改不适合数据库对单条进行修改、不适合网页爬虫高度受限的共享内存模型会不会影响表达能力由于RDD提供的转换操作map、filter、groupBy、join十分丰富可以将其组合实现很多功能。实践证明Spark能力非常强大虽是高度受限的共享内存模型但不会影响表达能力。Spark提供了RDD的API程序员可以通过调用API实现对RDD的各种操作
RDD典型执行过程如下
RDD读入外部数据源进行创建如从底层分布式文件系统读取数据即可完成创建、生成RDDRDD经过一系列转换Transformation操作每一次都会产生不同的RDD供给下一个转换操作使用。一系列转换操作后有一个动作类型操作Action动作类型操作计算得到结果转换类型操作不会计算得到结果
1惰性调用机制前面对RDD的转换操作不会真正执行转换只会记录转换轨迹并不会真正发生计算。只有遇到第一个动作类型的操作才会触发计算执行从头到尾操作从磁盘读取数据到输出 2管道化/流水线优化转换过程中数据不用落地磁盘直接把一个操作的输出给另一个操作作为输入避免了不必要的读写磁盘开销也无需保存中间结果 3MapReuce写代码时若应用复杂则需要写入非常复杂的代码但Spark每个操作都很简单串联起来的操作集合可以完成非常复杂的功能
Spark特性
高效的容错性现有容错机制是数据复制数据备份、记录日志如关系数据库操作写入日志操作失败可回滚等但这两种方式开销太大。Spark有天然容错性恢复数据可通过DAG图寻亲DAG图即血缘关系图中间结果持久化内存而不是到磁盘没有频繁写磁盘而且数据是在内存的多个RDD之间进行传递避免了磁盘IO开销同时也避免了不必要的序列化和反序列化开销
RDD运行原理RDD之间的依赖关系一个RDD应用会分成多个作业一个作业会被分成很多阶段为什么要分成多个阶段以什么为依据拆分多个阶段看依赖关系是宽依赖还是窄依赖
宽依赖划分成多个阶段包含shuffle操作一个父RDD的分区对应多个子RDD的分区如groupByKey、join窄依赖不划分阶段没有包含shuffle操作一个父RDD的分区对应一个子RDD的分区如map、filter或多个父RDD的分区对应一个子RDD的分区如join、union
是否包含shuffle操作是划分宽窄依赖的依据 文件保存在HDFS中进行多任务执行、分区处理。只要发生了shuffle操作一定发生了来回交互的数据的分发。shuffle操作在网络中大规模地来回传输数据不同节点之间互相传数据 宽依赖需要分拆成两阶段窄依赖不用。窄依赖能够有利于作业优化即进行流水线优化中间不落磁盘不join宽依赖不能进行流水线优化只要发生shuffle一定会写磁盘即落地等待
Spark优化原理fork/join机制从一个RDD到另一个RDD的转换都是一个fork一个join。fork即并行执行分区转换结果汇总是join DAG有向无环图反向解析遇到窄依赖就不断添加形成管道化流水线处理遇到宽依赖就断开生成新的阶段Stage因为要发生等待洗牌宽依赖生成不同阶段窄依赖不断加入阶段
阶段Stage内部都是可以并行、流水线化处理阶段之间都是发生了等待 四Spark部署方式
支持单机部署和集群部署。集群部署有以下三种
StandAlone模式使用Spark自带的集群资源管理器来管理整个CPU、内存资源调度。效率不高Mesos模式使用Mesos作为集群资源管理器。性能匹配好Spark on Yarn用的最多
Hadoop包含存储框架HDFS、HBase、计算框架MapReduce等。Spark和Hadoop并不对等而是可能取代MapReduce。Hadoop的HDFS、HBase会继续发挥存储功能存储数据拿给计算框架Spark来计算分析它们共同来满足企业的相关应用场景需求 第3章 Spark环境搭建和使用方法5节
一安装Spark
分布式计算框架存储需要Hadoop运行在Linux系统上Spark底层最终编译成Java字节码运行故需要Java环境Spark 2.4.0需要Java 8以上或JDK 1.8以上Hadoop 2.7.1 安装Hadoop教程包含了安装JavaHadoop安装教程_单机/伪分布式配置_Hadoop2.6.0(2.7.1)/Ubuntu14.04(16.04)_厦大数据库实验室博客 安装SparkApache Spark™ - Unified Engine for large-scale data analytics # 解压安装包spark-2.4.0-bin-without-hadoop.tgz至路径/usr/local
# usr是unix software resource
sudo tar -zxf ~/Downloads/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark # 更改文件夹名
sudo chown -R hadoop ./spark # 此处hadoop为系统用户名把spark目录权限赋予hadoop用户# 配置Spark的classpath这样Spark才能跟Hadoop挂接起来
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh # 拷贝配置文件vim ./conf/spark-env.sh
# 编辑该配置文件在第一行加上如下一行内容
export SPARK_DIST_CLASSPATH$(/usr/local/hadoop/bin/hadoop classpath)# 保存配置文件后就可以用Spark去访问。若需要使用HDFS中的文件则在使用Spark前需要启动Hadoop# 启动Spark ShellScala语言
cd /usr/local/spark
bin/spark-shell
Spark与Hadoop如何交互Spark部署模式
Local模式/单机模式把Hadoop配置成伪分布式模式把NameNode和DataNode都放在一台笔记本电脑上。注HDFS的NameNode数据目录和DataNode具体存储数据一般为一主多从架构即一个NameNode其余全为DataNode 三种集群模式 Standalone模式使用Spark自带的集群资源管理器效率低Yarn模式由Hadoop Yarn为Spark进行CPU和内存资源的调度Mesos模式使用Mesos作为集群资源管理器
Spark单机版和Hadoop伪分布式可以交互访问HDFS文件Spark集群部署模式也是可以和Hadoop集群部署模式相互访问
二在PySpark中运行代码
PySpark是一个交互式的执行环境。Spark Shell也是一个交互式的执行环境但它是Scala语言
开机启动进入Linux环境Shell中输入命令进入PySpark环境
pyspark --master master-url # url不同分别进入不同环境# 直接pyspark回车为local[*]模式
Spark的运行模式取决于传递给 SparkContext 的 master-url 的值。Master URL可以是以下任一种形式
local本地运行模式。用一个worker线程本地化运行spark完全不并行单线程local[*]也是单机环境但不是单线程本地化但有一定的并行程度。使用逻辑CPU个数整个物理CPU个数*每个CPU核数数量的线程来本地化运行sparklocal[K]使用K个worker线程本地化运行spark理想情况下K应根据运行机器的CPU核数设定spark://HOST:PORT集群模式。HOST为主机名如localhostPORT是端口号默认端口是7077。连接到指定的Spark standalone mastermesos://HOST:PORT连接到指定的mesos集群默认接口是5050
取决于运行Spark时的driver节点SparkContext建在哪里
yarn-client集群模式资源调度管理器为yarn。用在程序开发人员调试程序时用以客户端模式连接YARN集群集群的位置可以在HADOOP_CONF_DIR环境变量中找到yarn-cluster集群模式资源调度管理器为yarn。用在企业产品生产上线时用以集群模式连接YARN集群集群的位置可以在HADOOP_CONF_DIR环境变量中找到yarn默认为yarn-client
在Spark中采用本地模式启动PySpark的命令主要包含以下参数
--master表示当前的pyspark要连接到哪个master。如果是local[*]就是使用本地模式启动pyspark其中括号内的星号表示需要使用几个CPU核心也就是启动几个线程模拟Spark集群--jars用于把相关的jar包添加到classpath中。如果有多个jar包可以使用逗号分隔符连接它们
执行 pyspark --help 命令获取完整的选项列表
cd /usr/local/spark
./bin/pyspark --help
执行如下命令启动pyspark默认是local模式
./bin/pyspark
启动pyspark成功后在输出信息的末尾可以看到 的命令提示符。使用命令 exit() 退出pyspark
三开发Spark独立应用程序
编写程序
# WordCount.py 统计文本文件中包含a的行的个数和b的行的个数
from pyspark import SparkConf, SparkContextconf SparkConf().setMaster(local).setAppName(My App) # 生成配置的上下文信息
# MasterURL取值为local模式通过网页查看管理时可以看到应用名称为My Appsc SparkContext(conf conf) # 生成SparkContext对象logFile file:///usr/local/spark/README.md # 若是本地文件是file:///logData sc.textFile(logFile,2).cache() # 把文本文件加载进来生成RDD
# RDD里包含很多元素每个元素对应一行文本numAs logData.filter(lambda line: a in line).count() # 过滤出所有包含单词a的行
# lambda为匿名函数
# 把包含单词a的行全过滤出来放在一个新的RDD中再.count()统计numBs logData.filter(lambda line: b in line).count() # 过滤出所有包含单词b的行print(Lines with a:%s, Lines with b:%s % (numAs,numBs))对于这段Python代码可以直接使用如下命令执行
cd /usr/local/spark/mycode/python
python3 WordCount.py
通过spark-submit运行程序
spark-submit
--master master-url
--deploy-mode deploy-mode # 部署模式
... # 其它参数
application-file # Python代码文件
[application-arguments] # 传递给主类的主方法的参数
执行 spark-submit --help 命令获取完整的选项列表
cd /usr/local/spark
./bin/spark-submit --help
如上述代码以这种方式运行
# 通过spark-submit提交到Spark中运行
/usr/local/spark/bin/spark-submit /usr/local/spark/mycode/python/WordCount.py# 在命令中间使用“\”符号把一行完整命令人为断开成多行进行输入
/usr/local/spark/bin/spark-submit \
/usr/local/spark/mycode/python/WordCount.py
为了避免其他多余信息对运行结果干扰可以修改log4j的日志信息显示级别
从 log4j.rootCategory INFO, console 改成 log4j.rootCategory ERROR, console
四Spark集群环境搭建
假设有3台机器搭建集群Master、Slave01、Slave02且在搭建Spark集群之前Hadoop集群的构建已经完成Hadoop 2.7分布式集群环境搭建_厦大数据库实验室博客 Hadoop集群两大核心组件NameNode一个、DataNode多个即一主多从
Spark集群Driver Node一个Worker Node多个负责具体任务计算且实行数据的本地化处理数据在哪Worker Node就在哪即一主多从
一台机器上既部署了Hadoop的DataNode也部署了Spark的Worker Node即HDFS里的DataNode和Spark的Worker Node共存。这样Spark的Worker Node可以对Hadoop的DataNode数据进行本地化计算 主节点为master在master节点上安装Spark和单机时步骤一样
# 解压安装包spark-2.4.0-bin-without-hadoop.tgz至路径/usr/local
# usr是unix software resource
sudo tar -zxf ~/Downloads/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark # 更改文件夹名
sudo chown -R hadoop ./spark # 此处hadoop为系统用户名把spark目录权限赋予hadoop用户
再执行以下命令
# 在master节点主机的终端中执行
vim ~/.bashrc # 隐藏文件# 在.bashrc添加如下配置
export SPARK_HOME /usr/local/spark
export PATH $PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin# 运行source命令使配置生效
source ~/.bashrc
接下来配置从节点slaves文件
# 将slaves.template拷贝到slaves
cd /usr/local/spark
cp ./conf/slaves.template ./conf/slaves# 编辑./conf/slaves设置WorkerNode把默认内容localhost替换成如下内容一行一个
# 主机名称从节点位于这两个主机上
slave01
slave02# 配置spark-env.sh文件
cp ./conf/spark-env.sh.template ./conf/spark-env.sh # 将spark-env.sh.template拷贝到spark-env.sh# 编辑spark-env.sh添加如下内容
export SPARK_DIST_CLASSPATH$(/usr/local/hadoop/bin/hadoop classpath) # 完成Spark和Hadoop的挂接
export HADOOP_CONF_DIR/usr/local/hadoop/etc/hadoop # 说明Hadoop相关配置信息的目录
export SPARK_MASTER_IP192.168.1.104 # 设置Spark管家节点的IP地址# 将master主机上的/usr/local/spark文件夹复制到各个节点上
cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark # 把主节点spark安装目录打包成文件
cd ~
scp ./spark.master.tar.gz slave01:/home/hadoop # 把压缩包拷贝到两个从节点上
scp ./spark.master.tar.gz slave02:/home/hadoop# 在从节点目录下执行解压缩操作
sudo rm -rf /usr/local/spark/
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/spark # 赋权限
在master节点主机上运行
# 首先启动Hadoop集群
# Spark集群与Hadoop集群是搭配使用Hadoop存数据Spark计算
cd /usr/local/hadoop/
sbin/start-all.sh# 启动master节点在master节点主机上运行如下命令
cd /usr/local/spark/
sbin/start-master.sh# 启动所有Slave节点在master节点主机上运行启动从节点是在主节点上启动
sbin/start-slaves.sh# 在master主机上打开浏览器访问http://master:8080
如何关闭Spark集群
# 关闭master节点master节点上运行
sbin/stop-master.sh# 关闭Worker节点master节点上运行
sbin/stop-slaves.sh# 关闭Hadoop集群
cd /usr/local/hadoop/
sbin/stop-all.sh
五在集群上运行Spark应用程序
1、启动Spark集群
以下命令均在master节点上运行
启动Hadoop集群
cd /usr/local/hadoop/
sbin/start-all.sh
启动Spark的master节点和所有slaves节点
cd /usr/local/spark/ # 进入spark安装目录
sbin/start-master.sh # 启动主节点
sbin/start-slaves.sh # 启动从节点
2、采用独立集群管理器standalone
1在集群中运行应用程序JAR包需要把spark://host:port作为主节点参数传递给spark-submit
用一个程序提交给集群去算Π的值
cd /usr/local/spark/
bin/spark-submit \
--master spark://master:7077 \ # 连接到Standalone独立集群模式使用自带的集群资源管理器
/usr/local/spark/examples/src/main/python/pi.py 21 | grep Pi is roughly # 过滤出有用信息
# 结果为Pi is roughly 3.1415926
2在集群中运行Pyspark
cd /usr/local/spark/
bin/pyspark --master spark://master:7077 # Standalone模式连接到Spark集群# 进入交互式运行环境
textFile sc.textFile(hdfs://master:9000/README.md) # 把底层文件分布式文件系统hdfs里的文件加载进来生成RDD
# hdfs是hdfs://本地文件是file:///
textFile.count() # 统计有多少行
textFile.first() # 取出第一行内容 运行后查看集群信息用户在独立集群管理Web界面查看应用的运行情况http://master:8080/
3、采用Hadoop YARN管理器
yarn-client调试客户端建指挥所客户端提交应用程序后不能关闭yarn-cluster集群里建指挥所客户端提交应用程序后可以关闭客户端
spark-submit
cd /usr/local/spark/
bin/spark-submit \
--master yarn-client \ # yarn-client用来调试
/usr/local/spark/examples/src/main/python/pi.py
确保Hadoop集群已经启动。运行后根据在shell中得到的输出结果地址查看tracking URL复制结果地址到浏览器点击查看Logs再点击stdout即可查看结果
在集群中运行pyspark也可以用pyspark连接到采用Yarn作为集群管理器的集群上交互式
bin/pyspark --master yarn # 默认yarn-client模式# 假设HDFS根目录下已存在一个文件README.md在pyspark环境中执行相关语句
textFile sc.textFile(hdfs://master:9000/README.md)
textFile.count() # 统计RDD有多少元素
textFile.first() # 取出第一行内容
在Hadoop Yarn集群管理Web界面http://master:8088/cluster查看所有应用的运行情况 文章转载自: http://www.morning.qyfrd.cn.gov.cn.qyfrd.cn http://www.morning.xqknl.cn.gov.cn.xqknl.cn http://www.morning.ttxnj.cn.gov.cn.ttxnj.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.btcgq.cn.gov.cn.btcgq.cn http://www.morning.wjndl.cn.gov.cn.wjndl.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn http://www.morning.rnqbn.cn.gov.cn.rnqbn.cn http://www.morning.nmfxs.cn.gov.cn.nmfxs.cn http://www.morning.pqppj.cn.gov.cn.pqppj.cn http://www.morning.smry.cn.gov.cn.smry.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn http://www.morning.fppzc.cn.gov.cn.fppzc.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.kwdfn.cn.gov.cn.kwdfn.cn http://www.morning.mnwsy.cn.gov.cn.mnwsy.cn http://www.morning.zsrjn.cn.gov.cn.zsrjn.cn http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn http://www.morning.wftrs.cn.gov.cn.wftrs.cn http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn http://www.morning.nshhf.cn.gov.cn.nshhf.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.rjrz.cn.gov.cn.rjrz.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.gwdkg.cn.gov.cn.gwdkg.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.mprky.cn.gov.cn.mprky.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.msbmp.cn.gov.cn.msbmp.cn http://www.morning.tgxrm.cn.gov.cn.tgxrm.cn http://www.morning.ygkk.cn.gov.cn.ygkk.cn http://www.morning.yyngs.cn.gov.cn.yyngs.cn http://www.morning.jngdh.cn.gov.cn.jngdh.cn http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn http://www.morning.qnywy.cn.gov.cn.qnywy.cn http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn http://www.morning.wxfjx.cn.gov.cn.wxfjx.cn http://www.morning.zxznh.cn.gov.cn.zxznh.cn http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.qwbht.cn.gov.cn.qwbht.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.nnjq.cn.gov.cn.nnjq.cn http://www.morning.ncfky.cn.gov.cn.ncfky.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.rccbt.cn.gov.cn.rccbt.cn http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.dbfj.cn.gov.cn.dbfj.cn http://www.morning.whnps.cn.gov.cn.whnps.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.xzqzd.cn.gov.cn.xzqzd.cn http://www.morning.dfndz.cn.gov.cn.dfndz.cn http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn http://www.morning.zkbxx.cn.gov.cn.zkbxx.cn http://www.morning.cczrw.cn.gov.cn.cczrw.cn http://www.morning.gjws.cn.gov.cn.gjws.cn http://www.morning.yxshp.cn.gov.cn.yxshp.cn http://www.morning.ktdqu.cn.gov.cn.ktdqu.cn http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn