背景信息
CDH(Cloudera's Distribution, including Apache Hadoop)是众多 Hadoop 发行版本中的一种,您可以使用文件存储HDFS版替换CDH6原有的本地HDFS服务,通过CDH6+文件存储HDFS版实现大数据计算在云上的存储与计算分离,应对灵活多变的业务需求的挑战。
前提条件
- 开通文件存储HDFS版服务并创建文件系统实例和挂载点,详细文档请参见:快速入门。
- 在阿里云上创建ECS实例并安装CDH6集群,具体安装方法请参考:CDH官方文档,本文档中使用的CDH版本为 6.3.2。
数据迁移
文件存储HDFS添加用户和组映射
文件存储HDFS版访问控制说明文档参见:访问控制
在 CDH 中各服务启动用户和对应用户组:CDH and Cloudera Manager Networking and Security Requirements
使用 OpenAPI 调试 在文件存储HDFS上创建原 CDH 集群 HDFS 服务中已有的用户和组映射关系。
下方是 OpenAPI 调试 使用示例:
- 调用 CreateUserGroupMapping 接口在文件存储HDFS实例上创建
hdfs
用户和hdfs,hadoop,supergroup
三个用户组的映射关系。
- 调用 ListUserGroupsMappings 接口查看文件存储HDFS实例已有的用户和组映射关系。
注意:在文件存储HDFS中超级用户组为 supergroup,依赖超级用户权限的用户需要添加到该用户组。
配置文件存储HDFS版
- 登录 CDH6 的 Cloudera Manager Web 管理页面
- 配置文件存储HDFS版实现类及Java SDK
- 在CDH Web主页,选择配置 > 高级配置代码段,进入高级配置代码段页面。
- 搜索
core-site.xml
,并选择 HDFS。 - 在 core-site.xml 的群集范围高级配置代码段(安全阀)区域中,添加如下文件存储HDFS版配置项并保存。
- 配置项:
fs.dfs.impl
,其值:com.alibaba.dfs.DistributedFileSystem
- 配置项:
fs.AbstractFileSystem.dfs.impl
,其值:com.alibaba.dfs.DFS
d. 配置 mapreduce.application.classpath。
- 在CDH Web主页,选择 YARN (MR2 Included),在其右侧的操作栏中,单击 配置。
- 在 配置 页面,搜索
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
数据迁移
- 暂停服务
为了保证在更换文件存储系统的过程中文件数据不丢失,需要暂停数据处理服务(如:YARN服务、Hive服务、Spark服务、HBase服务等),HDFS 服务仍需保持运行。此处以停止 Hive 服务为例进行说明。
- 在 CDH Web 主页,找到 Hive 服务,在其右侧的操作项中,单击 停止。
- 在停止确认框中,单击 停止。当 Hive 前的图标变成灰色,表示该服务完全停止。
- 重复上述步骤,停止剩余服务。
说明:建议只保留 HDFS 服务正常运行,以方便进行数据迁移。但是如果要迁移的数据量大,请开启 YARN 服务,以便使用数据迁移工具 Hadoop DistCp 并行执行迁移任务可有效提高迁移速度。
- 迁移数据
建议将 /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/
- 如果CDH HDFS文件系统上的数据量较大,需要使用数据迁移工具 Hadoop DistCp 进行数据迁移,详情请参见迁移开源HDFS的数据到文件存储HDFS版。
- 可以使用
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 服务
- 将最新的文件存储HDFS版 Java SDK 复制到 Cloudera Management 服务的 lib 目录下。
cp aliyun-sdk-dfs-x.y.z.jar /opt/cloudera/cm/lib/cdh6/
说明:集群中的每台机器都需要在相同位置添加文件存储HDFS版 Java SDK。
- 重启服务
在CDH Web主页,找到Cloudera Management Service,在其右侧的操作项中,单击重启。
配置 HDFS 服务
- 在 CDH Web 主页,选择配置 > 高级配置代码段,进入高级配置代码段页面。
- 搜索
core-site.xml
,并选择 HDFS。 - 在 core-site.xml 的群集范围高级配置代码段(安全阀)中,添加如下配置项。
配置项:fs.defaultFS
,其值:dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290
说明:其中f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为您的文件存储HDFS版挂载点域名,需要根据实际情况进行修改。
- 单击保存更改。
配置 YARN 服务
- 配置 mapred-site.xml。
- 在CDH Web主页,选择 配置 > 高级配置代码段,进入 高级配置代码段 页面。
- 搜索
mapred-site.xml
,并单击 YARN (MR2 Included)。 - 在 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
说明:
- 其中,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com 为您的文件存储HDFS版挂载点域名,需要根据实际情况进行修改。
- 如果文件存储HDFS版实例上 3.x.x-cdh6.x.x-mr-framework.tar.gz 文件不存在,可能是因为此文件还没有从CDH的HDFS服务同步到文件存储HDFS版。您需要将HDFS服务
/user/yarn
目录下的所有内容同步到文件存储HDFS版上,请参考数据迁移 章节
d.单击保存更改。
- 部署新配置并重启服务。
- 在CDH Web主页,找到 YARN,单击重新部署图标,进行重新部署。
- 在 过期配置 页面,单击 重启过时服务。
- 在 重启过时服务 页面,单击 立即重启。
- 等待服务全部重启完成,并重新部署客户端配置后,单击 完成。
配置 Hive 服务
说明: 配置 HDFS 服务完成后,才能配置 Hive 服务。在配置 Hive 服务之前,请确认 /user/hive/
目录中的数据已完成全量迁移,迁移方法请参见:数据迁移。
- 修改元数据
在本文档中,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)
- 重启服务。
- 在CDH Web主页,找到 Hive,在其右侧的操作项中,单击 启动。
- 在启动确认框中,单击 启动。
配置 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 快照迁移
- 在 CDH Web 主页,选择 配置>高级配置代码段,进入高级配置代码段页面。
- 在最上面的搜索框中搜索
hbase-site.xml
。 - 在hbase-site.xml 的HBase服务高级配置代码段(安全阀)和hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀)中,都要添加如下配置项。
- 配置项:
hbase.rootdir
,其值:dfs://f-xxxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/hbase
。 - 配置项:
hbase.unsafe.stream.capability.enforce
,其值:false
。
- 配置
zookeeper.znode.parent
。
- 在CDH Web主页,选择 HBase,在其右侧的操作栏中,单击 配置。
- 在 配置 页面,搜索
zookeeper.znode.parent
配置新的 HBase 根 znode 并保存,在本文档中设置为/hbase_dfs
。
说明:zookeeper.znode.parent
默认配置为 /hbase
,HBase 服务配置文件存储HDFS版时需修改该配置,否则存储在 Zookeeper 中的数据会冲突。
- 部署新配置并启动服务。
- 在 CDH Web 主页,找到 HBase,单击重新部署图标,进行重新部署。
- 在 过期配置 页面,单击 重启过时服务。
- 在 重启过时服务 页面,选择需要重启的服务,单击 立即重启。
- 等待服务全部重启完成,并重新部署客户端配置后,单击 完成。
- 快照恢复(可选)
将存储在原 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版。
- 在 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查询返回结果和本文档不一致属于正常现象。
新建数据表验证
- 在 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');
- 执行查询 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
新建数据表验证
- 使用
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
- 在文件存储HDFS版上的 HBase 数据目录查看是否有新建的测试表
至此,CDH 中的服务已经迁移到文件存储HDFS版。
常见问题
- SecondaryNameNode 服务停止。
按照本文档链接配置文件存储HDFS版后, CDH中的 HDFS 服务会报错,报错信息:SecondaryNameNode 服务无法启动。这是由于 SecondaryNameNode 服务需要通过 http get 方式获取 NameNode 的 fsimage 与 edits 文件进行工作。而文件存储HDFS版不提供 http 服务,所以 SecondaryNameNode 服务无法启动。此时,CDH内的 Spark\Hive\HBase 服务已经使用阿里云文件存储HDFS版读写数据,CDH 自身的 HDFS 服务问题不会影响系统运行和数据安全。
- Hue 服务文件浏览器不可用。
Hue 是通过 WebHDFS REST API 访问 HDFS 上的文件。文件存储HDFS版目前不支持 WebHDFS REST API,因此不可以在 Hue 上直接操作文件存储HDFS版实例上的文件。
了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs
如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。