cdh6.x 集成spark-sql

Posted 涤生大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cdh6.x 集成spark-sql相关的知识,希望对你有一定的参考价值。

写在前面

CDH系列默认阉割掉了Spark的spark-sql工具,但是很多公司还是有这个使用的需要,因为线上就有这块的需求,所以结合cdh6.x版本,做了具体的对spark-sql工具支持的集成。

版本说明

组件名称组件版本
CDHCDH 6.2.1
sparkspark-2.4.8

第一步:下载原生apache spark

# cd /opt/cloudera/parcels/CDH/lib

# wget http://archive.apache.org/dist/spark/spark-2.4.8/spark-2.4.8-bin-hadoop2.7.tgz  

# tar zxvf spark-2.4.8-bin-hadoop2.7.tgz 

# ln -s spark2 spark-2.4.8-bin-hadoop2.7  

第二步:修改spark配置文件 

2.1 配置spark-env.sh

#!/usr/bin/env bash

##JAVA_HOME 需要结合实际路径配置

export JAVA_HOME=/usr/java/jdk1.8.0_144

export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive

export HADOOP_COMMON_HOME="$HADOOP_HOME"

export HADOOP_CONF_DIR=/etc/hadoop/conf

export YARN_CONF_DIR=/etc/hadoop/conf

export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark2

export SPARK_CONF_DIR=$SPARK_HOME/conf

2.2 配置spark-defaults.conf

小提示建议直接cp 现有spark的配置文件,在此基础上修改。

# cd /opt/cloudera/parcels/CDH/lib/spark2/conf

#cp -r /etc/spark/conf/spark-defaults.conf  ./

### 将hive的配置文件一并cp过来

#cp /etc/hive/conf/hive-site.xml ./

Vim /opt/cloudera/parcels/CDH/lib/spark2/conf/spark-defaults.conf

小提示:修改配置文件时,只需要修改文件中标红部分即可,其他可以保持默认。

spark.authenticate=false

spark.driver.log.dfsDir=/user/spark/driverLogs

spark.driver.log.persistToDfs.enabled=true

spark.dynamicAllocation.enabled=true

spark.dynamicAllocation.executorIdleTimeout=60

spark.dynamicAllocation.minExecutors=0

spark.dynamicAllocation.schedulerBacklogTimeout=1

spark.eventLog.enabled=true

spark.io.encryption.enabled=false

spark.network.crypto.enabled=false

spark.serializer=org.apache.spark.serializer.KryoSerializer

spark.shuffle.service.enabled=true

spark.shuffle.service.port=7337

spark.ui.enabled=true

spark.ui.killEnabled=true

spark.lineage.log.dir=/var/log/spark/lineage

spark.lineage.enabled=true

spark.master=yarn

spark.submit.deployMode=client

spark.eventLog.dir=hdfs://ds-nameservice1/user/spark/applicationHistory

spark.yarn.historyServer.address=http://ds-bigdata-001:18088

## 我这里将spark的依赖包都放在hdfs上

spark.yarn.jars=hdfs://ds-nameservice1/user/spark2/jars/* 

spark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

spark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

spark.yarn.am.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

spark.yarn.config.replacementPath=HADOOP_COMMON_HOME/../../..

spark.yarn.historyServer.allowTracking=true

spark.yarn.appMasterEnv.MKL_NUM_THREADS=1

spark.executorEnv.MKL_NUM_THREADS=1

spark.yarn.appMasterEnv.OPENBLAS_NUM_THREADS=1

spark.executorEnv.OPENBLAS_NUM_THREADS=1

#spark.extraListeners=com.cloudera.spark.lineage.NavigatorAppListener

#spark.sql.queryExecutionListeners=com.cloudera.spark.lineage.NavigatorQueryListener

2.3 配置日志级别

# vim /opt/cloudera/parcels/CDH/lib/spark2/conf/log4j.properties

在配置文件中追加以下配置项,其他保持默认

log4j.logger.org.apache.spark=WARN

第三步:配置依赖包

3.1 上传spark 依赖jar包

##将spark的依赖jar包放到hdfs指定路径(说明:这个和配置文件中spark.yarn.jars的配置项相对应,如果使用的是local路径,可以不上传。

#  hdfs  dfs -mkdir -p  hdfs://ds-nameservice1/user/spark2/jars/

# hdfs  dfs  -put /opt/cloudera/parcels/CDH/lib/spark2/jars/* hdfs://ds-nameservice1/user/spark2/jars/

3.2 配置lzo jar包

#cp /opt/cloudera/parcels/GPLEXTRAS/jars/hadoop-lzo-0.4.15-cdh6.2.0.jar /opt/cloudera/parcels/CDH/lib/spark2/jars/

第四步:配置spark-sql 的全局变量

vim /etc/profile.d/spark.sh

#!/bin/bash

export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark2

export PATH=$SPARK_HOME/bin:$PATH

#生效

# source /etc/profile

第五步:测试使用

全局的任意位置执行 spark-sql指令(注意:执行的linux用户需要有提交任务到yarn的权限

如果都没有问题,执行show databases ;会看到集群中的所有库。

补充说明:其他客户端如果需要此环境,将上述配置全部scp过去即可。

 

以上是关于cdh6.x 集成spark-sql的主要内容,如果未能解决你的问题,请参考以下文章

cdh6.x 集成spark-sql

spark-sql(spark sql cli)客户端集成hive

控制 spark-sql 和数据帧中的字段可空性

大数据 - spark-sql 常用命令

在 HIVE 上插入 Spark-SQL 插件

Spark-sql 中的 NullPointerException