CentOS 7 安装Spark-2.1.1-bin-hadoop-2.7
1 local模式(1台节点)
这种版本主要是用来自己测试,自己玩一下内部Hive的连接与外部Hive的连接,这种模式安装很简单 ,官网下载地址
- 从官网下载对应的离线安装版本,上传到服务器。
- 解压tgz格式的离线安装包指定的目录。
- 更改目录名称
- 进入spark_home目录,在bin目录下启动spark-shell,不报错说明正常本地模式安成功。
1.1 使用local模式访问内部Hive
# 解压
tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
# 进入并启动spark-shell
cd /opt/module
mv spark-2.1.1-bin-hadoop2.7/ spark2.1.1-hadoop2.7
cd /opt/module/spark2.1.1-hadoop2.7
# 启动spark sql查询内置的Hive
[shufang@shufang101 spark2.1.1-hadoop2.7]$ bin/spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
21/01/15 22:00:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
21/01/15 22:01:10 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
21/01/15 22:01:10 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
21/01/15 22:01:12 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://192.168.93.101:4040
Spark context available as 'sc' (master = local[*], app id = local-1610719256707).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.1.1
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144)
Type in expressions to have them evaluated.
Type :help for more information.
scala> spark.sql("show tables").show
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+
1.2 验证是否成功
会在当前SPARK_HOME的目录下创建
- 数据存储本地仓库: spark-warehouse
- 元数据目录:metastore_db
- 以及元数据库derby的日志:derby.log
具体目录结构如下图。
到这里你的local模式就完毕了,解压即用!
2 standalone模式(3台节点)
解压命名操作与local模式一致!!,假设这里命名为:spark_alone
2.1 vim slaves指定worker
# vim slaves
shufang101
shufang102
shufang103
2.2 vim spark-env.sh 配置依赖的环境
# vim spark-env.sh
EXPORT JAVA_HOME=/opt/module/jdk1.8.0_144
SPARK_MASTER_HOST=shufang102 #指定master的节点
SPARK_MASTER_PORT=7077 #此处的7077类似于hadoop的8020|9000通信端口
# 分发spark目录到其它节点
xsync spark
2.3 配置历史服务器【可选配】
# 历史服务器hdfs日志地址
hadoop fs -mkdir /spark_directory
# 1、vim spark-default.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://shufang101:9000/spark_directory
# 2、vim spark-env.sh
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://shufang101:9000/spark_directory
-Dspark.history.retainedApplication=30
"
# 3、启动服务于历史服务器
sbin/start-all.sh
sbin/start-history-server.sh
# 4、通过master ip与配置的端口18080进行访问
https://shufang102:18080 #historyserver
2.4 standalone配置HA高可用【建议配置】
依赖Zookeeper服务,所以得事先启动ZK集群。
# vim spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
# 1、高可用将这2行注释掉
# SPARK_MASTER_HOST=SHUFANG102
# SPARK_MASTER_PORT=7077 #此处的7077类似于hadoop的8020通信端口
# 2、配置ZK和WebUI访问端口
SPARK_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=shufang101,shufang102,shufang103
-Dspark.deploy.zookeeper.dir=/spark
"
# 3、分发配置到其它节点
xsync conf
start-all.sh shufang102:8989
# 4、切换到其它节点启动standby的master节点
ssh shfuang103
start-master.sh shfuang103 #此时就高可用了,STANDBY,可以使用shufang103:8989访问
2.5 测试standalone
cd /opt/module/spark_alone
# 测试pi,`\`是linux中的换行连续符号,将多行shell连接成一个指令
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://shufang102:7077 \
example/jars/spark-examples_2.11-2.1.1.jar \
10
3 yarn模式(1台节点)
yarn是在spark后面出来的一个调度框架,调度策略比spark自身更加完善,国内使用较多,下面将讲解怎么配置和使用yarn模式。
3.1 vim spark-env.sh添加Yarn相关的配置
# vim spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
YARN_CONF_DIR=/opt/module/hadoop-2.7.7/etc/hadoop
3.2 配置历史服务器
与上面2.3的standalone模式一致,同时还需要添加一个配置
# vim spark-default.conf
spark.yarn.historyServer.address=shufang101:18080
spark.history.ui.port=18080
#启动历史服务器
sbin/start-history-server.sh
#通过webui页面进行访问
http://shufang101:18080
3.3 基于yarn-cluster模式提交spark任务
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
examples/jars/spark-examples_2.11-2.1.1.jar \
10