Spark集群

0.0体验安装Spark在集群单节点

1.tar
tar -xzvf xxx.tgz -C /soft/
ln -s /soft/spark-2.1.0-bin-hadoop2.7 /soft/spark 2.配置环境变量
SPARK_HOME=/soft/spark
PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
3.启动spark shell RDD:
Resilient Distributed dataset , 弹性分布式数据集。List 使用spark实现wordcount:
//分步实现
val rdd1 = sc.textFile("file:///home/centos/1.txt");
val rdd2 = rdd1.flatMap(line=>{line.split(" ")})
val rdd3 = rdd2.map(word=>{(word , 1)})
val rdd4 = rdd3.reduceByKey((a:Int,b:Int)=>{a + b})
rdd4.collect() //一步完成(reduceByKey)
sc.textFile("file:///home/centos/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect() //一步完成(groupByKey)
sc.textFile("file:///home/centos/1.txt").flatMap(_.split(" ")).map((_,1)).groupByKey().mapValues(_.size).collect()

===========================================

Spark集群分类

    1.local
使用一个jvm模拟spark集群
2.standalone
启动master + worker进程
3.mesos
--
4.yarn
spark on yarn , 在yarn执行spark的job。根本不需要spark集群。
spark只是一个hadoop的job。

2."standalone"模式spark集群

2.1(安装+standalone)

1.规划
s201 ~ s204
s201 //master(进程)
s202 ~ s204 //worker(进程) 2.在每个主机上分别安装spark 3.配置spark(每个节点进行相同操作)
3.1)在spark的conf目录下创建hadoop的core-site.xml和hdfs-site.xml软连接
$>xcall.sh ln -s /soft/hadoop/etc/hadoop/core-site.xml /soft/spark/conf/core-site.xml
$>xcall.sh ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/spark/conf/hdfs-site.xml 3.2)配置JAVA_HOME环境变量
$>cd /soft/spark/conf
$>cp spark-env.sh.template spark-env.sh
$>nano spark-env.sh
...
export JAVA_HOME=/soft/jdk
... 3.3)修改slaves文件
$>cd /soft/spark/conf
$>cp slaves.template slaves
$>nano slaves
s202
s203
s204 3.4)分发配置文件
$>xsync.sh spark-env.sh
$>xsync.sh slaves 4.启动spark集群
4.1)启动hadoop集群
xzk.sh start //启动zk
start-dfs.sh //启动hdfs
4.2)启动spark(standalone模式)
$>cd /soft/spark/sbin
//
$>./start-all.sh 5.webui
http://s201:8080 6.启动spark shell,连接到spark集群
$>spark-shell --master spark://s201:7077
$>sc.textFile("/user/centos/data/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect()

2.2导出idea下的项目成为jar包,部署到spark集群上运行

1.修正代码
if (args == null || args.length == 0) {
throw new Exception("需要指定文件路径") ;
}
SparkConf conf = new SparkConf();
conf.setAppName("tagTenJava"); //conf.setMaster("local"); 2.导出jar,添加依赖的第三方类库
导入第三方依赖的库. 3.传输到centos 4.使用spark-submit提交应用
spark-submit --class TaggenScala1 --master spark://s201:7077 myspark.jar /user/centos/data/tags.txt
spark-submit --class com.p2p.spark.mr.TaggenJava2 --master spark://s201:7077 myspark.jar /user/centos/data/tags.txt

spark下运行job,使用第三方的jar的方式

1.将第三方jar分发到所有的spark/jars下
2.将第三方jar打散,和我们自己的jar打到一起。
3.在spark-submit命令中,通过--jars指定使用的第三方jar包

使用spark-shell执行taggen

    1.启动spark-shell,指定fastjson类库。
定位到fastjson jar文件
C:\Users\Administrator\.m2\repository\com\alibaba\fastjson\1.2.24\fastjson-1.2.24.jar 2.启动spark-shell
$>spark-shell --master spark://s201:7077 --jars /home/centos/fastjson-1.2.24.jar 3.查看webui
http://s201:8080/
4.
5.

Spark job部署模式 --deploy-mode client VS cluster

spark job的部署有两种模式,client和cluster
spark-submit .. --deploy-mode client | cluster 1.client
默认值,driver运行在client端主机上。
spark-submit --class com.p2p.spark.mr.TaggenJava2 --master spark://s201:7077 hdfs://s201/user/centos/data/myspark.jar /user/centos/data/tags.txt 2.cluster
driver运行在某个worker节点上。客户端值负责提交job。
$>spark-submit --class com.p2p.spark.mr.TaggenJava2 --master spark://s201:7077 --deploy-mode cluster hdfs://s201/user/centos/data/myspark.jar /user/centos/data/tags.txt

3.spark集群模式之yarn

3.1部署集群:

1.停止spark集群
2.启动yarn集群
3.配置HADOOP_CONF_DIR环境变量
[spark-env.sh]
...
export HADOOP_CONF_DIR=/soft/hadoop/etc/hadoop 4.启动shell,使用yarn的方式启动
spark-shell --master yarn --num-executors 4 --executor-cores 5 --executor- memory 1g 5.配置spark归档文件,避免每次spark on yarn重新上传spark资源文件。
5.1)上传zip文件到hdfs
hdfs dfs -put __spark_libs__385163057195536794.zip data 5.2)配置conf/spark-defaults.conf
spark.yarn.archive hdfs://mycluster/user/centos/data/__spark_libs.zip
#spark.dynamicAllocation.enabled true
#spark.shuffle.service.enabled true

3.2故障

1.虚拟内存超限
[yarn-site.xml]
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

3.3使用spark on yarn client 模式运行气温数据

spark-submit --master yarn --deploy-mode client --class TempAggDemoScala_GroupByKey myspark.jar

3.4sparktask、线程、executor之间的关系

spark.task.cpus 2		//每个task分配的core数,默认1

--executor-cores 5		//每个执行器占用的core数.

--num-executors	2		//yarn模式指定执行器个数

solt					//槽位,本质上对应一个线程,slot数指job最大的并发度。
//最发并发度是job同时启动的线程数。 = executors个数 * 每个执行内核数 / 每个task占用内核数。 -- 配置方式 , 开启4个线程,
spark-shell --master yarn --deploy-mode client --executor-cores 5 --num-executors 2 --conf spark.task.cpus=2
$scala>sc.makeRDD(1 to 5 , 5).map(e=>{sendInfo(this , "map" , e+ "") ; e * 2}).collect

Spark1的更多相关文章

  1. centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建

    一.Java安装 1.安装包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...

  2. spark1.4.1 启动过程

    今天稍微没那么忙了,趁着这个时间,准备把spark的启动过程总结一下(),分享给大家.现在使用的spark1.4.1版本 当然前提是你已经把spark环境搭建好了. 1.我们启动spark的时候一般会 ...

  3. Spark-1.5.1 on CDH-5.4.7

    1.修改拷贝/root/spark-1.5.1-bin-hadoop2.6/conf下面spark-env.sh.template到spark-env.sh,并添加设置HADOOP_CONF_DIR: ...

  4. Mac 配置Spark环境scala+python版本(Spark1.6.0)

    1. 从官网下载Spark安装包,解压到自己的安装目录下(默认已经安装好JDK,JDK安装可自行查找): spark官网:http://spark.apache.org/downloads.html ...

  5. spark1.3编译过程中遇到的一个坑

    在编译spark1.3.0时: export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m&q ...

  6. hadoop 2.7.2 和 spark1.6 多节点安装

    一共三个节点,在安装完hadoop之后直接安装spark.下载的spark版本是不带hadoop的,注意节点配置 Hadoop multi-nodes Installation Environment ...

  7. CentOS7+hadoop2.6.4+spark-1.6.1

    环境: CentOS7 hadoop2.6.4已安装两个节点:master.slave1 过程: 把下载的scala.spark压缩包拷贝到/usr/hadoop-2.6.4/thirdparty目录 ...

  8. Spark1.6.2 java实现读取txt文件插入MySql数据库代码

    package com.gosun.spark1; import java.util.ArrayList;import java.util.List;import java.util.Properti ...

  9. 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...

  10. spark1.5 scala.collection.mutable.WrappedArray$ofRef cannot be cast to ...解决办法

    下面是我在spark user list的求助贴,很快就得到了正确回答,有遇到问题的同学解决不了也可以去上面提问. I can use it under spark1.4.1,but error on ...

随机推荐

  1. rsyslog服务日志报错分析1

    客户问题: 最近对服务器进行日志检查时,发现部分主机的rsyslog服务状态有报错,报错详情如下 排查过程: 1.从报错截图来看,报错主要发生在文件'/usr/lib64/rsyslog/omazur ...

  2. VS2010 MFC的按钮风格改变

    改变VS2010 MFC的按钮风格 VS2010建的MFC工程按钮默认的风格类似VC6.0(直角矩形),如想美观按钮改为WIN7的按钮风格(圆角矩形),只需在代码中找到头文件"stdafx. ...

  3. 只学python行吗

    常言道:"流水的语言,铁打的Python",目前它可以说是已经"睥睨天下,傲视群雄"了.它天生丽质,易于读写,非常实用,从而赢得了 广泛的群众基础,被誉为&qu ...

  4. pandas之分组计算笔记

    分组计算三部曲:拆分-->应用-->合并 分组:就是按照行或列把相同索引的部分分到一起 分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结 ...

  5. 使用Struts2实现图片上传和拦截器

    今天来分享一个图片上传 现在很多小项目里面基本上都有要显示图片的功能,所以呢图片上传是基本要掌握的啦 一般的图片上传原理就是从本地选择一张图片然后通过io流发布到服务器上去 上传方案基本有三种: 1. ...

  6. 【原创】大叔经验分享(89)docker启动openjdk执行jmap报错

    docker启动openjdk后,可以查看进程 # docker exec -it XXX jps 10 XXX.jar 可见启动的java进程id一直为10,然后可以执行jvm命令,比如 # doc ...

  7. 在windows环境中单机搭建rabbitmq集群

    建议单机版集群仅作为学习使用,生产环境最好使用多服务器集群来避免单点故障带来的服务不可用,必竟单机版的集是伪集群. 1:准备基础文件.环境变量 设置环境变量: 变量名:RABBITMQ_BASE 变量 ...

  8. 安全开发流程(SDL)学习概述

    1.简介 SDL的全称是Security Development Lifecycle,即:安全开发生命周期.由微软最早提出,是一种专注于软件开发的安全保障流程.为实现保护最终用户为目标,它在软件开发流 ...

  9. JS 详解 Cookie、 LocalStorage 与 SessionStorage-转载

    记录一下这些知识,有时候用到会忘记,对原文作者表达感谢. 附上原文链接:JS 详解 Cookie. LocalStorage 与 SessionStorage 基本概念 Cookie Cookie 是 ...

  10. python读取图像后变换通道顺序

    直接通过python矩阵操作变换,简单高效 org_img = cv2.imread('cat.jpg') img = org_img[:, :, ::-1] 其中,[::-1] 表示顺序相反操作 , ...