赞
踩
目录
5.2 Standalone模式搭建(基于hdfs文件存储)
5.1.1 首先配置spark环境变量: vim /etc/profiles
6. 基于yarn方式HIVE元数据metastore启动spark
什么是Spark:Spark是一个用于大规模数据处理的统一计算引擎
注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎
spark里面最重要的一个特性:内存计算
Spark中一个最重要的特性就是基于内存进行计算,从而让它的计算速度可以达到MapReduce的几十倍甚至上百倍
由于Spark是基于内存进行计算的,所以它的计算性能理论上可以比MapReduce快100倍
Spark使用最先进的DAG调度器、查询优化器和物理执行引擎,实现了高性能的批处理和流处理。
注意:批处理其实就是离线计算,流处理就是实时计算,只是说法不一样罢了,意思是一样的
Spark提供了Core、SQL、Streaming、MLlib、GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、SQL交互式查询、流式实时计算,机器学习、图计算等常见的任务
从这可以看出来Spark也是一个具备完整生态圈的技术框架.
你可以在Hadoop YARN、Mesos或Kubernetes上使用Spark集群。
并且可以访问HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和数百个其它数据源中的数据。
Spark主要应用在以下这些应用场景中:
之前有一种说法,说Spark将会替代Hadoop,这个说法是错误的,其实它们两个的定位是不一样的,Spark是一个通用的计算引擎,而Hadoop是一个包含HDFS、MapRedcue和YARN的框架,所以说Spark就算替代也只是替代Hadoop中的MapReduce,也不会整个替代Hadoop,因为Spark还需要依赖于Hadoop中的HDFS和YARN。
所以在实际工作中Hadoop会作为一个提供分布式存储和分布式资源管理的角色存在
Spark会在它之上去执行。
首先要确保基础环境是具备的:
spark版本2.3.4
linux7:三台(hadoop安装的机器,免密时间同步等基本要求)
jdk版本:1.8.xxx 三位小版本以上的(为了兼容scala环境)
获取spark安装包:wget https://archive.apache.org/dist/spark/spark-2.3.4/spark-2.3.4-bin-hadoop2.7.tgz
解压后目录结构:
local 和 standalone 模式必须启动 spark,yarn 模式无需启动 spark
./bin/spark-shell
可以通过wordcount来测试:
sc.textFile("data/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
官方手册:https://spark.apache.org/docs/2.3.4/spark-standalone.html#cluster-launch-scripts
- export SPARK=/usr/local/bigdata/spark-2.3.4-bin-hadoop2.7
-
- export PATH=$JAVA_HOME/bin:$PATH:$ZOOKEEPER/bin:$HADOOP/bin:$HADOOP/sbin:$SPARK/bin:$SPARK/sbin
cp spark-env.sh.template spark-env.sh
设置 spark 的主节点 和 端口;
spark_worker_memory 表示计算时使用的内存,越大越好,spark 是基于内存的计算
- export JAVA_HOME=/usr/local/jdk1.8.0
-
- export HADOOP_CONF_DIR=/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/
- export SPARK_MASTER_HOST=node1 # 每台master改成自己的主机名
- export SPARK_MASTER_PORT=7077
- export SPARK_MASTER_WEBUI_PORT=8080
- export SPARK_WORKER_CORES=2
- export SPARK_WORKER_MEMORY=2g
worker进程启动的目标机器
- node2
- node3
- scp -r spark-2.3.4-bin-hadoop2.7 node2:`pwd`
- scp -r spark-2.3.4-bin-hadoop2.7 node3:`pwd`
http://node1:8080
spark on yarn 模式只需在 hadoop 集群的任一节点安装 spark 即可,不需要 spark 集群;
因为 spark 应用提交到 yarn 后,yarn 负责集群资源调度。
spark 安装参照 Standalone 模式,大致如下:
YARN_CONF_DIR=/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/
修改 yarn-site.xml,添加如下内容:
不配置这步可能报错,特别是分配内存较小时,如虚拟机情况下。
- <!-- spark 部署到 yarn 上需要这两个配置 -->
- <!-- 是否启动一个线程检查每个任务正在使用的物理内存,如果超出分配值,则直接杀掉该任务,默认为 true -->
- <property>
- <name>yarn.nodemanager.pmem-check-enabled</name>
- <value>false</value>
- </property>
-
- <!-- 是否启动一个线程检查每个任务正在试用的虚拟内存,如果超出分配值,则直接杀掉该任务,默认为 true -->
- <property>
- <name>yarn.nodemanager.vmem-check-enabled</name>
- <value>false</value>
- </property>
- <!-- spark 部署到 yarn 上需要这两个配置 -->
操作 yarn 模式
- spark-shell --master yarn-client # 这种方式在 spark2.x 中被废弃,替代命令为下面这句
- spark-shell --master yarn --deploy-mode client
yarn 模式 不在 spark UI 上监控,而是在 hadoop UI 上,地址为 http://node1:8088
5.2.4 wordcount测试
- # 使用spark-shell的方式启动spark
- #使用wordcount 测试下功能
- ./spark-shell --master yarn
- sc.textFile("hdfs://node1:9000/sparktest/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
spark on hive sparksql
在spark的conf目录下增加hive-site.xml文件
- <configuration>
- <property>
- <name>hive.metastore.uris</name>
- <value>thrift://node3:9083</value>
- </property>
- </configuration>
启动后可以直接读到元数据
参数 | 解释 | 可选值举例 |
--class | Spark 程序中包含主函数的类 | |
--master | Spark 程序运行的模式(环境) | 模式:local[*]、spark://nameNode:7077、 Yarn |
--executor-memory 1G | 指定每个 executor 可用内存为 1G | 符合集群内存配置即可,具体情况具体分析。 |
--total-executor-cores 2 | 指定所有executor 使用的cpu 核数 为 2 个 | |
--executor-cores | 指定每个executor 使用的cpu 核数 | |
application-jar | 打包好的应用 jar,包含依赖。这 个 URL 在集群中全局可见。 比如 hdfs:// 共享存储系统,如果是 | |
file:// path , 那么所有的节点的 path 都包含同样的 jar | ||
application-arguments | 传给 main()方法的参数 |
提交到本地和集群的示例
- bin/spark-submit \
- --class org.apache.spark.examples.SparkPi \
- --master local[2] \
- ./examples/jars/spark-examples_2.12-3.0.0.jar 10
- bin/spark-submit \
- --class org.apache.spark.examples.SparkPi \
- --master spark://hadoop11:7077 \
- ./examples/jars/spark-examples_2.12-3.0.0.jar 10
- bin/spark-submit \
- --class org.apache.spark.examples.SparkPi \
- --master yarn \
- --deploy-mode cluster \
- ./examples/jars/spark-examples_2.12-3.0.0.jar 10
模式 | Spark 安装机器数 | 需启动的进程 | 所属者 | 应用场景 |
Local | 1 | 无 | Spark | 测试 |
Standalone | 3 | Master 及 Worker | Spark | 单独部署 |
Yarn | 1 | Yarn 及 HDFS | Hadoop | 混合部署 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。