本手册适用于从 IDC 或者本地机房的 Hadoop/CDH 集群,直接将 HDFS 拷贝数据到 LAS 上。数据传输到 LASFS 后,可以进一步进行外表创建,进行后续数据分析工作。 要使用该手册进行实际的数据迁移,需满足如下条件。
适用于客户已有 CDH/Hadoop 集群的数据迁移,需确保CDH集群可用接入公网。确保可以直接访问如下地址 las-fs-tunnel-cn-beijing.volces.com 的 80 端口,可以通过 telnet 工具访问上述地址。传输的实际速率取决于本地到火山公网带宽的大小。
原始旧集群需临时先关闭 kerberos 认证。
提交用户需要有本身集群的 YARN 队列提交权限,提前准备好队列名称。
HDFS distcp 到 LASFS 参数需要指定 LASFS 的 AK/SK ,可通过以下方式进行获取。
进入火山引擎首页后,点击右上角 个人头像 - 密钥管理,进入密钥管理页面:
在密钥管理页可以进行查看或添加 AK/SK,填入对应的参数配置中即可。
直接在命令行中使用如下命令下载迁移工具。
# 下载 LasFS SDK 到本地的 /tmp 目录:/tmp/las-fs-tunnel-sdk-shaded-0.0.3.1-RELEASE.jar wget -P /tmp/ https://artifact.bytedance.com/repository/releases/com/volcengine/las/las-fs-tunnel-sdk-shaded/0.0.3.1-RELEASE/las-fs-tunnel-sdk-shaded-0.0.3.1-RELEASE.jar
下述模版可将 HDFS 文件上传至 LASFS 的对应填入路径中。
hadoop distcp # Yarn 队列名 -Dmapreduce.job.queuename=${QUEUE} \ # 必须是主账号 AK -Dfs.lasfs.access.key=${ACCESS_KEY} \ # 必须是主账号 SK -Dfs.lasfs.secret.key=${SECRET_KEY} \ -Dfs.lasfs.impl=com.volcengine.las.fs.LasFileSystem \ -Dfs.lasfs.service.region=cn-beijing \ -Dfs.lasfs.endpoint=las-fs-tunnel-cn-beijing.volces.com:80 \ -Dio.file.buffer.size=8388608 \ # 下载到本地的L asFS SDK 路径,比如 /tmp/las-fs-tunnel-sdk-shaded-0.0.3.1-RELEASE.jar -libjars ${LAS_FS_JAR_PATH} \ -skipcrccheck -update -delete -pb \ # map 并发数量 -m 5 \ # HDFS 源路径,比如:hdfs://namemode_address/hive/warehouse/ods/table1 ${HDFS_SOURCE} \ # LasFS 目标路径,比如放到 lasfs:/public/ 这个目录下,比如:lasfs:/public/hive/warehouse/ods/table1 ${LASFS_TARGET}
任务提交后,会在 YARN 的界面生成一个 MapReduce 任务 UI,观察进度到结束。
示例如下 (需要在原有 Hadoop/CDH 集群运行)
hadoop distcp \ -Dmapreduce.job.queuename=root.default \ -Dfs.lasfs.access.key=aksdsfsfds \ -Dfs.lasfs.secret.key=sdsfsfdsfsdfs== \ -Dfs.lasfs.impl=com.volcengine.las.fs.LasFileSystem \ -Dfs.lasfs.service.region=cn-beijing \ -Dfs.lasfs.endpoint=las-fs-tunnel-cn-beijing.volces.com:80 \ -libjars /tmp/las-fs-tunnel-sdk-shaded-0.0.3.1-RELEASE.jar \ -skipcrccheck -update -delete -pb \ -m 2 \ hdfs://minibase/hive/warehouse/ods/table1 \ lasfs:/public/hive/warehouse/ods/table1
执行成功后,可以看到如下输出。检验当前的 YARN 任务是否完成,查看数据:
迁移后的数据可以直接在 LASFS 对应的目录查看,然后可以在此基础上建立外表,或进行导入内表等操作。
如果需要查询 parquet 数据等,可以创建 LASFS parquet 外表,查询界面使用可以参考
https://www.volcengine.com/docs/6492/111831。
建立外表并查询的语法如下:
CREATE EXTERNAL TABLE ods.table1 ( `id` bigint, `name` string ) location 'lasfs:/public/hive/warehouse/ods/table1' stored as parquet;
随后可以使用下面查询:
select * from ods.table1