文档

配置E-MapReduce服务使用文件存储 HDFS 版

更新时间:

本文介绍如何配置E-MapReduce上的HDFS服务、HIVE服务、SPARK服务、HBase服务来使用文件存储 HDFS 版

前提条件

已完成数据迁移。具体操作,请参见E-MapReduce数据迁移

配置HDFS服务

  1. 登录阿里云E-MapReduce控制台

  2. 集群管理页面,找到需要挂载文件存储 HDFS 版的目标E-MapReduce集群,单击管理

  3. 更改配置。

    1. 选择集群服务 > HDFS,单击配置

    2. 服务配置中,单击core-site

    3. 找到配置项fs.defaultFS,将其值替换为您的文件存储 HDFS 版挂载点域名(dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290)。

      fs.defaultFS
    4. 单击保存,在确认保存对话框中,输入执行原因,单击确定

    5. 单击部署客户端配置,在确认保存对话框中,输入执行原因,单击确定

  4. 重启YARN服务。

    1. 选择集群服务 > YARN

    2. 在页面右侧的操作栏中,单击重启All Components

配置Hive服务

说明

配置HDFS服务完成后,才能配置Hive服务。

在配置Hive服务之前,请确认/user/hive/目录中的数据已完成全量迁移。具体操作,请参见迁移开源HDFS的数据到文件存储 HDFS 版

  1. 更改配置。

    1. 选择集群管理 > HIVE,单击配置

    2. 服务配置中,单击hive-site

    3. 找到配置项hive.metastore.warehouse.dir,删除其对应值中的E-MapReduce HDFS文件系统域名,只保留/user/hive/warehouse。

      hive.metastore.warehouse.dir
    4. 单击保存,在确认保存对话框中,输入执行原因,单击确定

    5. 单击部署客户端配置,在确认保存对话框中,输入执行原因,单击确定

  2. 修改元数据。

    1. hivemetastore-site中,获取数据库相关信息。

      • 在配置项javax.jdo.option.ConnectionURL中,获取MySQL服务的主机名和元数据存储的数据库。

      • 在配置项javax.jdo.option.ConnectionUserName中,获取MySQL服务的用户名。

      • 在配置项javax.jdo.option.ConnectionPassword中,获取MySQL服务的用户密码。

    2. Hive的元数据存储在MySQL,进入存储Hive元数据的MySQL数据库hivemeta,修改CTLGS表、DBS表和SDS表相应的值。

      1. 执行use hivemeta命令,进入存储Hive元数据的MySQL数据库hivemeta。

      2. 修改表CTLGS中的数据。

        1. 执行select * from CTLGS命令,查询表CTLGS中的数据。返回结果示例如下:

          +---------+------+---------------------------+-----------------------------------------------------------------------------+
          | CTLG_ID | NAME | DESC                      | LOCATION_URI                                                                |
          +---------+------+---------------------------+-----------------------------------------------------------------------------+
          |       1 | hive | Default catalog, for Hive | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse |
          +---------+------+---------------------------+-----------------------------------------------------------------------------+
          1 row in set (0.00 sec)
        2. 修改LOCATION_URI文件存储 HDFS 版的挂载点域名,请根据实际情况进行修改。

          修改CTLG_ID为1的LOCATION_URI,示例如下:

          MariaDB [hivemeta]> UPDATE CTLGS
              -> SET     LOCATION_URI   = 'dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse'
              -> WHERE     CTLG_ID = 1;

          若返回如下信息,则表示修改成功。

          Query OK, 0 rows affected (0.00 sec)
          Rows matched: 1  Changed: 0  Warnings: 0
      3. 修改表DBS中的数据。

        1. 执行select * from DBS命令,查询表DBS中的数据。返回结果示例如下:

           +-------+-----------------------+-----------------------------------------------------------------------------------------+--------------------------+------------+------------+-----------+
          | DB_ID | DESC                  | DB_LOCATION_URI                                                                         | NAME                     | OWNER_NAME | OWNER_TYPE | CTLG_NAME |
          +-------+-----------------------+-----------------------------------------------------------------------------------------+--------------------------+------------+------------+-----------+
          |     1 | Default Hive database | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse                             | default                  | public     | ROLE       | hive      |
          |     2 | NULL                  | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs.db            | analysis_logs            | root       | USER       | hive      |
          |     3 | NULL                  | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report.db     | analysis_logs_report     | root       | USER       | hive      |
          |     4 | NULL                  | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report_old.db | analysis_logs_report_old | root       | USER       | hive      |
          +-------+-----------------------+-----------------------------------------------------------------------------------------+--------------------------+------------+------------+-----------+
          4 rows in set (0.00 sec)
        2. 修改DB_LOCATION_URI文件存储 HDFS 版的挂载点域名,请根据实际情况进行修改。

          修改DB_ID为1的DB_LOCATION_URI,示例如下:

          MariaDB [hivemeta]>UPDATE DBS 
              -> SET    DB_LOCATION_URI = 'dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse'
              -> WHERE  DB_ID = 1;

          若返回如下信息,则表示修改成功。

          Query OK, 1 row affected (0.00 sec)
          Rows matched: 1  Changed: 1  Warnings: 0
      4. 修改表SDS中的数据。

        1. 执行select * from SDS命令,查询表SDS中的数据。返回结果示例如下:

          +-------+-------+---------------------------------------------------------------+---------------+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------+----------+
          | SD_ID | CD_ID | INPUT_FORMAT                                                  | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                                                                                                          | NUM_BUCKETS | OUTPUT_FORMAT                                                  | SERDE_ID |
          +-------+-------+---------------------------------------------------------------+---------------+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------+----------+
          |     1 |     1 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs.db/original_log_bj_partitioned                          |          -1 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat |        1 |
          |     2 |     2 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs.db/original_log_hz_partitioned                          |          -1 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat |        2 |
          |     3 |     3 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs.db/original_log_sh_partitioned                          |          -1 | org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat |        3 |
          |    29 |    22 | org.apache.hadoop.mapred.TextInputFormat                      |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report.db/hz_writethroughput_top_daily                  |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     |       29 |
          ........
          |   548 |    80 | org.apache.hadoop.mapred.TextInputFormat                      |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report.db/hz_readthroughput_top_yearly                  |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     |      548 |
          |   549 |    81 | org.apache.hadoop.mapred.TextInputFormat                      |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report_old.db/hz_writethroughput_top_yearly_20190709    |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     |      549 |
          |   550 |    82 | org.apache.hadoop.mapred.TextInputFormat                      |               |                           | hdfs://emr-header-1.cluster-125428:9000/user/hive/warehouse/analysis_logs_report.db/hz_writethroughput_top_yearly                 |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     |      550 |
          +-------+-------+---------------------------------------------------------------+---------------+---------------------------+------------------------------------------------------------------------------------------------------------------------
          536 rows in set (0.00 sec)
        2. 修改LOCATION属性中的值为文件存储 HDFS 版的挂载点域名,请根据实际情况进行修改。

          修改SD_ID为1的LOCATION,示例如下:

          MariaDB [hivemeta]> UPDATE SDS   SET  LOCATION = "dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse/analysis_logs.db/original_log_bj_partitioned"  WHERE SD_ID = 1;

          若返回如下信息,则表示修改成功。

          Query OK, 0 rows affected (0.01 sec)
          Rows matched: 1  Changed: 0  Warnings: 0
  3. 在页面右侧的操作栏,单击重启All Components,重启服务。

配置Spark服务

说明

配置HDFS服务完成后,才能配置Spark服务。

配置Spark服务前,请确认/spark-history目录中的数据已经完成了全量迁移。具体操作,请参见迁移开源HDFS的数据到文件存储 HDFS 版

  1. 更改配置。

    1. 选择集群服务 > Spark,单击配置

    2. 服务配置中,单击spark-defaults

    3. 找到配置项spark_eventlog_dir,将其对应的值替换为您文件存储 HDFS 版挂载点域名。

      HDFS挂载点域名
    4. 单击保存,在确认保存对话框中,输入执行原因,单击确定

    5. 单击部署客户端配置,在确认保存对话框中,输入执行原因,单击确定

  2. 放置SDK包。

    文件存储 HDFS 版的SDK包(aliyun-sdk-dfs-1.0.2-beta.jar),放置到E-MapReduce Spark服务存放jar包的目录下。

    cp ~/aliyun-sdk-dfs-1.0.2-beta.jar    /opt/apps/ecm/service/spark/2.4.3-1.0.0/package/spark-2.4.3-1.0.0-bin-hadoop2.8/jars/

    一般情况下,放置到/opt/apps/ecm/service/spark/x.x.x-x.x.x/package/spark-x.x.x-x.x.x-bin-hadoopx.x/jars目录。

    说明

    集群中的每台机器都需要添加该SDK包。

  3. 在页面右侧的操作栏,单击重启All Components,重启服务。

配置HBase服务

说明

配置HDFS服务完成后,才能配置HBase服务。

配置HBase服务前,请确认/hbase目录中的数据已经完成了全量迁移。具体操作,请参见迁移开源HDFS的数据到文件存储 HDFS 版

  1. 更改配置。

    1. 选择集群服务 > Hbase,单击配置

    2. 服务配置中,单击Hbase-site

    3. 找到配置项hbase.rootdir,删除其对应值中的E-MapReduce HDFS文件系统域名,只保留/hbase

      hbase
    4. 单击保存,在确认保存对话框中,输入执行原因,单击确定

    5. 单击部署客户端配置,在确认保存对话框中,输入执行原因,单击确定

  2. 在页面右侧的操作栏,单击重启All Components,重启服务。

关闭HDFS服务

说明

关闭HDFS服务前,请确认原来E-MapReduce HDFS上存储的数据都已经迁移到文件存储 HDFS 版。具体操作,请参见迁移开源HDFS的数据到文件存储 HDFS 版

  1. 选择集群服务 > HDFS

  2. 在页面右侧的操作栏,单击重启All Components,重启服务。

  3. 在执行集群操作对话框中,输入执行原因,单击确定

验证服务正确性

  • hadoop的验证

    使用E-MapReduce hadoop中自带的测试包hadoop-mapreduce-examples-2.x.x.jar进行测试。该测试包默认放置在/opt/apps/ecm/service/hadoop/2.x.x-1.x.x/package/hadoop-2.x.x-1.x.x/share/hadoop/mapreduce/目录下。

    1. 执行以下命令,在/tmp/randomtextwriter目录下生成128 MB大小的文件。

      hadoop jar /opt/apps/ecm/service/hadoop/2.8.5-1.3.1/package/hadoop-2.8.5-1.3.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar  randomtextwriter  -D mapreduce.randomtextwriter.totalbytes=134217728  -D mapreduce.job.maps=2 -D mapreduce.job.reduces=2   /tmp/randomtextwriter

      其中hadoop-mapreduce-examples-2.8.5.jar为E-MapReduce的测试包,请根据实际情况修改。

    2. 执行以下命令验证文件是否生成成功,从而验证文件系统实例的连通性。

      hadoop fs -ls dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/tmp/randomtextwriter 

      其中f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为您的文件存储 HDFS 版挂载点域名,请根据实际情况修改。

      • 如果看到_SUCCESS和part-m-00000两个文件,表示连通成功。如下所示:

        -rwxrwxrwx   3 root root          0 2019-07-26 11:05 dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/tmp/randomtextwriter2/_SUCCESS
        -rwxrwxrwx   3 root root  137774743 2019-07-26 11:05 dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/tmp/randomtextwriter2/part-m-000000
      • 如果连通失败(例如,报错No such file or directory),请排查连通性问题。具体操作,请参见创建文件系统实例后,为什么无法访问文件存储 HDFS 版?

  • Spark的验证

    使用E-MapReduce Spark中自带的测试包spark-examples_2.x-2.x.x.jar进行测试。该测试包默认放置在/opt/apps/ecm/service/spark/2.x.x-1.0.0/package/spark-2.x.x-1.0.0-bin-hadoop2.8/examples/jars下。

    1. 执行以下命令,在/tmp/randomtextwriter目录下生成128M大小的文件。

      hadoop jar /opt/apps/ecm/service/hadoop/2.8.5-1.3.1/package/hadoop-2.8.5-1.3.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar  randomtextwriter  -D mapreduce.randomtextwriter.totalbytes=134217728  -D mapreduce.job.maps=2 -D mapreduce.job.reduces=2   /tmp/randomtextwriter

      其中hadoop-mapreduce-examples-2.8.5.jar为E-MapReduce的测试包,请根据实际情况修改。

    2. 使用spark测试包从文件存储 HDFS 版上读取测试文件并按照word count的格式展示。

      spark-submit   --master yarn --executor-memory 2G --executor-cores 2  --class org.apache.spark.examples.JavaWordCount  /opt/apps/ecm/service/spark/2.4.3-1.0.0/package/spark-2.4.3-1.0.0-bin-hadoop2.8/examples/jars/spark-examples_2.11-2.4.3.jar   /tmp/randomtextwriter

      如果回显信息类似如下图所示,表示配置成功。配置成功

  • Hive的验证

    1. 执行以下命令进入Hive命令界面。

      hive
    2. 执行以下命令创建测试表。

      create table default.testTable(id int , name string )  row format delimited   fields terminated by '\t'  lines terminated by '\n';
    3. 执行以下命令查看测试表。

      如果回显信息中的Location属性对应的值为文件存储 HDFS 版的路径,则表示配置Hive成功。如果不是,请重新配置。具体操作,请参见配置Hive服务

      • 执行命令

        desc formatted  default.testTable ;
      • 返回信息

        OK
        2019-07-26 11:23:25,133 INFO  [9d1aeaf3-19d8-461b-952f-6fcfed900e69 main] mapred.FileInputFormat: Total input files to process : 1
        # col_name              data_type               comment
        id                      int
        name                    string
        
        # Detailed Table Information
        Database:               default
        OwnerType:              USER
        Owner:                  root
        CreateTime:             Fri Jul 26 11:23:12 CST 2019
        LastAccessTime:         UNKNOWN
        Retention:              0
        Location:               dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse/testtable
        Table Type:             MANAGED_TABLE
        Table Parameters:
                COLUMN_STATS_ACCURATE   {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"id\":\"true\",\"name\":\"true\"}}
                bucketing_version       2
                numFiles                0
                numRows                 0
                rawDataSize             0
                totalSize               0
                transient_lastDdlTime   1564111392
        
        # Storage Information
        SerDe Library:          org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
        InputFormat:            org.apache.hadoop.mapred.TextInputFormat
        OutputFormat:           org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
        Compressed:             No
        Num Buckets:            -1
        Bucket Columns:         []
        Sort Columns:           []
        Storage Desc Params:
                field.delim             \t
                line.delim              \n
                serialization.format    \t
        Time taken: 0.134 seconds, Fetched: 34 row(s)
  • HBase的验证

    1. 执行hbase shell命令,进入hbase shell命令界面。

    2. 在HBase中创建测试表。

      1. 创建测试表。

        create 'hbase_test','info'
      2. 写入测试数据。

        put 'hbase_test','1', 'info:name' ,'Sariel'
        put 'hbase_test','1', 'info:age' ,'22'
        put 'hbase_test','1', 'info:industry' ,'IT'
    3. 执行以下命令查看文件存储 HDFS 版的/hbase/data/default/路径,如果/hbase/data/default/路径下有hbase_test目录,则证明配置链接成功。

      hadoop fs -ls /hbase/data/default
      hbase_test

后续步骤

卸载并释放E-MapReduce HDFS使用的云盘

  • 本页导读 (1)