华为云用户手册

  • 前提条件 DBeaver已正常安装。DBeaver软件下载链接:https://dbeaver.io/files/7.2.0/ 。 已在集群中创建“人机”用户,如hetu_user,可参考创建HetuEngine用户。启用Ranger鉴权的集群需根据业务需求为该hetu_user添加Ranger权限,可参考添加HetuEngine的Ranger访问权限策略。 已创建计算实例并运行正常,可参考创建HetuEngine计算实例。
  • 创建对接ECS/BMS云服务委托 登录华为云管理控制台,选择“统一身份认证服务”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,设置相关参数,单击“下一步”。 参数选择如下: 委托名称:例如“lakeformation_test” 委托类型:选择“云服务” 云服务:选择“ECS BMS” 持续时间:根据实际情况自定义 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:自定义 策略配置方式:选择JSON视图 策略内容:配置如下信息 { "Version": "1.1", "Statement": [ { "Action": [ "iam:agencies:assume" ], "Resource": { "uri": [ "/iam/agencies/授予给自身账号具备访问LakeFormation权限的委托ID", "/iam/agencies/授予给自身账号具备访问OBS权限的委托ID" ] }, "Effect": "Allow" } ] } 授予给自身账号具备访问LakeFormation权限的委托ID:可参考6获取。 授予给自身账号具备访问OBS权限的委托ID:可参考6获取。 选择新创建的自定义委托名称,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托完成。
  • 创建LakeFormation数据连接 创建LakeFormation数据连接的功能,需要联系技术支持申请开通白名单。 登录MRS控制台,在导航栏选择“数据连接”。 单击“新建数据连接 ”。 参考表1配置相关参数,单击“确定”完成创建。 表1 配置LakeFormation数据连接 参数 说明 类型 选择“LakeFormation”,当前仅MRS 3.3.0-LTS及之后版本支持连接该类型。 名称 数据连接的名称。 LakeFormation实例 选择LakeFormation实例名称。 该实例需要先在LakeFormation实例创建后在此处引用,具体请参考创建LakeFormation实例。单击“查看LakeFormation实例”查看已创建的实例。 虚拟私有云 需要与待对接的MRS集群在同一虚拟私有云。 子网 选择子网名称。 VPC终端节点 选择VPC终端节点,或单击“创建对应LakeFormation实例的VPC终端节点”进行创建。 选择VPC终端节点后,产生的费用将由VPCEP服务收取。 LakeFormation委托 选择“现有委托”,并选择创建对接LakeFormation权限的委托创建的委托,例如“visit_lakeformation_agency”。 图2 新建LakeFormation数据连接 创建完成后,在“数据连接”页面记录已创建数据连接的ID。
  • 创建对接OBS权限的委托 登录华为云管理控制台,选择“统一身份认证服务”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,选择相关参数,单击“下一步”。 参数选择如下: 委托名称:例如“visit_obs_agency” 委托类型:选择“普通账号” 委托的账号:输入被委托的华为云账号名称 持续时间:根据实际情况自定义 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:例如“dev_visit_obs” 策略配置方式:JSON视图 策略内容:填入如下信息。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:GetBucketLocation", "obs:bucket:ListBucketMultipartUploads", "obs:object:GetObject", "obs:object:ModifyObjectMetaData", "obs:object:DeleteObject", "obs:object:ListMultipartUploadParts", "obs:bucket:HeadBucket", "obs:object:AbortMultipartUpload", "obs:bucket:ListBucket", "obs:object:PutObject" ], "Resource": [ "OBS:*:*:bucket:*", "OBS:*:*:object:*" ] } ] } Resource参数中“bucket”的参数值表示OBS桶名称,“object”的参数值表示OBS对象名称,可根据需要指定名称。配置为“*”表示对所有OBS桶或OBS对象适用此策略。 其他参数按照实际需求进行配置。 勾选新建的策略名称例如“dev_visit_obs”,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托。 在“委托”页面,将鼠标移动到新创建的委托名称上,获取具备访问OBS权限的委托ID。
  • 创建对接LakeFormation权限的委托 登录华为云管理控制台,选择“统一身份认证服务 IAM”。 在左侧导航栏选择“委托”,单击右上角的“创建委托”,配置相关参数,单击“下一步”。 参数配置如下: 委托名称:例如“visit_lakeformation_agency” 委托类型:选择“普通账号” 委托的账号:输入被委托的华为云账号名称 持续时间:根据实际情况自定义 图1 创建委托 在选择策略界面右上角单击“新建策略”,配置如下信息,单击“下一步”。 策略名称:例如“dev_visit_lakeformation” 策略配置方式:“可视化视图”或“JSON视图” 策略内容: 策略中必须包含“lakeformation:policy:export”和“lakeformation:role:describe”。其他参数按照实际需求进行配置。 可视化视图:“云服务”选择“湖仓构建”;“操作”中选择所需操作权限。其他参数按照实际需求进行配置。 JSON视图,例如配置策略内容如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:table:create", "lakeformation:database:alter", "lakeformation:table:alter", "lakeformation:database:drop", "lakeformation:database:create", "lakeformation:role:describe", "lakeformation:policy:create", "lakeformation:policy:export", "lakeformation:function:alter", "lakeformation:function:describe", "lakeformation:table:drop", "lakeformation:catalog:describe", "lakeformation:table:describe", "lakeformation:function:drop", "lakeformation:database:describe", "lakeformation:function:create", "lakeformation:transaction:operate" ] } ] } 勾选新建的策略名称例如“dev_visit_lakeformation”,单击“下一步”。 “设置最小授权范围”根据实际情况选择授权的资源范围,单击“确定”,创建委托。 在“委托”页面,将鼠标移动到新创建的委托名称上,获取具备访问LakeFormation权限的委托ID。
  • 创建Hive表 下载并安装集群全量客户端,例如在主Master节点上安装,客户端安装目录为“/opt/client”,相关操作可参考安装客户端。 也可直接使用Master节点中自带的集群客户端,安装目录为“/opt/Bigdata/client”。 为主Master节点绑定一个弹性IP并在安全组中放通22端口,然后使用root用户登录主Master节点,进入客户端所在目录并加载变量。 cd /opt/client source bigdata_env 执行beeline -n 'hdfs'命令进入Hive Beeline命令行界面。 执行以下命令创建一个与原始数据字段匹配的Hive表: create table bookscore (userid int,bookid int,score int,remarks string) row format delimited fields terminated by ','stored as textfile; 查看表是否创建成功: show tables; +------------+ | tab_name | +------------+ | bookscore | +------------+
  • 将原始数据导入Hive并进行分析 继续在Hive Beeline命令行中执行以下命令,将已导入HDFS的原始数据导入Hive表中。 load data inpath '/tmp/test/book_score.txt' into table bookscore; 数据导入完成后,执行如下命令,查看Hive表内容。 select * from bookscore; +-------------------+-------------------+------------------+--------------------+ | bookscore.userid | bookscore.bookid | bookscore.score | bookscore.remarks | +-------------------+-------------------+------------------+--------------------+ | 202001 | 242 | 3 | Good! | | 202002 | 302 | 3 | Test. | | 202003 | 377 | 1 | Bad! | | 220204 | 51 | 2 | Bad! | | 202005 | 346 | 1 | aaa | | 202006 | 474 | 4 | None | | 202007 | 265 | 2 | Bad! | | 202008 | 465 | 5 | Good! | | 202009 | 451 | 3 | Bad! | | 202010 | 86 | 3 | Bad! | | 202011 | 257 | 2 | Bad! | | 202012 | 465 | 4 | Good! | | 202013 | 465 | 4 | Good! | | 202014 | 465 | 4 | Good! | | 202015 | 302 | 5 | Good! | | 202016 | 302 | 3 | Good! | ... 执行以下命令统计表行数: select count(*) from bookscore; +------+ | _c0 | +------+ | 32 | +------+ 执行以下命令,等待MapReduce任务完成后,筛选原始数据中累计评分最高的图书top3。 select bookid,sum(score) as summarize from bookscore group by bookid order by summarize desc limit 3; 例如最终显示内容如下: ... INFO : 2021-10-14 19:53:42,427 Stage-2 map = 0%, reduce = 0% INFO : 2021-10-14 19:53:49,572 Stage-2 map = 100%, reduce = 0%, Cumulative CPU 2.15 sec INFO : 2021-10-14 19:53:56,713 Stage-2 map = 100%, reduce = 100%, Cumulative CPU 4.19 sec INFO : MapReduce Total cumulative CPU time: 4 seconds 190 msec INFO : Ended Job = job_1634197207682_0025 INFO : MapReduce Jobs Launched: INFO : Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.24 sec HDFS Read: 7872 HDFS Write: 322 SUCCESS INFO : Stage-Stage-2: Map: 1 Reduce: 1 Cumulative CPU: 4.19 sec HDFS Read: 5965 HDFS Write: 143 SUCCESS INFO : Total MapReduce CPU Time Spent: 8 seconds 430 msec INFO : Completed executing command(queryId=omm_20211014195310_cf669633-5b58-4bd5-9837-73286ea83409); Time taken: 47.388 seconds INFO : OK INFO : Concurrency mode is disabled, not creating a lock manager +---------+------------+ | bookid | summarize | +---------+------------+ | 465 | 170 | | 302 | 110 | | 474 | 88 | +---------+------------+ 3 rows selected (47.469 seconds) 以上内容表示,ID为456、302、474的3本书籍,为累计评分最高的Top3图书。
  • 场景描述 Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。 Hive主要特点如下: 海量结构化数据分析汇总。 将复杂的MapReduce编写任务简化为SQL语句。 灵活的数据存储格式,支持JSON、CSV、TEXTFILE、RCFILE、SEQUENCEFILE、ORC等存储格式。 本实践以某图书网站后台用户的点评数据为原始数据,导入Hive表后通过SQL命令筛选出最受欢迎的图书。
  • 创建MRS离线查询集群 进入购买MRS集群页面。 选择“快速购买”,填写软件配置参数。 表1 软件配置(以下参数仅供参考,可根据实际情况调整) 参数项 取值 区域 华北-北京四 计费模式 按需计费 集群名称 MRS_demo 版本类型 普通版 集群版本 MRS 3.1.0 组件选择 Hadoop分析集群 可用区 可用区1 虚拟私有云 vpc-01 子网 subnet-01 企业项目 default Kerberos认证 不开启 用户名 admin/root 密码 设置密码登录集群管理页面及ECS节点用户的密码,例如:Test!@12345。 确认密码 再次输入设置用户密码 通信安全授权 勾选“确认授权” 图1 购买Hadoop分析集群 单击“立即购买”,等待MRS集群创建成功。 图2 集群购买成功
  • 查看作业执行结果 进入“作业管理”页面,查看作业执行状态。 图9 作业执行状态 等待1~2分钟,登录OBS控制台,进入obs-demo-analysis-hwt4文件系统的output目录中,查看执行结果,在生成的csv文件所在行的“操作”列单击“下载”按钮将该文件下载到本地。 图10 下载作业执行结果 在本地将下载后的csv文件使用Excel文本打开,按照样例程序中定义的字段为每列数据进行分类,得到如下图所示作业执行结果。 图11 执行结果
  • 创建作业 在MRS控制台左侧导航栏选择“现有集群”,单击名称为“mrs_demo”的集群。 在集群信息页面选择“作业管理”页签,单击“添加”,进入添加作业页面。 图7 添加作业 按图8完成作业参数配置。 表4 配置作业信息 参数名称 配置方法 作业类型 选择“SparkSubmit”。 作业名称 输入“driver_behavior_task”。 执行程序路径 单击“OBS”,选择准备Spark2x样例程序和样例数据中上传的名称为driver_behavior.jar的jar包。 运行程序参数 参数选择“--class”,值输入“com.huawei.bigdata.spark.examples.DriverBehavior”。 执行程序参数 输入“AK SK 1 输入路径 输出路径”。 AK/SK请参考说明方式获取。 1为固定输入,用于指定作业执行时调用的程序函数。 输入路径可通过单击“OBS”进行选择输入路径。 输出路径请手动输入一个不存在的目录,例如obs://obs-demo-analysis-hwt4/output/。 说明: AK/SK,请通过如下方式获取。 登录华为云管理控制台。 单击右上角的用户名,然后选择“我的凭证”。 系统跳转至“我的凭证”页面,单击“访问密钥”。 单击“新增访问密钥”申请新密钥,按照提示输入密码与验证码之后,浏览器自动下载一个“credentials.csv”文件,文件为csv格式,以英文逗号分隔,中间的为AK,最后一个为SK。 服务配置参数 保持默认不配置。 图8 添加作业 单击“确定”,开始提交作业,执行程序。
  • 创建集群 进入购买MRS集群页面。 选择“自定义购买”。 参见表1配置集群软件信息。 表1 软件配置 参数名称 配置方式 区域 选择“华北-北京四” 说明: 本指导以“华北-北京四”为例进行介绍,如果您需要选择其他区域进行操作,请确保所有操作均在同一区域进行。 计费模式 按需计费 集群名称 mrs_demo 集群类型 选择“分析集群”,用来做离线数据分析 版本类型 选择“普通版” 集群版本 选择“MRS 3.1.0” 说明: 本实践仅适用于MRS 3.1.0版本。 组件选择 勾选所有组件 元数据 选择“本地元数据” 图1 自定义购买-软件配置 单击“下一步”配置硬件信息。 参见表2配置集群硬件信息。 表2 硬件配置 参数名称 配置方式 可用区 可用区2。 企业项目 选择“default”。 虚拟私有云 选择需要创建集群的VPC,单击“查看虚拟私有云”进入VPC服务查看已创建的VPC名称和ID。如果没有VPC,需要创建一个新的VPC。 子网 选择需要创建集群的子网,可进入VPC服务查看VPC下已创建的子网名称和ID。如果VPC下未创建子网,请单击“创建子网”进行创建。 安全组 选择“自动创建”。 弹性公网IP 选择“暂不绑定”。 集群节点 保持默认值。 图2 自定义购买-硬件配置 单击“下一步”,高级配置页签参考表3配置以下信息,其他选项保持默认值。 表3 高级配置 参数名称 配置方式 Kerberos认证 关闭Kerberos认证。 用户名 Manager管理员用户,目前默认为admin用户。 密码 配置Manager管理员用户的密码。 确认密码 再次输入Manager管理员用户的密码。 登录方式 选择“密码”。 用户名 用于登录弹性云服务器的用户,目前默认为root用户。 密码 配置登录ECS的用户密码。 确认密码 再次输入登录ECS的用户密码。 图3 自定义购买-高级配置 单击“下一步”,在“确认配置”页面检查配置集群信息,如需调整配置,可单击,跳转到对应页签后重新设置参数。 勾选通信安全授权后,单击“立即购买”,进入任务提交成功页面。 单击“返回集群列表”,可以查看到集群创建的状态。 集群创建需要时间,所创集群的初始状态为“启动中”,创建成功后状态更新为“运行中”,请您耐心等待。
  • 约束说明 MRS对接LakeFormation前,需要注意以下约束限制: MRS集群和LakeFormation实例必须同在一个云账户下且属于同一个Region。 LakeFormation侧创建的接入客户端所在虚拟私有云,必须与MRS集群在同一虚拟私有云下。 MRS集群仅支持对接LakeFormation实例中名称为hive的Catalog。 MRS存量集群需要先完成元数据库和权限策略向LakeFormation实例上迁移,再配置对接。 如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。 MRS对接LakeFormation后,MRS组件功能约束限制: Hive暂不支持临时表功能。 Hive暂不支持跨集群的列加密表功能。 Hive WebHCat暂不支持对接LakeFormation。 Hive创建内表时如果表目录不为空,则禁止创建表。 Hudi表创建前,需要先在LakeFormation上添加Hudi表目录的路径授权,赋予OBS读写权限。 Hudi表不支持在LakeFormation管理面编辑表的字段,只能通过Hudi客户端增删改表的字段。 Flink读写Hudi场景下同步Hive表,仅支持使用hive_sync.mode=jdbc,不支持hms方式。 Spark使用小权限用户登录客户端创建数据库时,如果用户没有default库的OBS路径权限,将提示缺少权限,实际创建数据库成功。 MRS对接LakeFormation后,权限策略约束限制: 通过LakeFormation授权仅支持将LakeFormation角色作为授权主体,不支持IAM用户或IAM用户组作为授权主体。 PolicySync进程不会修改集群内RangerAdmin Hive模块的默认策略,默认策略仍然生效。 PolicySync进程启动后,会与LakeFormation实例的权限进行比对,删除LakeFormation上不存在的非默认策略,请先完成权限策略迁移到LakeFormation实例上。 RangerAdmin WebUI界面的Hive模块,禁止执行添加、删除权限非默认策略的操作,统一在LakeFormation实例的数据权限界面进行授权操作。 MRS集群取消对接LakeFormation后,RangerAdmin的非默认策略不会清理,需要人工进行清理。 Hive暂不支持Grant授权的SQL语句,需统一在LakeFormation实例的数据权限界面进行授权操作。 MRS暂不支持LakeFormation行过滤权限能力。
  • 不同Region 当源集群与目标集群处于不同Region时,用Distcp工具将源集群数据拷贝到OBS,借助OBS跨区域复制功能(请参见跨区域复制)将数据复制到对应目的集群所在Region的OBS,然后通过Distcp工具将OBS数据拷贝到目的集群的HDFS上。由于执行Distcp无法为OBS上的文件设置权限、属主/组等信息,因此当前场景在进行数据导出时也需要将HDFS的元数据信息进行导出并拷贝,以防HDFS文件属性信息丢失。
  • 线下集群向云迁移 线下集群可以通过如下两种方式将数据迁移至云: 云专线(DC) 为源集群与目标集群之间建立云专线,打通线下集群出口网关与线上VPC之间的网络,然后参考同Region执行Distcp进行拷贝。 数据快递服务(DES) 对于TB或PB级数据上云的场景,华为云提供数据快递服务 DES。将线下集群数据及已导出的元数据拷贝到DES盒子,快递服务将数据递送到华为云机房,然后通过云数据迁移 CDM将DES盒子数据拷贝到HDFS。
  • 创建CDM集群并绑定EIP 如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为DataArts Studio服务CDM组件使用,参考创建集群创建CDM集群。 关键配置如下: CDM集群的规格,按待迁移的数据量选择,一般选择“cdm.medium”即可,满足大部分迁移场景。 CDM集群所在VPC、子网、安全组,选择与MRS集群所在的网络一致。 CDM集群创建完成后,选择集群操作列的“绑定弹性IP”,CDM通过EIP访问MRS HDFS。 图1 集群列表 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 创建MRS离线查询集群 进入购买MRS集群页面。 选择“快速购买”,填写配置参数。 表1 表1 软件配置 参数项 取值 区域 华北-北京四 计费模式 按需计费 集群名称 MRS_hbase 版本类型 普通版 集群版本 MRS 3.1.0 组件选择 HBase查询集群 可用区 可用区1 企业项目 default 虚拟私有云 vpc-01 子网 subnet-01 Kerberos认证 开启 用户名 root/admin 密码 设置密码登录集群管理页面及ECS节点用户的密码,例如:Test!@12345。 确认密码 再次输入设置用户密码 通信安全授权 勾选“确认授权” 图1 创建HBase查询集群 单击“立即购买”,等待MRS集群创建成功。
  • 场景描述 BulkLoad方式调用MapReduce的job直接将数据输出成HBase table内部的存储格式的文件HFile,然后将生成的StoreFiles加载到集群的相应节点。这种方式无需进行flush、compact、split等过程,不占用Region资源,不会产生巨量的写入I/O,所以需要较少的CPU和网络资源。 BulkLoad适合的场景: 大量数据一次性加载到HBase。 对数据加载到HBase可靠性要求不高,不需要生成WAL文件。 使用put加载大量数据到HBase速度变慢,且查询速度变慢时。 加载到HBase新生成的单个HFile文件大小接近HDFS block大小。
  • 常见问题 问题现象: 无法获取Kafka CPU与内存监控信息日志提示。 java.io.IOException cannot be cast to javax.management.remote.JMXConnector 问题原因: jmx地址配置错误。默认jmx地址为: cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi 解决办法: MRS内Kafka jmx名称为kafka,需要设置为: cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/kafka
  • 场景介绍 本章节适用于将线下IDC机房或者公有云Hadoop集群中的数据(支持数据量在几十TB级别或以下的数据量级)迁移到华为云MRS服务。 本章节以通过华为云CDM服务 2.9.1.200版本进行数据迁移为例介绍。不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。 CDM服务支持迁移的数据源可参考支持的数据源,数据源为Apache HDFS时,建议使用的版本为2.8.X、3.1.X,请执行搬迁前务必确认是否支持搬迁。 图1 Hadoop数据迁移示意
  • 场景介绍 本章节适用于将线下IDC机房或者公有云HBase集群中的数据(支持数据量在几十TB级别或以下的数据量级)迁移到华为云MRS服务。 本章节以通过华为云CDM服务 2.9.1.200版本进行数据迁移为例介绍。不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。 图1 HBase数据迁移示意 HBase会把数据存储在HDFS上,主要包括HFile文件和WAL文件,由配置项“hbase.rootdir”指定在HDFS上的路径,华为云MRS集群的默认存储位置是“/hbase”文件夹下。 HBase自带的一些机制和工具命令也可以实现数据搬迁,例如通过导出Snapshots快照、Export/Import、CopyTable方式等,可以参考Apache官网相关内容。 CDM服务支持迁移的数据源可参考支持的数据源,数据源为Apache HBase时,建议使用的版本为2.1.X、1.3.X,请执行搬迁前务必确认是否支持搬迁。
  • 增量数据迁移 在业务割接前,如果源端集群上有新增数据,需要定期将新增数据搬迁到目的端集群。一般每天更新的数据量在GB级别可以使用CDM的“整库迁移”指定时间段的方式进行HBase新增数据迁移。 当前使用CDM的“整库迁移”功能时的限制:如果源HBase集群中被删除操作的数据无法同步到目的端集群上。 场景迁移的HBase连接器不能与“整库迁移”共用,因此需要单独配置“HBase”连接器。 参考全量数据迁移的1~7步骤新增两个“HBase”连接器,连接器类型根据实际集群来选择。 例如选择连接器类型时分别为源端集群和目的端集群选择“MRS HBase”和“Apache HBase”。 图6 HBase增量迁移连接 选择“作业管理”的“整库迁移”页签,单击“新建作业”。 进入作业参数配置界面,作业相关信息配置完成后单击“下一步”。 作业名称:用户自定义作业名称,例如hbase-increase。 源端作业配置:源连接名称请选择新创建的到源端集群的连接名称,并展开高级属性配置迁移数据的时间段。 目的端作业配置:目的连接名称请选择新创建的到目的端集群的连接名称,其他不填写。 图7 HBase增量迁移作业配置 选择要迁移的数据表, 单击“下一步”,单击“保存”。 选择“作业管理”的“整库迁移”页签,在待运行作业的“操作”列单击“运行”,即可开始HBase数据增量迁移。
  • 场景介绍 本章节适用于将线下IDC机房或者公有云Hive集群中的数据(支持数据量在几十TB级别或以下的数据量级)迁移到华为云MRS服务。 Hive数据迁移分两部分内容: Hive的元数据信息,存储在MySQL等数据库中。MRS Hive集群的元数据会默认存储到MRS DBService组件,也可以选择RDS(MySQL)作为外置元数据库。 Hive的业务数据,存储在HDFS文件系统或OBS对象存储中。 使用华为云CDM服务“场景迁移功能”可以一键式便捷地完成Hive数据的迁移。 本章节以通过华为云CDM服务 2.9.1.200版本进行数据迁移为例介绍。不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。 CDM服务支持迁移的数据源可参考支持的数据源,数据源为Apache Hive时,不支持2.x版本,建议使用的版本为1.2.X、3.1.X,请执行搬迁前务必确认是否支持搬迁。 图1 Hive数据迁移示意
  • 操作步骤 登录CDM管理控制台。 创建CDM集群,该CDM集群的安全组、虚拟私有云、子网需要和迁移目的端集群保持一致,保证CDM集群和MRS集群之间网络互通。 在“集群管理”页面单击待操作集群对应“操作”列的“作业管理”。 在“连接管理”页签,单击“新建连接”。 参考CDM服务的新建连接页面,分别添加到迁移源端集群和迁移目的端集群的连接。 连接类型根据实际集群来选择,如果是MRS集群,连接器类型可以选择“MRS Hive”,如果是自建集群可以选择“Apache Hive”。 图2 创建Hive连接 在迁移目的端集群中创建数据迁移后的存储数据库。 选择“作业管理”的“表/文件迁移”页签,单击“新建作业”。 进入作业参数配置界面,配置作业名称,并分别为源连接和目的连接选择5中创建的对应数据连接并选择要迁移的数据库和表名,单击“下一步”。 图3 Hive作业配置 配置源字段和目的字段的映射关系, 并单击“下一步”。 进入任务配置页面,不做修改,直接单击“保存”。 选择“作业管理”的“表/文件迁移”页签,在待运行作业的“操作”列单击“运行”,即可开始Hive数据迁移。 迁移完成后,可以在目的端集群和源端集群的Hive Beeline命令行中,通过同样的查询语句,对比查询结果进行验证。 例如在目的端集群和源端集群上通过查询catalog_sales表的记录数来确认数据条数是否一致。 select count(*) from catalog_sales; 图4 源端集群数据记录 图5 目的端集群数据记录 (可选)如果源端集群中有新增数据需要定期将新增数据迁移至目的端集群,则根据数据新增方式进行不同方式的迁移。配置定期任务增量迁移数据,直到所有业务迁移至目的端集群。 Hive表数据修改、未新增删除表、未修改已有表的数据结构:此时Hive表已经创建好,仅需迁移Hive存储在HDFS或OBS上的文件即可,请参考使用CDM服务迁移Hadoop数据至MRS集群页面新增数据迁移方式进行数据迁移。 Hive表有新增:请选择“作业管理”的“表/文件迁移”页签,在Hive迁移作业的“操作”列单击“编辑”,选择新增的数据表进行数据迁移。 Hive表有删除或已有表的数据结构有修改:请在目的端集群中手动删除对应表或手动更新变更的表结构。
  • 数据迁移网络方案说明 进行大数据迁移时,需要保证源端集群和目的端集群之间的网络互通,例如使用hadoop distcp命令跨集群复制数据时需要所有DataNode节点网络互通。根据不同的迁移场景需要使用不通的方式先打通两套集群之间网络连接。 客户线下数据中心迁移数据到华为云MRS集群,通过云专线服务为用户搭建本地数据中心与云上VPC之间的专属连接通道。可以使用华为云的云专线服务或使用第三方的云专线服务来连通华为云网络。 图1 线下数据中心迁移 客户在华为云上自建大数据集群(或老版本的MRS集群)需要迁移到华为云MRS集群,且在同一个Region区域和VPC子网,可以使自建集群和MRS集群使用相同安全组、VPC、子网网络,从而保证网络连通。 图2 线上同Region同VPC迁移 客户在华为云上自建大数据集群(或老版本的MRS集群)需要迁移到华为云MRS集群,且在同一个Region区域,但是使用不同VPC子网。需要使用VPC对等连接方式配置网络连通。 图3 线上同Region不同VPC迁移 客户在华为云上自建大数据集群(或老版本的MRS集群)需要迁移到华为云MRS集权,但在不同Region区域,可以通过使用云连接构建跨区域VPC的网络连接。 图4 线上不同Region迁移
  • 数据迁移常用端口 表1 MRS数据迁移常用组件 组件 配置参数 默认端口 端口说明 HDFS dfs.namenode.rpc.port 9820 Hadoop 2.x和Hadoop 3.x版本。 迁移过程中,需要访问NameNode获取文件列表。 dfs.datanode.port 25009 迁移过程中,需要访问DataNode读取具体文件数据。 ZooKeeper clientPort 2181 ZooKeeper客户端连接ZooKeeper服务器。 Kerberos kdc_ports 21732 Kerberos服务认证,非Kerberos集群不涉及。 Hive hive.metastore.port 9083 Hive 2.x和Hive3.x版本。 MetaStore提供Thrift服务的端口。迁移过程中,需要访问该端口查询表元数据信息。 HBase hbase.master.port 16000 HBase1.x和HBase 2.x版本。 HMaster RPC端口。该端口用于HBase客户端连接到HMaster。 hbase.regionserver.port 16020 RS (RegoinServer) RPC端口。该端口用于HBase客户端连接到RegionServer。 Manager N/A 28443 FusionInsight/MRS Manager页面端口。 CDM迁移时候访问该地址获取集群配置。 N/A 20009 FusionInsight/MRS Manager CAS协议端口,用于登录认证。
  • 操作步骤 准备数据,在GaussDB(DWS)集群中创建数据库和表: 登录GaussDB(DWS)管理控制台,单击DWS集群“操作”列的“登录”。 登录现有GaussDB(DWS)集群的默认数据库gaussdb,执行以下命令,创建数据库“dws_test”。 CREATE DATABASE dws_test; 连接到创建的新数据库,执行以下命令,创建表“dws_order”。 CREATE SCHEMA dws_data; CREATE TABLE dws_data.dws_order ( order_id VARCHAR, order_channel VARCHAR, order_time VARCHAR, cust_code VARCHAR, pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ); 执行以下命令插入数据到表“dws_order”中。 INSERT INTO dws_data.dws_order VALUES ('202306270001', 'webShop', '2023-06-27 10:00:00', 'CUST1', 1000, 1000); INSERT INTO dws_data.dws_order VALUES ('202306270002', 'webShop', '2023-06-27 11:00:00', 'CUST2', 5000, 5000); 查询表数据,验证数据是否插入。 SELECT * FROM dws_data.dws_order; 下载GaussDB(DWS)数据库JDBC驱动并上传到MRS集群。 登录GaussDB(DWS)管理控制台,单击左侧的“连接管理”,下载JDBC驱动,如下图所示: 解压,获取“gsjdbc200.jar”文件,并上传到MRS集群主Master节点,例如上传到“/tmp”目录下。 使用root用户登录MRS集群主Master节点,执行如下命令: cd {客户端安装目录} source bigdata_env kinit sparkuser (首次认证需要修改密码,未开启Kerberos认证,则无需执行kinit命令。) hdfs dfs -put /tmp/gsjdbc200.jar /tmp 在MRS Spark中创建数据源表,并访问DWS表: 登录Spark客户端节点,执行如下命令: cd 客户端安装目录 source ./bigdata_env kinit sparkuser spark-sql --master yarn 执行如下命令,添加驱动程序jar: add jar hdfs://hacluster/tmp/gsjdbc200.jar; 执行如下命令,在Spark中创建数据源表,访问DWS数据: CREATE TABLE IF NOT EXISTS spk_dws_order USING JDBC OPTIONS ( 'url'='jdbc:gaussdb://192.168.0.228:8000/dws_test', 'driver'='com.huawei.gauss200.jdbc.Driver', 'dbtable'='dws_data.dws_order', 'user'='dbadmin', 'password'='xxx'); 查询Spark表,验证显示的数据是否与DWS数据相同: SELECT * FROM spk_dws_order; 可以验证返回的数据与1中所示的数据相同。
  • 样例代码路径说明 表1 样例代码路径说明 样例代码项目 样例名称 样例语言 SparkJavaExample Spark Core程序 Java SparkScalaExample Spark Core程序 Scala SparkPyhtonExample Spark Core程序 Python SparkSQLJavaExample Spark SQL程序 Java SparkSQLScalaExample Spark SQL程序 Scala SparkSQLPythonExample Spark SQL程序 Python SparkThriftServerJavaExample 通过JDBC访问Spark SQL的程序 Java SparkThriftServerScalaExample 通过JDBC访问Spark SQL的程序 Scala SparkOnHbaseJavaExample-AvroSource Spark on HBase 程序-操作Avro格式数据 Java SparkOnHbaseScalaExample-AvroSource Spark on HBase 程序-操作Avro格式数据 Scala SparkOnHbasePythonExample-AvroSource Spark on HBase 程序-操作Avro格式数据 Python SparkOnHbaseJavaExample-HbaseSource Spark on HBase 程序-操作HBase数据源 Java SparkOnHbaseScalaExample-HbaseSource Spark on HBase 程序-操作HBase数据源 Scala SparkOnHbasePythonExample-HbaseSource Spark on HBase 程序-操作HBase数据源 Python SparkOnHbaseJavaExample-JavaHBaseBulkPutExample Spark on HBase 程序-BulkPut接口使用 Java SparkOnHbaseScalaExample-HBaseBulkPutExample Spark on HBase 程序-BulkPut接口使用 Scala SparkOnHbasePythonExample-HBaseBulkPutExample Spark on HBase 程序-BulkPut接口使用 Python SparkOnHbaseJavaExample-JavaHBaseBulkGetExample Spark on HBase 程序-BulkGet接口使用 Java SparkOnHbaseScalaExample-HBaseBulkGetExample Spark on HBase 程序-BulkGet接口使用 Scala SparkOnHbasePythonExample-HBaseBulkGetExample Spark on HBase 程序-BulkGet接口使用 Python SparkOnHbaseJavaExample-JavaHBaseBulkDeleteExample Spark on HBase 程序-BulkDelete接口使用 Java SparkOnHbaseScalaExample-HBaseBulkDeleteExample Spark on HBase 程序-BulkDelete接口使用 Scala SparkOnHbasePythonExample-HBaseBulkDeleteExample Spark on HBase 程序-BulkDelete接口使用 Python SparkOnHbaseJavaExample-JavaHBaseBulkLoadExample Spark on HBase 程序-BulkLoad接口使用 Java SparkOnHbaseScalaExample-HBaseBulkLoadExample Spark on HBase 程序-BulkLoad接口使用 Scala SparkOnHbasePythonExample-HBaseBulkLoadExample Spark on HBase 程序-BulkLoad接口使用 Python SparkOnHbaseJavaExample-JavaHBaseForEachPartitionExample Spark on HBase 程序-foreachPartition接口使用 Java SparkOnHbaseScalaExample-HBaseForEachPartitionExample Spark on HBase 程序-foreachPartition接口使用 Scala SparkOnHbasePythonExample-HBaseForEachPartitionExample Spark on HBase 程序-foreachPartition接口使用 Python SparkOnHbaseJavaExample-JavaHBaseDistributedScanExample Spark on HBase 程序-分布式Scan HBase表 Java SparkOnHbaseScalaExample-HBaseDistributedScanExample Spark on HBase 程序-分布式Scan HBase表 Scala SparkOnHbasePythonExample-HBaseDistributedScanExample Spark on HBase 程序-分布式Scan HBase表 Python SparkOnHbaseJavaExample-JavaHBaseMapPartitionExample Spark on HBase 程序-mapPartitions接口使用 Java SparkOnHbaseScalaExample-HBaseMapPartitionExample Spark on HBase 程序-mapPartitions接口使用 Scala SparkOnHbasePythonExample-HBaseMapPartitionExample Spark on HBase 程序-mapPartitions接口使用 Python SparkOnHbaseJavaExample-JavaHBaseStreamingBulkPutExample Spark on HBase 程序-SparkStreaming批量写入HBase表 Java SparkOnHbaseScalaExample-HBaseStreamingBulkPutExample Spark on HBase 程序-SparkStreaming批量写入HBase表 Scala SparkOnHbasePythonExample-HBaseStreamingBulkPutExample Spark on HBase 程序-SparkStreaming批量写入HBase表 Python SparkHbasetoHbaseJavaExample 从HBase读取数据再写入HBase Java SparkHbasetoHbaseScalaExample 从HBase读取数据再写入HBase Scala SparkHbasetoHbasePythonExample 从HBase读取数据再写入HBase Python SparkHivetoHbaseJavaExample 从Hive读取数据再写入HBase Java SparkHivetoHbaseScalaExample 从Hive读取数据再写入HBase Scala SparkHivetoHbasePythonExample 从Hive读取数据再写入HBase Python SparkStreamingKafka010JavaExample Spark Streaming对接Kafka0-10程序 Java SparkStreamingKafka010ScalaExample Spark Streaming对接Kafka0-10程序 Scala SparkStructuredStreamingJavaExample Structured Streaming程序 Java SparkStructuredStreamingScalaExample Structured Streaming程序 Scala SparkStructuredStreamingPythonExample Structured Streaming程序 Python StructuredStreamingADScalaExample Structured Streaming流流Join Scala StructuredStreamingStateScalaExample Structured Streaming 状态操作 Scala SparkOnHudiJavaExample 使用Spark执行Hudi基本操作 Java SparkOnHudiPythonExample 使用Spark执行Hudi基本操作 Python SparkOnHudiScalaExample 使用Spark执行Hudi基本操作 Scala
  • 开发流程 工作流配置文件“workflow.xml”(“coordinator.xml”是对工作流进行调度,“bundle.xml”是对一组coordinator进行管理)与“job.properties”。 如果有实现代码,需要开发对应的jar包,例如Java Action;如果是Hive,则需要开发SQL文件。 上传配置文件与jar包(包括依赖的jar包)到HDFS,上传的路径取决于workflow.xml中的oozie.wf.application.path配置的路径。 提供三种方式对工作流进行操作,详情请参见Oozie应用开发常见问题。 Shell命令 Java API Hue Oozie客户端提供了比较完整的examples示例供用户参考,包括各种类型的Action,以及Coordinator以及Bundle的使用。以客户端安装目录为“/opt/client”为例,examples具体目录为“/opt/client/Oozie/oozie-client-*/examples”。 如下通过一个Mapreduce工作流的示例演示如何配置文件,并通过Shell命令调用。
  • 在本地Windows环境中调测HDFS程序 在开发环境中(例如IntelliJ IDEA中),分别选中以下两个工程运行程序: 选中HdfsExample.java,右键工程,选择“Run 'HdfsExample.main()'”运行应用工程。 选中ColocationExample.java,右键工程,选择“Run 'ColocationExample.main()'”运行应用工程。 在HDFS任务运行过程中禁止重启HDFS服务,否则可能会导致任务失败。 在运行Colocation工程时,HDFS的配置项fs.defaultFS不能配置为viewfs://ClusterX。
共100000条