开发环境


基本操作

Ref:Spark的环境搭建

一、启动集群

先启动hadoop,再启动spark,查看启动后的状态:http://node-master:8080

start-all.sh
start-master.sh
start-slaves.sh

关闭顺序:stop-master.sh --> stop-slaves.sh --> stop-all.sh。

二、命令行

在Spark中存在着多种运行模式,可使用本地模式运行、可使用伪分布式模式运行、使用分布式模式也存在多种模式如:Spark Mesos模式、Spark YARN模式;

Spark Mesos 官方推荐模式,通用集群管理,有两种调度模式:粗粒度模式(Coarse-grained Mode)与细粒度模式(Fine-grained Mode)
Spark YARN Hadoop YARN资源管理模式
Standalone 简单模式或称独立模式,可以单独部署到一个集群中,无依赖任何其他资源管理系统。不使用其他调度工具时会存在单点故障,使用Zookeeper等可以解决
Local 本地模式,可以启动本地一个线程来运行job,可以启动N个线程或者使用系统所有核运行job

本地运行

  1. 本地单线程模式:pyspark --master local
  2. 本地多线程模式:pyspark --master local[*]   # default
  3. 本地多线程模式:pyspark --master local[K]

在程序执行过程中,只会生成一个SparkSubmit进程。

    • 既是客户提交任务的 clent进程
    • 又是Spark的 driver程序、[启动start-history-server.sh服务查看]
    • 还充当着Spark执行Task的 executor角色

模拟集群

SparkSubmit 依然充当全能角色,又是Client进程,又是driver程序,还有点资源管理的作用。

提交应用程序时使用 local-cluster[x,y,z] 参数:

x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数。

spark-submit --master local-cluster[, , ]
spark-shell --master local-cluster[, , ]

上面这条命令代表会使用2个executor进程,每个进程分配3个core和1G的内存,来运行应用程序。

集群运行

  1. 集群多线程模式:pyspark --master spark://HOST:PORT(默认7077)

三、Yarn 集群控制

两种 “部署模式”

  1. 开发模式:yarn-client(默认模式),spark driver建立在client上,非集群上,导致client不能关机。
  2. 生产模式: yarn-cluster
# 集群的位置
hadoop@node-master$ echo $HADOOP_CONF_DIR
/home/hadoop/hadoop/etc/hadoop
你要切换到 yarn-cluster模式 或者 yarn-client模式,很简单,将我们之前用于提交spark应用程序的spark-submit脚本,加上--master参数,设置为yarn-cluster,或yarn-client,即可。如果你没设置,那么,就是 standalone模式
 

提交应用

一个例子,pyspark在提交时,选择以哪种模式运行。
#!/usr/bin/env bash
spark-submit \
--master yarn \
--deploy-mode cluster \
--conf spark.shuffle.service.enabled=true \
--queue xxx \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.default.parallelism=1000 \
--conf spark.sql.shuffle.partitions=1000 \
--py-files dependencies/dependencies.zip \
--executor-memory 18g \
--executor-cores 3 \
--conf spark.blacklist.enabled=true dependencies/test.py $1 $2 $3 $4 $5 $6 $7 $8

四、添加.jar包

运行程序时依赖时使用。

$ cd /usr/local/spark
$ ./bin/pyspark -master local[4] --jars code.jar

五、小程序示范

通过pyspark实现wordcount。在编写spark代码时,也可以给SparkContext的setMaster()方法,传入这个master URL地址;然后我们的spark作业,就会使用standalone模式连接master,并提交作业。

from pyspark import SparkConf, SparkContext

# Init.
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///usr/local/spark/README.md" # Load.
logData = sc.textFile(logFile, 2).cache()

# RDD.
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count() print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

提交执行。

$ /usr/local/spark/bin/spark-submit WordCount.py

六、测试程序

关闭调试信息,可以改为 INFO --> ERROR

hadoop@node-master$ find spark/ -name "*" | xargs grep "log4j.rootCategory="
spark/conf/log4j.properties.template
:log4j.rootCategory=INFO, console

跟OpenCV一样,这里是个大宝藏。

./bin/spark-submit examples/src/main/python/pi.py
hadoop@node-master$ spark-submit --master spark://node-master:7077 --deploy-mode client examples/src/main/python/
als.py ml/ pi.py streaming/
avro_inputformat.py mllib/ sort.py transitive_closure.py
kmeans.py pagerank.py sql/
wordcount.py
logistic_regression.py parquet_inputformat.py status_api_demo.py

七、单机与集群对比

可见,集群运行要快很多。

集群操作

Ref: 看了之后不再迷糊-Spark多种运行模式

真的物理集群,不是伪集群。

1,测试或实验性质的本地运行模式 (单机)

2,测试或实验性质的本地伪集群运行模式(单机模拟集群)

3,Spark自带Cluster Manager的Standalone Client模式(集群)

Ref: 122、Spark核心编程进阶之单独启动master和worker脚本 [必要是,单独自定义配置各个worker]

(1) 为什么我们有的时候也需要单独启动master和worker进程呢?

在单独启动两个进程的时候,是可以通过命令行参数,为进程配置一些独特的参数。
比如说监听的端口号、web ui的端口号、使用的cpu和内存。
比如你想单独给某个worker节点配置不同的cpu和内存资源的使用限制,那么就可以使用脚本单独启动这个worker进程的时候,通过命令行参数来设置。

运行的命令:

Worker状态查看:

4,spark自带cluster manager的standalone cluster模式(集群)

hadoop@node-master$ spark-submit --master spark://node-master:7077 --deploy-mode cluster examples/src/main/python/ml/chi_square_test_example.py 
Exception in thread "main" org.apache.spark.SparkException: Cluster deploy mode is currently not supported for python applications on standalone clusters.
at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.doRunMain$(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit$$anon$.doSubmit(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

5,基于YARN 的Resource Manager的Client模式(集群)

6,基于YARN 的Resource Manager的Custer模式(集群)

现在越来越多的场景,都是Spark跑在Hadoop集群中,所以为了做到资源能够均衡调度,会使用YARN来做为Spark的Cluster Manager,来为Spark的应用程序分配资源。

自然地,需要通过yarn的web ui查看状态。

Spark Mesos 模式

/* implement */

[PySpark] Build R&D environment的更多相关文章

  1. Create a Hadoop Build and Development Environment

    Create a Hadoop Build and Development Environment http://vichargrave.com/create-a-hadoop-build-and-d ...

  2. Build up java environment(配置java环境)

    1,配置环境变量 我的电脑,右键计算机图标,点击“属性” 点击“高级系统设置” 点击“环境变量” “系统变量”一栏,点击“新建” 弹出输入“变量名”.“变量值”窗口 “变量名”输入“JAVA_HOME ...

  3. [Note] Build your SDL2 Environment in Visual Studio 2013 配置你的SDL2运行环境

    Right key your project in "solution manager(解决方案资源管理器)", choose the "Property(属性)&quo ...

  4. [Tensorflow] Object Detection API - build your training environment

    一.前期准备 Prepare protoc Download Protocol Buffers Create folder: protoc and unzip it. unsw@unsw-UX303U ...

  5. gbs build使用说明

    注:本文从:https://source.tizen.org/documentation/articles/gbs-build 翻译而来. 1 前言 通过使用gbs build指令,开发者可以在本地编 ...

  6. 配置 Sublime Text 3 作为Python R LaTeX Markdown IDE

    配置 Sublime Text 3 作为Python R LaTeX Markdown IDE 配置 Sublime Text 3 作为Python IDE IDE的基本功能:代码提醒.补全:编译文件 ...

  7. ANT build.xml文件详解

    Ant的优点 跨平台性.Ant是用Java语言编写的,所示具有很好的跨平台性. 操作简单.Ant是由一个内置任务和可选任务组成的. Ant运行时需要一个XML文件(构建文件). Ant通过调用targ ...

  8. 浩哥解析MyBatis源码(二)——Environment环境

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...

  9. 使用Angular CLI进行Build (构建) 和 Serve

    第一篇文章是: "使用angular cli生成angular5项目" : http://www.cnblogs.com/cgzl/p/8594571.html 第二篇文章是: & ...

随机推荐

  1. sklearn--决策树和基于决策树的集成模型

    一.决策树 决策树一般以选择属性的方式不同分为id3(信息增益),c4.5(信息增益率),CART(基尼系数),只能进行线性的分割,是一种贪婪的算法,其中sklearn中的决策树分为回归树和分类树两种 ...

  2. asterisk搭建goip

    利用asterisk来搭建goip使用,步骤如下: 第一步:先需要搭建centos服务器并优化 搭建centos服务器就省略: 优化centos服务器,进行如下步骤: 关闭防火墙:systemctl ...

  3. PAT Advanced 1020 Tree Traversals (25 分)

    1020 Tree Traversals (25 分)   Suppose that all the keys in a binary tree are distinct positive integ ...

  4. java--springmvc

    springmvc请求图 SpringMVC内部的执行流程1.用户发起到达中央调度器DispatcherServlet2.中央调度器DispatcherServlet把请求(some.do)交给了处理 ...

  5. Python&Selenium智能等待方法封装

    摘要:本篇博文用几行代码展示Python和Selenium做自动化测试时常见的显示等待和封装 # 用于实现智能等待页面元素的出现 # encoding = utf-8 ""&quo ...

  6. runloop 小记

    一.什么是runLoop 1.说白了,runloop就是运行循环 2.runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程.但是,对于主线程是不能退出的,因此 ...

  7. c#使用 StackExchange.Redis 封装 RedisHelper

    公司一直在用.net自带的缓存,大家都知道.net自带缓存的缺点,就不多说了,不知道的可以查一查,领导最近在说分布式缓存,我们选的是redis,领导让我不忙的时候封装一下,搜索了两天,选了选第三方的插 ...

  8. python中函数的参数传递小结

    “”“ 函数的参数 --必须参数,默认参数,组合参数 --函数我作为参数 --对象作为参数 --*args  可变参数 --**kwargs关键字参数 “”” def function1(a,b,*a ...

  9. error MSB6006: “cmd.exe”已退出,代码为 3。

    error MSB6006: “cmd.exe”已退出,代码为 3. 这两天调程序遇到一个奇怪的问题. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4. ...

  10. [引用]MATLAB中的fft后为何要用fftshift

    原文地址:MATLAB中的fft后为何要用fftshift fft是一维傅里叶变换,即将时域信号转换为频域. fftshift是针对频域的,将FFT的DC分量移到频谱中心,重新排列fft,fft1和… ...