文档首页/ MapReduce服务 MRS/ 最佳实践/ 周边云服务对接/ 使用MRS Hive表对接OBS文件系统
更新时间:2024-12-17 GMT+08:00

使用MRS Hive表对接OBS文件系统

应用场景

MRS支持用户将数据存储在OBS服务中,使用MRS集群仅作数据计算处理的存算分离场景。

用户通过IAM服务的“委托”机制进行简单配置,即可实现OBS的访问。

方案架构

Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。

Hive主要特点如下:

  • 海量结构化数据分析汇总。
  • 将复杂的MapReduce编写任务简化为SQL语句。
  • 灵活的数据存储格式,支持JSON、CSV、TEXTFILE、RCFILE、SEQUENCEFILE、ORC等存储格式。

Hive作为一个基于HDFS和MapReduce架构的数据仓库,其主要能力是通过对HQL(Hive Query Language)编译和解析,生成并执行相应的MapReduce任务或者HDFS操作。

图1 Hive结构
  • Metastore:对表,列和Partition等的元数据进行读写及更新操作,其下层为关系型数据库。
  • Driver:管理HQL执行的生命周期并贯穿Hive任务整个执行期间。
  • Compiler:编译HQL并将其转化为一系列相互依赖的Map/Reduce任务。
  • Optimizer:优化器,分为逻辑优化器和物理优化器,分别对HQL生成的执行计划和MapReduce任务进行优化。
  • Executor:按照任务的依赖关系分别执行Map/Reduce任务。
  • ThriftServer:提供thrift接口,作为JDBC的服务端,并将Hive和其他应用程序集成起来。
  • Clients:包含WebUI和JDBC接口,为用户访问提供接口。

方案优势

MRS支持在大数据存储容量大、计算资源需要弹性扩展的场景下,用户将数据存储在OBS服务中,使用MRS集群仅作数据计算处理的存算分离模式,从而实现按需灵活扩展资源、低成本的海量数据分析方案。

约束与限制

大数据存算分离场景,请务必使用OBS并行文件系统,使用普通对象桶会对集群性能产生较大影响。

操作流程

本章节指导用户创建Hive表存放数据到OBS,基本流程如下所示:

  1. 步骤一:创建ECS委托
  2. 步骤二:为MRS集群配置委托
  3. 步骤三:创建OBS文件系统
  4. 步骤四:Hive访问OBS文件系统

步骤一:创建ECS委托

  1. 登录华为云管理控制台。
  2. 在服务列表中选择“管理与监管 > 统一身份认证服务”。
  3. 选择“委托 > 创建委托”。
  4. 设置“委托名称”。例如:mrs_ecs_obs。
  5. “委托类型”选择“云服务”,在“云服务”中选择“ECS BMS”,授权ECS或BMS调用OBS服务,如图2所示。
  6. “持续时间”选择“永久”并单击“下一步”。
    图2 创建委托
  7. 在弹出页面中搜索框内搜索“OBS OperateAccess”策略,勾选“OBS OperateAccess”策略如图3所示。
    图3 配置权限
  8. 单击“下一步”,选择权限范围方案,默认选择“所有资源”,单击“展开其他方案”,选择“全局服务资源”,单击“确定”。
  9. 在弹出的提示框中单击“知道了”,开始授权。界面提示“授权成功。”,单击“完成”,委托成功创建。

步骤二:为MRS集群配置委托

配置存算分离支持在新建集群中配置委托实现,也可以通过为已有集群绑定委托实现。本示例以为已有集群配置委托为例介绍。

  1. 登录MRS控制台,在导航栏选择“现有集群”。
  2. 单击集群名称,进入集群详情页面。
  3. 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“单击同步”进行IAM用户同步。
  4. 在集群详情页的“概览”页签,单击“委托”右侧的“管理委托”选择步骤一:创建ECS委托的委托并单击“确定”进行绑定,或单击“新建委托”进入IAM控制台进行创建后再在此处进行绑定。
    图4 绑定委托

步骤三:创建OBS文件系统

  1. 登录OBS控制台。
  2. 选择“并行文件系统 > 创建并行文件系统”。
  3. 填写文件系统名称,例如“mrs-demo01”。

    其他参数请根据需要填写。

    图5 创建并行文件系统
  4. 单击“立即创建”。
  5. 在OBS控制台并行文件系统列表中,单击文件系统名称进入详情页面。
  6. 在左侧导航栏选择“文件”,新建program、input文件夹。
    • program:请上传程序包到该文件夹。
    • input:请上传输入数据到该文件夹。

步骤四:Hive访问OBS文件系统

  1. root用户登录集群Master节点,具体请参见登录集群节点
  2. 验证Hive访问OBS。
    1. 用root用户登录集群Master节点,执行如下命令:

      cd /opt/Bigdata/client

      source bigdata_env

      source Hive/component_env

    2. 查看文件系统mrs-demo01下面的文件列表。

      hadoop fs -ls obs://mrs-demo01/

    3. 返回文件列表即表示访问OBS成功。
      图6 查看mrs-demo01下的文件列表
    4. 执行以下命令进行用户认证(普通模式即未开启Kerberos认证无需执行此步骤)。

      kinit hive

      输入用户hive密码,默认密码为Hive@123,第一次使用需要修改密码。

    5. 执行Hive组件的客户端命令。

      beeline

    6. 在beeline中直接使用OBS的目录进行访问。例如,执行如下命令创建Hive表并指定数据存储在mrs-demo01文件系统的test_demo01目录中。

      create table test_demo01(name string) location "obs://mrs-demo01/test_demo01";

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

      show tables;

      图7 查看是否存在表test_demo01
    8. 查看表的Location。

      show create table test_demo01;

      查看表的Location是否为“obs://OBS桶名/”开头。

      图8 查看表test_demo01的Location
    9. 写入数据。

      insert into test_demo01 values('mm'),('ww'),('ww');

      执行select * from test_demo01;查询是否写入成功。

      图9 查看表test_demo01中的数据
    10. 执行命令!q退出beeline客户端。
    11. 重新登录OBS控制台。
    12. 单击“并行文件系统”, 选择创建的文件系统名称。
    13. 单击“文件”,查看是否存在创建的数据。
      图10 查看数据