spark非高可用集群搭建(stanalone)

目录

1.环境准备

2.版本选择

3.下载

4.解压

5.修改配置

1.配置worker

2.配置spark运行环境

3.配置spark参数

4.配置spark日志

6.配置连接hive源

7.配置history服务

1.修改spark-defaults.conf

2.修改spark-env.sh

8.配置分发到其他节点

9.系统环境变量设置

10.服务启动停止

11.端口说明

12.测试

13.常见问题

1.spark客户端查询hive表没有数据,但是hive客户端查询表有数据

1.建表使用外表external

2.设置默认创建的表不是acid表

2.spark查询hive创建的表报错


1.环境准备

一共4个节点,master1,worker1,worker2,worker3

配置master1到worker1,worker2,worker3的免密登录

节点名称节点角色
master1master
worker1worker
worker2worker
worker3worker

2.版本选择

Index of /dist/spark

3.下载

这里使用spark-3.1.3-bin-hadoop3.2这个版本

wget https://archive.apache.org/dist/spark/spark-3.1.3/spark-3.1.3-bin-hadoop3.2.tgz

4.解压

tar -xzvf spark-3.1.3-bin-hadoop3.2.tgz -C /data/

5.修改配置

1.配置worker

cp workers.template workers

vim workers

worker1

worker2

worker3

2.配置spark运行环境

cp spark-env.sh.template spark-env.sh

vim spark-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0 
export HADOOP_CONF_DIR=/etc/hadoop/conf 
export SPARK_MASTER_HOST=master1 
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8081 
export SPARK_WORKER_CORES=1 
export SPARK_WORKER_MEMORY=1g

3.配置spark参数

cp spark-defaults.conf.template spark-defaults.conf

4.配置spark日志

cp log4j.properties.template log4j.properties

调整log4j.rootCategory的参数即可,这里不做修改

6.配置连接hive源

将hive的hive-site复制到spark的conf下

cp /etc/hive/conf/hive-site.xml /data/spark-3.1.3-bin-hadoop3.2/conf/

将hive的mysql驱动包复制到spark的jars下

cp /usr/share/java/mysql-connector-java.jar /data/spark-3.1.3-bin-hadoop3.2/jars/

将hdfs的hdfs-site.xml和core-site.xml复制到spark的conf下

cp /etc/hadoop/conf/hdfs-site.xml /data/spark-3.1.3-bin-hadoop3.2/conf/

cp /etc/hadoop/conf/core-site.xml /data/spark-3.1.3-bin-hadoop3.2/conf/

7.配置history服务

这个建议配置,不配置的话任务提交到yarn上执行完成之后是看不了任务的history的。

1.修改spark-defaults.conf

添加以下内容

spark.eventLog.enabled    true 
spark.eventLog.dir        hdfs://master1:8020/logs/spark 
spark.eventLog.compress   true

//如果是提交到yarn上加上下列配置 
spark.yarn.historyServer.address  master1:18080 
spark.history.ui.port   18080

需要注意的是要在hdfs上创建日志目录

hdfs的路径可以去core-site.xml文件查看fs.defaultFS的value值

less /etc/hadoop/conf/core-site.xml

创建上述目录 hadoop dfs -mkdir /logs hadoop dfs -mkdir /logs/spark

2.修改spark-env.sh

添加以下内容 export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://master1:8020/logs/spark"

8.配置分发到其他节点

scp -f /data/spark-3.1.3-bin-hadoop3.2 worker1:/data/

scp -f /data/spark-3.1.3-bin-hadoop3.2 worker2:/data/

scp -f /data/spark-3.1.3-bin-hadoop3.2 worker3:/data/

9.系统环境变量设置

vim /etc/profile

export SPARK_HOME=/data/spark-3.1.3-bin-hadoop3.2

export PATH=$PATH:$SPARK_HOME/bin

source /etc/profile

10.服务启动停止

启动

sh /data/spark-3.1.3-bin-hadoop3.2/sbin/start-all.sh

如果配置了history服务

sh /data/spark-3.1.3-bin-hadoop3.2/sbin/start-history-server.sh

停止

sh /data/spark-3.1.3-bin-hadoop3.2/sbin/stop-all.sh

查看是否启动

jps

在master 上会有master进程,在worker上有worker进程,如果启动了history会有一个history的进程

查看启动进程

11.端口说明

4040:任务运行web-UI界面

8081:spark集群web-UI界面,采用standalone方式提交的任务才能看到--master spark://master1:7077,--master yarn的要在yarn上查看且开启history服务

7077:spark提交任务时的通信端口

18080:spark的history web-ui界面

12.测试

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master1:7077 ./examples/jars/spark-examples_2.12-3.1.3.jar 10

bin/spark-sql --master spark://master1:7077 --num-executors 15 --executor-memory 2g --executor-cores 1 --driver-memory 1g --driver-cores 2 --total-executor-cores 1 4 --conf spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true --conf spark.sql.shuffle.partitions=20

13.常见问题

1.spark客户端查询hive表没有数据,但是hive客户端查询表有数据

原因是spark读取不了hive3的内表数据

解决方式

1.建表使用外表external

2.设置默认创建的表不是acid表

这个是网上的访问,验证发现不可行,不知道是哪里的问题

修改hive-site.xml下面参数,让默认创建的表不是acid表

hive.strict.managed.tables=false hive.create.as.insert.only=false metastore.create.as.acid=false

2.spark查询hive创建的表报错

Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table tmp_test5. Your client does not appear to support insert-only tables

 show create table tmp_test5

发现表属性是事务表

'transactional'='true',
'transactional_properties'='insert_only'

解决方式

修改hive-site.xml下面参数,让默认创建的表不是acid表

hive.strict.managed.tables=false hive.create.as.insert.only=false metastore.create.as.acid=false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值