更新时间:2025-07-25 GMT+08:00
分享

配置Spark通过IAM委托访问OBS

参考配置MRS集群通过IAM委托对接OBS完成存算分离集群配置后,即可在Spark客户端创建Location为OBS路径的表。

使用Spark beeline对接OBS

  1. 登录MRS集群Manager界面,具体请参见访问MRS集群Manager,选择“集群 > 服务 > Spark2x > 配置 > 全部配置”。

    在左侧的导航列表中选择“JDBCServer2x > 自定义”。在参数“spark.hdfs-site.customized.configs”中添加配置项“dfs.namenode.acls.enabled”,值为“false”,关闭HDFS ACL功能。

    图1 添加Spark自定义参数

  2. 在搜索框中搜索参数“spark.sql.statistics.fallBackToHdfs”,修改该参数值为“false”。

    图2 修改“spark.sql.statistics.fallBackToHdfs”参数值

  3. 保存配置并重启JDBCServer2x实例。
  4. 使用安装客户端用户登录客户端安装节点。

    下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

  5. 配置环境变量。

    source 客户端安装目录/bigdata_env

  6. 如果集群启用了Kerberos认证,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit 用户名

  7. 在spark-beeline中访问OBS,例如在“obs://mrs-word001/table/”目录中创建表“test”

    访问spark-beeline:

    spark-beeline

    创建表test

    create table test(id int) location 'obs://mrs-word001/table/';

  8. 执行如下命令查询所有表,返回结果中存在表test,即表示访问OBS成功。

    show tables;
    图3 Spark2x验证返回已创建的表名

  9. 使用“Ctrl + C”退出spark beeline。

使用spark sql对接OBS

  1. 使用安装客户端用户登录客户端安装节点。

    下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

  2. 配置环境变量。

    source 客户端安装目录/bigdata_env

  3. 修改配置文件:

    vim 客户端安装目录/Spark2x/spark/conf/hdfs-site.xml

    修改如下内容,“dfs.namenode.acls.enabled”参数用于设置是否启用HDFS ACL功能:

    <property>
    <name>dfs.namenode.acls.enabled</name>
    <value>false</value>
    </property>

  4. 如果集群启用了Kerberos认证,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit 用户名

  5. 在spark-sql中访问OBS,例如在“obs://mrs-word001/table/”目录中创建表“test”

    1. 进入spark bin目录:
      cd 客户端安装目录/Spark2x/spark/bin
    2. 登录spark-sql命令行:
      ./spark-sql
    3. 在spark-sql命令行执行以下命令创建表:
      create table test(id int) location 'obs://mrs-word001/table/';

  6. 执行以下命令查看表是否存在:

    show tables;

  7. 执行exit;退出spark-sql命令行。

    OBS文件系统打印大量日志可能导致读写性能受影响,可通过调整OBS客户端日志级别优化,日志调整方式如下:

    1. 切换至“conf”目录下:
      cd 客户端安装目录/Spark2x/spark/conf
    2. 编辑“log4j.properties”文件:
      vi log4j.properties
    1. 在文件中添加OBS日志级别配置:
      log4j.logger.org.apache.hadoop.fs.obs=WARN
      log4j.logger.com.obs=WARN
      图4 添加OBS日志级别

使用Spark Shell读取OBS文件

  1. 使用安装客户端用户登录客户端安装节点。

    下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

  2. 配置环境变量。

    source 客户端安装目录/bigdata_env

  3. 修改配置文件:

    vim 客户端安装目录/Spark2x/spark/conf/hdfs-site.xml

    修改如下内容,“dfs.namenode.acls.enabled”参数用于设置是否启用HDFS ACL功能:

    <property>
    <name>dfs.namenode.acls.enabled</name>
    <value>false</value>
    </property>

  4. 如果集群启用了Kerberos认证,使用以下命令用户进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit 用户名

  5. 执行以下命令登录spark-sql命令行:

    切换至“bin”目录下:

    cd 客户端安装目录/Spark2x/spark/bin

    登录spark-sql命令行:

    ./spark-sql

  6. 执行以下命令在OBS中创建表并插入数据:

    1. 创建数据库:
      create database test location "obs://并行文件系统路径/test";
    2. 切换数据库
      use test;
    3. 创建表:
      create table test1(a int,b int) using parquet;
    4. 向表中插入数据
      insert into test1 values(1,2);
    5. 查看表详情:
      desc formatted test1;

      图5所示表的Location为OBS路径。

      图5 查看表Location
    6. 执行exit;退出spark-sql命令行。

  7. 进入spark bin目录:

    cd 客户端安装目录/Spark2x/spark/bin

  8. 执行以下命令登录spark-shell命令行:

    ./spark-shell

  9. 在spark-shell命令行执行以下命令查询5.c创建的表数据:

    spark.read.format("parquet").load("obs://并行文件系统路径/test1").show();

    查看到的表数据如图6所示。

    图6 查看表数据

  10. 执行:quit退出spark-shell命令行。

相关文档