配置访问远端Spark
操作场景
当GaussDB 200需要访问远端Spark数据时或者需要数据互操作时,可以通过配置"对接Spark"使用该功能。
约束限制
- 只支持配置访问FusionInsight HD中的Spark。
- 仅支持连接FusionInsight HD 6.5.0及以上版本,并且GaussDB 200的版本要与FusionInsight HD的版本相同。
- 仅支持连接安全模式的FusionInsight HD集群。
- 只支持配置一组远端Spark配置。
- 当前只支持运行在RedHat和SUSE环境上的GaussDB 200集群配置访问远端Spark,且不支持同集群内系统异构。
- 要求Spark ODBC必须用GCC 5.4及以上版本编译。
前提条件
- FusionInsight HD和GaussDB 200两个集群状态正常。
- FusionInsight HD和GaussDB 200两个集群之间可以互相通信。
- 配置所需要的Spark ODBC、KrbClient以及keytab等文件需要从FusionInsight HD集群的Manager界面下载获取:
- 下载客户端,获取Spark ODBC、KrbClient。
- 登录FusionInsight HD集群的Manager界面。
- 选择“概览 > 更多 > 下载客户端 ”,单击“确定”,通过上述步骤会获取到“FusionInsight_<集群ID>_Services_Client.tar”。
- 解压“FusionInsight_<集群ID>_Services_Client.tar”,接着解压“FusionInsight_Services_ClientConfig.tar”,在“FusionInsight_Services_ClientConfig”文件夹中会有“KrbClient”文件夹,将“KrbClient”文件夹压缩为“KrbClient.zip”。
- 将“FusionInsight_Services_ClientConfig/Spark2x”文件夹中的“DataSight_Spark_XXXX_HiveODBC.zip”解压,在“DataSight_Spark_XXXX_HiveODBC/Linux”文件夹中根据GaussDB 200集群所运行的系统环境选择Spark ODBC的rpm驱动包:
- 如果是RedHat系统选择“datasight-hiveodbc-x.x.x-x.el6.x86_64.rpm”。
- 如果是SUSE系统选择“datasight-hiveodbc-x.x.x-x.x86_64.rpm”。
- 下载认证凭据,获取keytab。
- 登录FusionInsight HD集群的Manager界面。
- 选择“系统 > 权限 > 用户”。
- 选择特定待下载凭证的用户所在行右边的“ 更多 >下载认证凭据”,通过上述步骤会获取到“kuser_xxxxxxx_keytab.tar”。
说明:
用户需要根据具体的业务需求,选择对应的用户来下载认证凭据。
- 将上述步骤中获取到的三个文件打包压缩为“package.zip”。
说明:
- “package.zip”中包含三个文件:“KrbClient.zip”、“datasight-hiveodbc-x.x.x-x.xxx.x86_64.rpm”、“kuser_xxxxxxx_keytab.tar”。
- 用户需要保证“package.zip”中的内容完整以及正确。
- 下载客户端,获取Spark ODBC、KrbClient。
操作步骤
- 登录FusionInsight Manager。
- 选择“集群 > 待操作的集群名称 > 服务 > MPPDB > 对接 > 对接Spark”,单击“创建”,填写配置组名称,单击“确定”。
- 填写配置参数,配置参数参见表1。
表1 GaussDB 200跨集群访问Spark的配置项 参数
描述
建议填写值
remote_connect_spark_database
默认Spark端库名称。
default
remote_connect_spark_dsn
该组配置的DSN标识,以spark_开头,只允许由字母数字下划线组成,不能超过64个字符。
注意:- “remote_connect_spark_dsn”值作为配置标示,保存配置后将不能修改,请用户慎重填写。
- 不同Spark配置组中的“remote_connect_spark_dsn”参数值不能相同。
spark_DSN
remote_connect_spark_host
HD Spark JDBCServer的业务IP或者ZooKeeper的业务IP和端口。
说明:- 如果“remote_connect_spark_mode”取值为“0”,则该值为需要直连的Spark JDBCServer的业务IP。
- 如果“remote_connect_spark_mode”取值为“1”,则该值为需要连接的那个集群的ZooKeeper的业务IP和端口。
100.100.0.10:24002,100.100.0.11:24002,100.100.0.12:24002
remote_connect_spark_jaas_principal
“jaas.conf”文件的principal。
注意:“remote_connect_spark_jaas_principal”中所填写的用户名需要与下载“Kuser_xxxxxxx_keytab.tar”所使用的用户一致。
例如:如果下载了sparkuser用户的认证凭据,那么这里需要填写sparkuser@HADOOP.COM。
sparkuser@HADOOP.COM
remote_connect_spark_mode
是否开启集群模式。
注意:如果使用集群模式连接,在第一次执行kinit修改完密码之后,需要从Spark集群再次下载新的认证凭据,然后将新的凭据从后台手动上传至“${BIGDATA_HOME}/mppdb/core/utilslib/fc_conf/DSN”目录。
0
remote_connect_spark_namespace
ZooKeeper存储FusionInsight HD Spark JDBCServer IP和端口的namespace。
sparkthriftserver2x
remote_connect_spark_port
FusionInsight HD Spark JDBCServer的端口。
22550
remote_connect_spark_principal
FusionInsight HD Spark JDBCServer的principal。
spark2x/hadoop.hadoop.com@HADOOP.COM
- 上传驱动文件“package.zip”,单击“上传并部署”,等待部署完成。
- 单击“保存”。等待保存配置成功,单击“完成”。
- 选择“更多 > 重启”,执行相应操作重启服务。
- 以操作系统用户omm登录GaussDB 200集群所有节点,执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量,再使用kinit命令认证远端Spark用户。
kinit sparkuser Password for sparkuser@HADOOP.COM:
- 连接Spark。例如:
-- 假设Spark里已经存在表 t1 (c1 int, c2 string), 内容如下: -- 1 spark -- 2 hive -- 通过 exec_hadoop_sql 函数查询,其中spark_DSN是{remote_connect_spark_dsn}中填写的Spark的DSN postgres=#SELECT * FROM exec_hadoop_sql('spark_DSN', 'select * from t1;', '') AS (c1 int, c2 text); c1 | c2 ----+------- 1 | spark 2 | hive (2 rows) -- 通过 exec_on_extension 函数查询 postgres=#CREATE DATA SOURCE ds_spark OPTIONS(dsn 'spark_DSN'); postgres=#SELECT * FROM exec_on_extension ('ds_spark', 'select * from t1;') AS (c1 int, c2 text); c1 | c2 ----+------- 1 | spark 2 | hive (2 rows) postgres=#DROP DATA SOURCE ds_spark;
查看更多:华为GaussDB 200 跨集群访问其他数据平台 - 连接Spark。例如: