概要描述
通过开源 Spark sql 直接连接 inceptor 只能读取有限的几种表类型:普通text表、非分区、非分桶普通orc表、普通orc分桶表、orc单值分区表;
对于orc范围分区和orc事务表均不支持;
本文提供了一些适配 jar 包,实现对 orc范围分区和 orc事务表的读写操作。
详细说明
- 安装 spark 和 scala
- 添加 Inceptor 依赖包
- yarn 参数配置
- spark 参数配置
- 启动 spark-shell 或者 提交 spark 程序
1. 安装 spark 和 scala
spark 官网下载:https://spark.apache.org/downloads.html , 历史所有版本:https://archive.apache.org/dist/spark/
scala 官网所有版本下载:https://www.scala-lang.org/download/all.html

2. 添加 Inceptor 依赖包
直接下载链接:https://pan.baidu.com/s/1MmkpEaCBg5T-o3OYyXYmLQ?pwd=1234 提取码:1234
将 torc 的jar 包复制到 jars中
spark2.1.3 选择 inceptor-torc-2.1.3.jar
spark3.1.1 选择 inceptor-torc-3.1.1.jar
cp xxx.jar spark-2.1.3-bin-hadoop2.7/jars
3. 配置 yarn
3.1 拷贝spark运行时依赖的jars到hdfs
hadoop fs -put /spark-2.4.5-bin-hadoop2.7/jars /tmp/spark-yarn/
3.2 spark-env.sh 配置
# 以下配置请根据本地实际环境配置 (必要)
HADOOP_USER_NAME=hive
HADOOP_CONF_DIR=/etc/hdfs1/conf
3.3 spark-defaults.conf基础配置
# 以下配置请根据本地实际环境配置(必要)
# spark on yarn 依赖的jars,4.1 节上传的jar包路径
spark.yarn.jars hdfs://172.22.22.10:8020/tmp/spark-yarn/jars/*
# 指定Argodb inceptor server IP地址或hostname
spark.argodb.server.addr 172.22.22.10
# 指定spark运行在yarn环境的java版本(默认yarn的jdk版本为jdk 1.7)
# 具体jdk路径可以查看yarn image中的jdk路径
spark.executorEnv.JAVA_HOME /usr/java/jdk1.8.0_25
spark.yarn.appMasterEnv.JAVA_HOME /usr/java/jdk1.8.0_25
3.4 spark-defaults.conf安全相关配置
根据Argodb的安全设置,添加下面的参数
# Argodb的安全配置
# spark.argodb.auth.type : none(default) [kerberos or ldap or none]
spark.argodb.auth.type : ldap
# KERBEROS 模式
# 使用SparkSQL方式执行时需要配置
# spark.kerberos.principal
# spark.kerberos.keytab
# principal和keytab未指定时,将使用spark on yarn kerberos参数配置 即:spark.kerberos.principal和spark.kerberos.keytab
# spark.argodb.krb.principal
# spark.argodb.krb.keytab
# 而user为spark.kerberos.principal
# spark.argodb.krb.user
# spark.argodb.krb.conf /etc/krb5.conf(default)
# LDAP 模式
spark.argodb.ldap.user hive
spark.argodb.ldap.password 123456
3.5 拷贝配置文件到spark conf
# 拷贝inceptor hive-site.xml配置,用于读取argodb的配置信息
cp /etc/inceptor1/conf/hive-site.xml /opt/gts-project/src/test-app/spark/spark-2.1.3-bin-hadoop2.7/conf
# 拷贝yarn yarn-site.xml & core-site.xml配置,用于读取yarn的配置信息
cp /etc/yarn1/conf/yarn-site.xml /opt/gts-project/src/test-app/spark/spark-2.1.3-bin-hadoop2.7/conf
cp /etc/yarn1/conf/core-site.xml /opt/gts-project/src/test-app/spark/spark-2.1.3-bin-hadoop2.7/conf
# 拷贝HDFS hdfs-site.xml配置,用于读取HDFS的配置信息
cp /etc/hdfs1/conf/hdfs-site.xml /opt/gts-project/src/test-app/spark/spark-2.1.3-bin-hadoop2.7/conf
启动 spark-shell
五、spark-shell on yarn读取torc
基于spark 2.1.3进行测试。 spark3.1.1 同理。
cd ./spark-2.1.3-bin-hadoop2.7
./bin/spark-shell --master yarn --conf spark.ui.port=4444 --driver-memory 1g --executor-memory 2g --num-executors 2 --executor-cores 1 --principal hive@FYFTDH622 --keytab hive2210.keytab
# 参数说明:
# --conf spark.ui.port=4444 spark-web ui端口
# --driver-memory 8g Spark driver内存
# --executor-memory 32g Spark executor的内存
# --num-executors 4 Spark executor的数量
# --executor-cores 24 每个executor分配的cpu核数
# --principal hive/tx-node1@TDH 集群开启kerberos后principal(可以使用/etc/argodbcomputing*/conf/hive-site.xml文件内hive.server2.authentication.kerberos.principal参数值)
# --keytab /etc/inceptor1/conf/hive.keytab 集群开启kerberos后,inceptor 的 keytab文件

# 进入Spark,输入scala测试语句:
val sqlContext=new org.apache.spark.sql.SQLContext(sc)
sqlContext.sql("show databases").show
# 出现ArgoDB的databaseName,则表明访问成功

提交 spark-submit
./bin/spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.JavaSparkPi --executor-memory 2g --driver-memory 2g --principal hive@FYFTDH622 --keytab hive2210.keytab /opt/gts-project/src/test-app/spark/spark-2.1.3-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.3.jar
准确计算出了 π 的值
