在文件存储HDFS版上使用 CDH6

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 本文档介绍如何将CDH6中本地HDFS数据迁移到文件存储HDFS版,并配置CDH上的HDFS服务、Hive服务、Spark服务、HBase服务使用文件存储HDFS版,实现存储计算分离。

背景信息

CDH(Cloudera's Distribution, including Apache Hadoop)是众多 Hadoop 发行版本中的一种,您可以使用文件存储HDFS替换CDH6原有的本地HDFS服务,通过CDH6+文件存储HDFS实现大数据计算在云上的存储与计算分离,应对灵活多变的业务需求的挑战。


前提条件

  1. 开通文件存储HDFS服务并创建文件系统实例和挂载点,详细文档请参见:快速入门
  2. 在阿里云上创建ECS实例并安装CDH6集群,具体安装方法请参考:CDH官方文档,本文档中使用的CDH版本为 6.3.2。


数据迁移

文件存储HDFS添加用户和组映射

文件存储HDFS版访问控制说明文档参见:访问控制

在 CDH 中各服务启动用户和对应用户组:CDH and Cloudera Manager Networking and Security Requirements

使用 OpenAPI 调试 在文件存储HDFS上创建原 CDH 集群 HDFS 服务中已有的用户和组映射关系。

下方是 OpenAPI 调试 使用示例:

  1. 调用 CreateUserGroupMapping 接口在文件存储HDFS实例上创建hdfs 用户和hdfs,hadoop,supergroup 三个用户组的映射关系。

  1. 调用 ListUserGroupsMappings 接口查看文件存储HDFS实例已有的用户和组映射关系。

注意:在文件存储HDFS中超级用户组为 supergroup,依赖超级用户权限的用户需要添加到该用户组。

配置文件存储HDFS

  1. 登录 CDH6 的 Cloudera Manager Web 管理页面
  2. 配置文件存储HDFS实现类及Java SDK
  1. 在CDH Web主页,选择配置 > 高级配置代码段,进入高级配置代码段页面。
  2. 搜索 core-site.xml,并选择 HDFS
  3. core-site.xml 的群集范围高级配置代码段(安全阀)区域中,添加如下文件存储HDFS配置项并保存。
  • 配置项:fs.dfs.impl,其值:com.alibaba.dfs.DistributedFileSystem
  • 配置项:fs.AbstractFileSystem.dfs.impl,其值:com.alibaba.dfs.DFS

 d. 配置 mapreduce.application.classpath。

  1. 在CDH Web主页,选择 YARN (MR2 Included),在其右侧的操作栏中,单击 配置
  2. 配置 页面,搜索 mapreduce.application.classpath 增加配置 $HADOOP_HDFS_HOME/* 并保存。

e.下载最新的文件存储HDFS Java SDK(aliyun-sdk-dfs-x.y.z.jar)下载地址:单击此处下载

f.将下载的文件存储HDFS Java SDK 复制到 CDH HDFS服务的 CLASSPATH 路径下。

cp aliyun-sdk-dfs-x.y.z.jar /opt/cloudera/parcels/CDH/lib/hadoop-hdfs/

说明: 集群中的每台机器都需要在相同位置添加文件存储HDFS Java SDK。

g.返回在CDH Web主页,找到 HDFS ,单击重新部署图标,进行重新部署。

h.在 过期配置 页面,单击 重启过时服务 立即重启

HBase 快照迁移(可选)

如果原 HDFS 集群中已部署 HBase 服务且存在业务数据,需要将 HBase 中的数据以快照方式迁移到文件存储HDFS

## 在本文档中 HBase 有两个模拟表"mock_table_0", "mock_table_1",每个表的中的模拟数据有 10 万条hbase(main):001:0> list
TABLE
mock_table_0
mock_table_1
2 row(s)
Took 0.4213 seconds
=> ["mock_table_0", "mock_table_1"]
hbase(main):002:0> count 'mock_table_1'Current count: 1000, row: 001637311398.....
Current count: 100000, row: 991637311398100000 row(s)
Took 4.3696 seconds
=> 100000hbase(main):003:0> count 'mock_table_0'Current count: 1000, row: 001637311398......
Current count: 100000, row: 991637311398100000 row(s)
Took 4.0691 seconds
=> 100000## 创建快照hbase(main):005:0> snapshot 'mock_table_0','mock_table_0_snapshot'Took 0.8388 seconds
hbase(main):006:0> snapshot 'mock_table_1','mock_table_1_snapshot'Took 0.4341 seconds
# 在文件存储HDFS根目录中创建 /hbase 目录hadoop fs -mkdir dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/hbase
## 将创建的快照从 HDFS 拷贝到 文件存储HDFSsudo-u hdfs hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot mock_table_0_snapshot \
-copy-to dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/hbase \
--chuser hbase --chgroup hbase
sudo-u hdfs hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot mock_table_1_snapshot \
-copy-to dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/hbase \
--chuser hbase --chgroup hbase
# 设置 /hbase 目录和原 CDH 集群 HDFS 上相同的用户和用户组,默认情况下该目录用户和用户组为 hbase:hbasehadoop fs -chown-R hbase:hbase dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/hbase

数据迁移

  1. 暂停服务

为了保证在更换文件存储系统的过程中文件数据不丢失,需要暂停数据处理服务(如:YARN服务、Hive服务、Spark服务、HBase服务等),HDFS 服务仍需保持运行。此处以停止 Hive 服务为例进行说明。

  1. 在 CDH Web 主页,找到 Hive 服务,在其右侧的操作项中,单击 停止
  2. 在停止确认框中,单击 停止。当 Hive 前的图标变成灰色,表示该服务完全停止。
  3. 重复上述步骤,停止剩余服务。

说明:建议只保留 HDFS 服务正常运行,以方便进行数据迁移。但是如果要迁移的数据量大,请开启 YARN 服务,以便使用数据迁移工具 Hadoop DistCp 并行执行迁移任务可有效提高迁移速度。


  1. 迁移数据

建议将 /user 等服务目录和相关数据目录全量迁移至文件存储HDFS

  • 如果涉及将云下集群的数据迁移到云上,请参见迁移开源HDFS的数据到文件存储HDFS
  • HBase 服务只迁移快照,其他数据目录不迁移
  • 如果 CDH 原HDFS文件系统上的数据量较小,可以使用 hadoop fs -cp命令进行数据迁移。为了避免因为权限问题导致数据迁移失败,建议切换到 hdfs 用户执行命令。
sudo-u hdfs hadoop fs -cp-ptop hdfs://oldclusterip:8020/user  dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/
  • 可以使用 DistCp-filters参数在迁移过程中忽略原 HDFS 上的目录或文件,实现部分文件目录的迁移。
sudo-u hdfs hadoop distcp -pugpt hdfs://oldclusterip:8020/user  dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/

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

服务配置

在服务配置之前需要已完成 数据迁移

配置 Cloudera Management 服务

  1. 将最新的文件存储HDFS版 Java SDK 复制到 Cloudera Management 服务的 lib 目录下。
cp aliyun-sdk-dfs-x.y.z.jar /opt/cloudera/cm/lib/cdh6/

说明:集群中的每台机器都需要在相同位置添加文件存储HDFS版 Java SDK。

  1. 重启服务

在CDH Web主页,找到Cloudera Management Service,在其右侧的操作项中,单击重启。

配置 HDFS 服务

  1. 在 CDH Web 主页,选择配置 > 高级配置代码段,进入高级配置代码段页面。
  2. 搜索 core-site.xml,并选择 HDFS
  3. core-site.xml 的群集范围高级配置代码段(安全阀)中,添加如下配置项。

配置项:fs.defaultFS,其值:dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290

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

  1. 单击保存更改

配置 YARN 服务

  1. 配置 mapred-site.xml。
  1. 在CDH Web主页,选择 配置 > 高级配置代码段,进入 高级配置代码段 页面。
  2. 搜索 mapred-site.xml,并单击 YARN (MR2 Included)
  3. YARN 服务 MapReduce 高级配置代码段(安全阀)中,添加如下配置项。

配置项:mapreduce.application.framework.path,其值:dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/yarn/mapreduce/mr-framework/3.x.x-cdh6.x.x-mr-framework.tar.gz#mr-framework

说明:

  1. 其中,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com 为您的文件存储HDFS版挂载点域名,需要根据实际情况进行修改。
  2. 如果文件存储HDFS版实例上 3.x.x-cdh6.x.x-mr-framework.tar.gz 文件不存在,可能是因为此文件还没有从CDH的HDFS服务同步到文件存储HDFS版。您需要将HDFS服务 /user/yarn 目录下的所有内容同步到文件存储HDFS版上,请参考数据迁移 章节

d.单击保存更改

  1. 部署新配置并重启服务。
  1. 在CDH Web主页,找到 YARN,单击重新部署图标,进行重新部署。
  2. 过期配置 页面,单击 重启过时服务
  3. 重启过时服务 页面,单击 立即重启
  4. 等待服务全部重启完成,并重新部署客户端配置后,单击 完成

配置 Hive 服务

说明: 配置 HDFS 服务完成后,才能配置 Hive 服务。在配置 Hive 服务之前,请确认 /user/hive/ 目录中的数据已完成全量迁移,迁移方法请参见:数据迁移

  1. 修改元数据

在本文档中,Hive元数据存储在 MySQL 之中。下方以 MySQL 为例,修改DBS表和SDS表相应的存储系统的URL,如下所示。

## metastore 为 Hive 存储元数据的库mysql> use metastore;
Database changed
mysql> SELECT * FROM DBS LIMIT 5;
+-------+-----------------------+----------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+| DB_ID | DESC                  | DB_LOCATION_URI                                                            | NAME                        | OWNER_NAME | OWNER_TYPE | CREATE_TIME |
+-------+-----------------------+----------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+|     1 | Default Hive database | hdfs://cdh6-master:8020/user/hive/warehouse                                | default                     | public     | ROLE       |  1629164990 |
|  1826 | NULL                  | hdfs://cdh6-master:8020/user/hive/warehouse/tpcds_text_2.db                | tpcds_text_2                | hive       | USER       |  1629702940 |
|  1828 | NULL                  | hdfs://cdh6-master:8020/user/hive/warehouse/tpcds_bin_partitioned_orc_2.db | tpcds_bin_partitioned_orc_2 | hive       | USER       |  1629703145 |
+-------+-----------------------+----------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+3 rows inset (0.00 sec)
## 更新 DBS 表中原HDFS地址为文件存储HDFS版挂载点地址mysql> UPDATE DBS SET DB_LOCATION_URI=REPLACE(DB_LOCATION_URI,'hdfs://cdh6-master:8020','dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290');
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0mysql> SELECT * FROM DBS LIMIT 5;
+-------+-----------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+| DB_ID | DESC                  | DB_LOCATION_URI                                                                                                 | NAME                        | OWNER_NAME | OWNER_TYPE | CREATE_TIME |
+-------+-----------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+|     1 | Default Hive database | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/user/hive/warehouse                                | default                     | public     | ROLE       |  1629164990 |
|  1826 | NULL                  | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/user/hive/warehouse/tpcds_text_2.db                | tpcds_text_2                | hive       | USER       |  1629702940 |
|  1828 | NULL                  | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/user/hive/warehouse/tpcds_bin_partitioned_orc_2.db | tpcds_bin_partitioned_orc_2 | hive       | USER       |  1629703145 |
+-------+-----------------------+-----------------------------------------------------------------------------------------------------------------+-----------------------------+------------+------------+-------------+3 rows inset (0.00 sec)
mysql> SELECT * FROM SDS LIMIT 5;
+-------+-------+------------------------------------------+---------------+---------------------------+--------------------------------------------------------------+-------------+------------------------------------------------------------+----------+| SD_ID | CD_ID | INPUT_FORMAT                             | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                                     | NUM_BUCKETS | OUTPUT_FORMAT                                              | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+--------------------------------------------------------------+-------------+------------------------------------------------------------+----------+|  5423 |  1846 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://cdh6-master:8020/tmp/tpcds-generate/2/store_sales     |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5423 |
|  5424 |  1847 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://cdh6-master:8020/tmp/tpcds-generate/2/store_returns   |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5424 |
|  5425 |  1848 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://cdh6-master:8020/tmp/tpcds-generate/2/catalog_sales   |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5425 |
|  5426 |  1849 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://cdh6-master:8020/tmp/tpcds-generate/2/catalog_returns |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5426 |
|  5427 |  1850 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://cdh6-master:8020/tmp/tpcds-generate/2/web_sales       |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5427 |
+-------+-------+------------------------------------------+---------------+---------------------------+--------------------------------------------------------------+-------------+------------------------------------------------------------+----------+5 rows inset (0.00 sec)
## 更新 SDS 表中原HDFS地址为文件存储HDFS版挂载点地址mysql> UPDATE SDS SET LOCATION=REPLACE(LOCATION,'hdfs://cdh6-master:8020','dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290');
Query OK, 11756 rows affected (0.30 sec)
Rows matched: 11756  Changed: 11756  Warnings: 0mysql> SELECT * FROM SDS LIMIT 5;
+-------+-------+------------------------------------------+---------------+---------------------------+---------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------+----------+| SD_ID | CD_ID | INPUT_FORMAT                             | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                                                                          | NUM_BUCKETS | OUTPUT_FORMAT                                              | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+---------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------+----------+|  5423 |  1846 | org.apache.hadoop.mapred.TextInputFormat |               |                           | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/tpcds-generate/2/store_sales     |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5423 |
|  5424 |  1847 | org.apache.hadoop.mapred.TextInputFormat |               |                           | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/tpcds-generate/2/store_returns   |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5424 |
|  5425 |  1848 | org.apache.hadoop.mapred.TextInputFormat |               |                           | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/tpcds-generate/2/catalog_sales   |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5425 |
|  5426 |  1849 | org.apache.hadoop.mapred.TextInputFormat |               |                           | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/tpcds-generate/2/catalog_returns |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5426 |
|  5427 |  1850 | org.apache.hadoop.mapred.TextInputFormat |               |                           | dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/tpcds-generate/2/web_sales       |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |     5427 |
+-------+-------+------------------------------------------+---------------+---------------------------+---------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------+----------+5 rows inset (0.00 sec)
  1. 重启服务。
  1. 在CDH Web主页,找到 Hive,在其右侧的操作项中,单击 启动
  2. 在启动确认框中,单击 启动

配置 Spark 服务

说明:配置HDFS服务完成后,才能配置Spark服务。配置Spark服务前,请确认 /user/spark/user/history 目录中的数据已经完成了全量迁移。迁移方法请参见:数据迁移

将最新的文件存储HDFS版 Java SDK 复制到 Spark 服务的 jars 目录下。请根据实际值进行替换。

cp aliyun-sdk-dfs-x.y.z.jar /opt/cloudera/parcels/CDH/lib/spark/jars/

说明:集群中的每台机器都需要在相同位置添加文件存储HDFS版 Java SDK。

配置 HBase 服务

说明:配置HDFS服务完成后,才能配置HBase服务。配置HBase 服务前,请确认原HDFS集群HBase中的快照已迁移至文件存储HDFS版,迁移方法请参见:HBase 快照迁移

  1. 在 CDH Web 主页,选择 配置>高级配置代码段,进入高级配置代码段页面。
  2. 在最上面的搜索框中搜索 hbase-site.xml
  3. hbase-site.xml 的HBase服务高级配置代码段(安全阀)hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀)中,都要添加如下配置项。
  1. 配置项:hbase.rootdir,其值:dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/hbase
  2. 配置项:hbase.unsafe.stream.capability.enforce,其值:false

  1. 配置 zookeeper.znode.parent
  1. 在CDH Web主页,选择 HBase,在其右侧的操作栏中,单击 配置
  2. 配置 页面,搜索 zookeeper.znode.parent 配置新的 HBase 根 znode 并保存,在本文档中设置为 /hbase_dfs

说明:zookeeper.znode.parent 默认配置为 /hbase ,HBase 服务配置文件存储HDFS版时需修改该配置,否则存储在 Zookeeper 中的数据会冲突。

  1. 部署新配置并启动服务。
  1. 在 CDH Web 主页,找到 HBase,单击重新部署图标,进行重新部署。
  2. 过期配置 页面,单击 重启过时服务
  3. 重启过时服务 页面,选择需要重启的服务,单击 立即重启
  4. 等待服务全部重启完成,并重新部署客户端配置后,单击 完成
  1. 快照恢复(可选)

将存储在原 HDFS 集群的 HBase 快照迁移 到文件存储HDFS版后,可以参考下面命令恢复快照。

在 HBase Shell 中执行如下命令,查看并恢复文件存储HDFS版中已经迁移的快照。

## 查看快照hbase(main):001:0> list_snapshots
SNAPSHOT                                              TABLE + CREATION TIME
 mock_table_0_snapshot                                mock_table_0 (2021-11-19 17:25:38 +0800)
 mock_table_1_snapshot                                mock_table_1 (2021-11-19 17:25:47 +0800)
2 row(s)
Took 0.4619 seconds
=> ["mock_table_0_snapshot", "mock_table_1_snapshot"]
## 恢复快照hbase(main):002:0> restore_snapshot 'mock_table_0_snapshot'Took 2.4750 seconds
hbase(main):003:0> restore_snapshot 'mock_table_1_snapshot'Took 1.2615 seconds

停止 HDFS 服务

完成上述各项服务配置后,集群的HDFS服务已经替换为文件存储HDFS版,建议您停止集群的HDFS服务。

  • 您可以在CDH Web主页,找到 HDFS,停止服务。

服务配置验证

YARN 服务验证

使用 CDH Hadoop 中自带包 hadoop-mapreduce-examples-3.x.x-cdh6.x.x.jar 进行测试,在 /tmp/randomtextwriter 目录下生成大小约为 128M 的文件,示例命令如下

yarn jar \
/opt/cloudera/parcels/CDH/jars/hadoop-mapreduce-examples-*-cdh*.jar \
randomtextwriter \
-D mapreduce.randomtextwriter.totalbytes=134217728 \
/tmp/randomtextwriter

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

hadoop fs -ls dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/randomtextwriter

Hive 服务验证

数据迁移验证

在本文档中从原HDFS集群将TPC-DS的数据都迁移到了文件存储HDFS版。

  1. 在 Hue 上查看库中的 store_sales 表信息

可以看到该内部表的分区存储信息等都迁移到了文件存储HDFS版上。

 b. 执行 TPC_DS 第 63 条 SQL

SELECT*FROM(SELECT i_manager_id ,          sum(ss_sales_price) sum_sales ,          avg(sum(ss_sales_price)) over (partition BY i_manager_id) avg_monthly_sales
FROM item ,        store_sales ,        date_dim ,        store
WHERE ss_item_sk = i_item_sk
AND ss_sold_date_sk = d_date_sk
AND ss_store_sk = s_store_sk
AND d_month_seq IN(1211,1211+1,1211+2,1211+3,1211+4,1211+5,1211+6,1211+7,1211+8,1211+9,1211+10,1211+11)AND((i_category IN('Books','Children','Electronics')AND i_class IN('personal','portable','reference','self-help')AND i_brand IN('scholaramalgamalg #14','scholaramalgamalg #7','exportiunivamalg #9','scholaramalgamalg #9'))or(i_category IN('Women','Music','Men')AND i_class IN('accessories','classical','fragrances','pants')AND i_brand IN('amalgimporto #1','edu packscholar #1','exportiimporto #1','importoamalg #1')))GROUPBY i_manager_id,            d_moy) tmp1
WHERE CASE
          WHEN avg_monthly_sales >0 THEN ABS (sum_sales - avg_monthly_sales)/ avg_monthly_sales
          ELSE NULL      END >0.1ORDERBY i_manager_id ,         avg_monthly_sales ,         sum_sales
LIMIT100;

执行 SQL 并查看结果

说明:因为TPC-DS 数据都是随机生成,所以SQL查询返回结果和本文档不一致属于正常现象。

新建数据表验证

  1. 在 Hue 上创建并查看表信息
DROPTABLE IF EXISTS user_info_test;CREATETABLE user_info_test(user_id BIGINT, firstname STRING, lastname STRING, country STRING);INSERTINTO user_info_test VALUES(1,'Dennis','Hu','CN'),(2,'Json','Lv','Jpn'),(3,'Mike','Lu','USA');

  1. 执行查询 SQL
SELECT country,count(*)AS country_count FROM user_info_test GROUPBY country;

Spark 服务验证

使用 CDH Spark 中自带包 spark-examples_*-cdh*.jar 从本地读取文件写入文件存储HDFS版实例

spark-submit \
--master yarn \
--executor-memory 2G \
--executor-cores2 \
--class org.apache.spark.examples.DFSReadWriteTest \
/opt/cloudera/parcels/CDH/jars/spark-examples_*-cdh*.jar \
/etc/profile /tmp/sparkwrite

执行如下命令查看是否写入成功

hadoop fs -ls dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/sparkwrite/*

HBase 服务验证

数据迁移验证

查看迁移到文件存储HDFS版两张表的数据行数

hbase(main):001:0> list
TABLEmock_table_0
mock_table_1
2 row(s)Took 0.3587 seconds
=>["mock_table_0","mock_table_1"]hbase(main):002:0>count'mock_table_0'Current count:1000, row:001637311398........
Current count:100000, row:991637311398100000 row(s)Took 7.2724 seconds
=>100000hbase(main):003:0>count'mock_table_1'Current count:1000, row:001637311398........
Current count:100000, row:991637311398100000 row(s)Took 3.9399 seconds
=>100000

新建数据表验证

  1. 使用 hbase shell 创建测试表并插入数据
hbase(main):001:0>create'hbase_test','info'Created table hbase_test
Took 1.7688 seconds
=> Hbase::Table- hbase_test
hbase(main):002:0> list
TABLEhbase_test
mock_table_0
mock_table_1
3 row(s)Took 0.0147 seconds
=>["hbase_test","mock_table_0","mock_table_1"]hbase(main):003:0> put 'hbase_test','1','info:name','Sariel'Took 0.2415 seconds
hbase(main):004:0> put 'hbase_test','1','info:age','22'Took 0.0053 seconds
hbase(main):005:0> put 'hbase_test','1','info:industry','IT'Took 0.0631 seconds
hbase(main):006:0> scan 'hbase_test'ROW                                                   COLUMN+CELL
1                                                    column=info:age,timestamp=1637636289233, value=221                                                    column=info:industry,timestamp=1637636299912, value=IT
1                                                    column=info:name,timestamp=1637636279553, value=Sariel
1 row(s)Took 0.0227 seconds
  1. 在文件存储HDFS版上的 HBase 数据目录查看是否有新建的测试表

至此,CDH 中的服务已经迁移到文件存储HDFS版。

常见问题

  1. SecondaryNameNode 服务停止。

按照本文档链接配置文件存储HDFS版后, CDH中的 HDFS 服务会报错,报错信息:SecondaryNameNode 服务无法启动。这是由于 SecondaryNameNode 服务需要通过 http get 方式获取 NameNode 的 fsimage 与 edits 文件进行工作。而文件存储HDFS版不提供 http 服务,所以 SecondaryNameNode 服务无法启动。此时,CDH内的 Spark\Hive\HBase 服务已经使用阿里云文件存储HDFS版读写数据,CDH 自身的 HDFS 服务问题不会影响系统运行和数据安全。

  1. Hue 服务文件浏览器不可用。

Hue 是通过 WebHDFS REST API 访问 HDFS 上的文件。文件存储HDFS版目前不支持 WebHDFS REST API,因此不可以在 Hue 上直接操作文件存储HDFS版实例上的文件。

了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs

如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
存储 机器学习/深度学习 分布式计算
HDFS最基础使用
HDFS最基础使用
83 0
|
存储 SQL XML
必须掌握的分布式文件存储系统—HDFS
HDFS(Hadoop Distributed File System)分布式文件存储系统,主要为各类分布式计算框架如Spark、MapReduce等提供海量数据存储服务,同时HBase、Hive底层存储也依赖于HDFS。HDFS提供一个统一的抽象目录树,客户端可通过路径来访问文件,如hdfs://namenode:port/dir-a/a.data。HDFS集群分为两大角色:Namenode、Datanode(非HA模式会存在Secondary Namenode)
必须掌握的分布式文件存储系统—HDFS
|
存储 SQL 弹性计算
手把手教你使用自建Hadoop访问全托管服务化HDFS(OSS-HDFS服务)
1. 服务介绍OSS-HDFS服务(JindoFS 服务)是一款云原生数据湖3.0存储产品,基于统一的元数据管理能力,在完全兼容 HDFS 文件系统接口的同时,提供充分的 POSIX 能力支持,能更好的满足大数据和 AI 领域丰富多样的数据湖计算场景。通过OSS-HDFS服务,无需对现有的 Hadoop/Spark 大数据分析应用做任何修改,通过简单的配置就可以像在原生HDFS中那样管理和访问数据
手把手教你使用自建Hadoop访问全托管服务化HDFS(OSS-HDFS服务)
|
存储 分布式计算 Hadoop
快速搭建HDFS集群
快速搭建HDFS集群
216 0
快速搭建HDFS集群
|
SQL 分布式计算 监控
HDFS 迁移到 CDP
本文整理自 Cloudera 生态资深解决方案工程师王雪峰在 阿里云CDP公开课 上的分享。
HDFS 迁移到 CDP
|
域名解析 分布式计算 资源调度
在文件存储 HDFS 上使用 Apache Flink
本文主要为大家介绍在文件存储HDFS上搭建及使用Apache Flink的方法。
1352 0
在文件存储 HDFS 上使用 Apache Flink
|
SQL 分布式计算 Hadoop
在文件存储HDFS版上使用 Presto
本文档主要介绍在文件存储HDFS版上搭建及使用 Presto。
466 0
|
弹性计算 分布式计算 Hadoop
迁移开源HDFS数据到文件存储HDFS版
本文档介绍如何将开源HDFS的数据平滑地迁移到文件存储HDFS版。
343 0
|
SQL 分布式计算 资源调度
在文件存储HDFS版上使用 Apache Tez
本文档主要介绍在挂载文件存储HDFS版的 Hadoop 集群上安装及使用 Tez。
352 0
|
分布式计算 资源调度 Hadoop
在文件存储HDFS版上使用 Apache HBase
本文档主要介绍在文件存储HDFS版上使用 Apache HBase 的方法。
199 0