博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark笔记
阅读量:5161 次
发布时间:2019-06-13

本文共 5227 字,大约阅读时间需要 17 分钟。

Spark基础

第一节:什么是Spark?Spark的特点和结构

1、什么是Spark?
Spark是一个针对大规模数据处理的快速通用引擎。
类似MapReduce,都进行数据的处理
2、Spark的特点:
(1)基于Scala语言、Spark基于内存的计算
(2)快:基于内存
(3)易用:支持Scala、Java、Python
(4)通用:Spark Core、Spark SQL、Spark Streaming
MLlib、Graphx
(5)兼容性:完全兼容Hadoop

3、Spark体系结构:主从结构

(1)主节点:Master
(2)从节点:Worker

 

第二节:搭建Spark的伪分布模式环境

1、解压:tar -zxvf spark-2.1.0-bin-hadoop2.4.tgz -C ~/training/
2、配置参数文件: conf/spark-env.sh

# --------------------------------系统准备#修改hosts和主机名# 修改/etc/hosts 以及/etc/sysconfig/network 文件, 分别设置不同的HOSTNAMEvim /etc/hosts192.168.112.10 node-4192.168.112.11 node-5192.168.112.12 node-6vim /etc/sysconfig/networkHOSTNAME=node-4hostname node-4 # 修改当前系统进程主机名### 每台都要 关闭下列防火墙service iptables stop  setenforce 0  chkconfig iptables off  # chkconfig iptables --list 查看ssh-keygen  #创建.ssh目录ssh-copy-id -i ~/.ssh/id_rsa.pub node-5 #复制公钥到每台目标主机ssh-copy-id -i ~/.ssh/id_rsa.pub node-6 #复制公钥到每台目标主机ssh root@node-5 ##或者 ssh root@node-6 都能成功,不用密码,则互信成功.############################ 基于yarn的集群上, 搭一个spark 分布式环境。# 前提: JDK, Hadoop安装并启动. 下载scala-2.12.5.tgz并解压# 下载spark  https://www.apache.org/dyn/closer.lua/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz# 解压 重命名目录 进入conf目录cp spark-env.sh.template spark-env.shvim spark-env.sh #添加如下内容:export SCALA_HOME=/usr/local/src/scala-2.12.5export JAVA_HOME=/usr/local/src/jdk1.8.0_161export HADOOP_HOME=/usr/local/src/hadoop-2.7.5export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopSPARK_MASTER_IP=masterSPARK_LOCAL_DIRS=/usr/local/src/spark-2.2.1SPARK_DRIVER_MEMORY=1G#正常生产环境,应该将内存调大vim slavesnode-5node-6# 分发到各个从节点上scp -r scala-2.12.5 node-5:/usr/local/src/scp -r scala-2.12.5 node-6:/usr/local/src/scp -r spark-2.2.1 node-5:/usr/local/src/scp -r spark-2.2.1 node-6:/usr/local/src/############################ standalone 模式。# 安装JDK# confcp spark-env.sh.template spark-env.shvim spark-env.sh #添加如下内容:export JAVA_HOME=/usr/local/src/jdk1.8.0_161SPARK_MASTER_HOST=node-4SPARK_MASTER_PORT=7077vim slaves # 指定从节点node-5node-6# --------------------- 忘记sudo vim时,:w !sudo tee %# 远程拷贝# for i in {
5..6}; do echo $i; done # 测试循环for i in {
5..6); do scp -r /bigdata/spark-2.2.1/ node-$i/bigdata/; done # 依次复制到别的节点#-----------------------------------------------------------------------------##-------------------------------HA 配置:---------------------------------------## spark-env.sh 中如下修改:# SPARK_MASTER_HOST=node-4 注释掉# SPARK_MASTER_PORT=7077 注释掉# 指定spark进程关联的zookeeper.export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1:2181,node-2:2181,node-3:2181 -Dspark.deploy.zookeeper.dir=/spark"# 还可以指定硬件资源export SPARK_WORKER_CORES=2export SPARK_WORKER_MEMORY=1g# 保存退出 并将配置文件复制到其它节点。## 先启动好zookeeper# 启动Master及Worker 。最后手动启动备份的Master节点 sbin/start-master.sh # 检验备份节点jps进程,以及状态 http://node-3:8080 #-----------------------------------------------------------------------------##-----------------------------------------------------------------------------#

 

启动后的验证及简单示例:

############################## 启动后:  通过jps 看到一个master, 两个workercd spark-2.2.1/sbin./start-all.sh # web UI 监控页面 http://node-4:8080##### 验证:本地2个进程模拟      ./bin/run-example SparkPi 10 --master local[2] ###### 验证:spark standalone  可以在http://node-4:8080监控    #参数100是这个示例的执行轮数./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://node-4:7077 examples/jars/spark-examples_2.11-2.2.1.jar 100 #       提交        指定类 Main()方法 通过反射来执行 官方示例   指定Master在哪              指定jar包位置                             采样次数 # 参数需要在jar包之前指定# spark执行过程中,Master产生进程:SparkSubmit   Worker产生进程:CoarseGrainedExecutorBackend bin/spark-submit \--master spark://node-4:7077 \--class org.apache.spark.examples.SparkPi \--executor-memory 512mb \--total-executor-cores 4 \examples/jars/spark-examples_2.11-2.2.1.jar 100 # 指定每个executor内存大小, 以及一共用多少核# --master spark://node-4:7077,node-5:7077  如果是HA可以指定多个Master####### 验证:spark on yarn 需要在yarn上监控 http://node-4:8088    # --master yarn-cluster 是固定写法./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.2.1.jar 10 # 计算结果不在终端显示,显示在yarn上, 打开http://node-4:8088  点击Tracking UI下的ApplicationMaster, 再点击Tracking URL:  History   再点击 Logs , stdout可以看到结果. #####------------------------------------------- client方式spark-2.2.1/bin/pyspark # 以python shell的方式开发spark , 进入>>> 后,直接使用python交互# Using Python version 2.7.14 (default, Apr  9 2018 20:37:18)# SparkSession available as 'spark'.#####------------------------------------------- spark shell spark-2.2.1/bin/spark-shell # 以本地模式启动shell的方式, 进入 scala> 后使用scala语言bin/spark-shell --master spark://master:7077 # 指定了Master地址就会提交到集群。开始时sparksubmit(客户端)要连接Master,# 并申请计算资源(内存和核数),Master进行资源调度(让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了# 用spark Shell完成WordCount计算# 启动HDFS(上传数据到hdfs),sc是spark core(RDD)的执行入口sc.textFile("/home/test/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect # 本地文件# 如果报错文件找不到,可以将文件放在Master所在机器上。sc.textFile("/home/test/2.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect # 加上了以数量降序sc.textFile("hdfs://node-4:9000/data/input/1.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect # hdfs文件# 如果连接HDFS的nameservice则需要复制配置文件到spark中

Spark最好的开发语言是Scala 点此下载:

转载于:https://www.cnblogs.com/frx9527/p/spark.html

你可能感兴趣的文章
GIT原理和常用命令速成
查看>>
Jmeter之集合点与关联
查看>>
springboot整合webservice
查看>>
字符串匹配KMP算法详解
查看>>
单词查找排序输出
查看>>
TCP三次握手和四次挥手及用户访问网页流程
查看>>
echo常用操作
查看>>
算法笔记
查看>>
LeetCode 237. Delete Node in a Linked List 删除链表结点(只给定要删除的结点) C++/Java...
查看>>
LCA倍增模板
查看>>
EMS-Demo 雇员管理系统演示
查看>>
软件工程第二次作业——心得体会(结对编程)
查看>>
ORA-12560: TNS: 协议适配器错误 ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
读书印记 - 《菊与刀》
查看>>
第一个小demo: spring boot + mybatis + thymeleaf
查看>>
mysql获取字段信息
查看>>
Tomcat 网站部署(三)
查看>>
JS实现全选与取消 Jquery判断checkbox是否被选中
查看>>
如果重新设计网络,有没有可能合并IP地址跟MAC地址?
查看>>
德州扑克总纲
查看>>