在文件存储HDFS版上使用 CDH6

背景信息

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


前提条件

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


数据迁移

配置文件存储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

在文件存储HDFS版上使用 CDH6

d. 配置 mapreduce.application.classpath。

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

在文件存储HDFS版上使用 CDH6

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 ,单击重新部署图标,进行重新部署。

在文件存储HDFS版上使用 CDH6

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: 991637311398
100000 row(s)
Took 4.3696 seconds
=> 100000
hbase(main):003:0> count 'mock_table_0'
Current count: 1000, row: 001637311398
......
Current count: 100000, row: 991637311398
100000 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 拷贝到 文件存储HDFS版
sudo -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

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

数据迁移

  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 hdfs://oldclusterip:8020/user  dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/
sudo -u hdfs hadoop distcp 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版挂载点域名,需要根据实际情况进行修改。

在文件存储HDFS版上使用 CDH6

  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版上,请参考 数据迁移 章节

在文件存储HDFS版上使用 CDH6

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 in set (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: 0

mysql> 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 in set (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 in set (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: 0

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 |               |                           | 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 in set (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

在文件存储HDFS版上使用 CDH6

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

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

在文件存储HDFS版上使用 CDH6

  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

在文件存储HDFS版上使用 CDH6

Hive 服务验证

数据迁移验证

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

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

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

在文件存储HDFS版上使用 CDH6

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')))
   GROUP BY 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.1
ORDER BY i_manager_id ,
         avg_monthly_sales ,
         sum_sales
LIMIT 100;

执行 SQL 并查看结果

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

在文件存储HDFS版上使用 CDH6

新建数据表验证

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

在文件存储HDFS版上使用 CDH6

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

在文件存储HDFS版上使用 CDH6

Spark 服务验证

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

spark-submit \
--master yarn \
--executor-memory 2G \
--executor-cores 2 \
--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/*

在文件存储HDFS版上使用 CDH6

HBase 服务验证

数据迁移验证

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

hbase(main):001:0> list
TABLE
mock_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: 991637311398
100000 row(s)
Took 7.2724 seconds
=> 100000
hbase(main):003:0> count 'mock_table_1'
Current count: 1000, row: 001637311398
........
Current count: 100000, row: 991637311398
100000 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
TABLE
hbase_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=22
 1                                                    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 数据目录查看是否有新建的测试表

在文件存储HDFS版上使用 CDH6

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

在文件存储HDFS版上使用 CDH6

常见问题

  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版技术交流群。

在文件存储HDFS版上使用 CDH6

上一篇:Python 最强编辑器详细使用指南!(二)


下一篇:Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用