配置Spark通过IAM委托访问OBS
参考配置MRS集群通过IAM委托对接OBS完成存算分离集群配置后,即可在Spark客户端创建Location为OBS路径的表。
集群安装后使用spark beeline
- 登录FusionInsight Manager,选择“集群 > 服务 > Spark2x > 配置 > 全部配置”。
在左侧的导航列表中选择“JDBCServer2x > 自定义”。在参数“spark.hdfs-site.customized.configs”中添加配置项“dfs.namenode.acls.enabled”,值为“false”。
图1 添加Spark自定义参数
- 在搜索框中搜索参数“spark.sql.statistics.fallBackToHdfs”,修改该参数值为“false”。
图2 修改“spark.sql.statistics.fallBackToHdfs”参数值
- 保存配置并重启JDBCServer2x实例。
- 使用安装客户端用户登录客户端安装节点。
- 配置环境变量。
source 客户端安装目录/bigdata_env
- 如果是安全集群,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit 用户名
- 在spark-beeline中访问OBS,例如在“obs://mrs-word001/table/”目录中创建表“test”。
create table test(id int) location 'obs://mrs-word001/table/';
- 执行如下命令查询所有表,返回结果中存在表test,即表示访问OBS成功。
show tables;
图3 Spark2x验证返回已创建的表名
- 使用“Ctrl + C”退出spark beeline。
集群安装后使用spark sql
- 使用安装客户端用户登录客户端安装节点。
- 配置环境变量。
source 客户端安装目录/bigdata_env
- 修改配置文件:
vim 客户端安装目录/Spark2x/spark/conf/hdfs-site.xml
<property> <name>dfs.namenode.acls.enabled</name> <value>false</value> </property>
- 如果是安全集群,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit 用户名
- 在spark-sql中访问OBS,例如在“obs://mrs-word001/table/”目录中创建表“test”。
- 执行语句show tables;查看表是否存在。
- 执行exit;退出spark-sql命令行。
OBS文件系统打印大量日志可能导致读写性能受影响,可通过调整OBS客户端日志级别优化,日志调整方式如下:
cd 客户端安装目录/Spark2x/spark/conf
vi log4j.properties
在文件中添加OBS日志级别配置:
log4j.logger.org.apache.hadoop.fs.obs=WARN
log4j.logger.com.obs=WARN图4 添加OBS日志级别
使用Spark Shell读取OBS文件
- 使用安装客户端用户登录客户端安装节点。
- 配置环境变量。
source 客户端安装目录/bigdata_env
- 修改配置文件:
vim 客户端安装目录/Spark2x/spark/conf/hdfs-site.xml
<property> <name>dfs.namenode.acls.enabled</name> <value>false</value> </property>
- 如果是安全集群,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit 用户名
- 创建OBS文件。
- 进入spark bin目录:
cd 客户端安装目录/Spark2x/spark/bin
执行./spark-shell登录spark-shell命令行。
- 在spark-shell命令行执行以下命令查询5.b创建的表数据:
spark.read.format("parquet").load("obs://并行文件系统路径/test1").show();
图6 查看表数据
- 执行 :quit 退出spark-shell命令行。