华为云用户手册

  • 配置流水线站内 消息通知 通过服务动态的方式推送通知。流水线执行成功、执行失败、被删除以及配置被更新时,可以配置给创建人、执行人、收藏人发送服务动态。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“系统消息”下“站内消息通知”,根据需要开启/关闭通知。 在流水线首页右上角单击,会弹出“通知”侧滑框,即可查看通知消息。 图1 配置服务动态通知 配置完成后,保存流水线。
  • 配置流水线邮件消息通知 通过邮件通知的方式推送通知。流水线执行成功、执行失败、被删除以及配置被更新时,可以配置给创建人、执行人、收藏人发送邮件。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“系统消息”下“邮件通知”,根据需要开启/关闭通知。 图2 配置邮件通知 配置完成后,保存流水线。
  • 配置流水线企业微信通知 将流水线信息推送到企业微信。 访问CodeArts Pipeline首页。 在流水线列表页搜索目标流水线,单击操作列,选择“编辑”。 进入流水线“任务编排”页面,切换至“通知订阅”页面。 单击“第三方通知”下“企业微信”,根据需要填写通知信息,填写完成后即可激活通知。 图3 配置企业微信通知 表1 配置企业微信通知 操作项 说明 URL 填写企业微信机器人通知URL。 事件类型 选择要通知的事件,可选择已完成、失败、暂停、挂起、忽略五种事件类型。 通知内容 选择要通知的内容,可选择流水线名称、流水线执行描述、执行人、触发信息、项目名称、执行时间、运行状态七种通知内容。 @user_id 填写要接受通知的企业微信的user_id,多个user_id之间以逗号分隔。 配置完成后,保存流水线。
  • 监控指标中存在已拒绝的连接数是什么原因? 当监控指标中出现“已拒绝的连接数”时,请确认客户端连接数是否已经超过实例的最大连接数限制。 Redis 4.0及以上版本的实例,仅在主备、集群和读写分离实例的数据节点中支持查看“已拒绝的连接数”。 查看最大连接数:单击实例名称,进入实例详情页面,选择“配置参数”页签,查看maxclients参数的值(读写分离实例暂不支持该参数,可通过D CS 实例规格查询实例最大连接数)。 查看实际连接数:单击实例名称,进入实例详情页面,选择“性能监控”页签,找到“活跃的客户端数量”监控项查看。 如果客户端连接数已到达连接上限,可以根据需要调整maxclients参数,如果maxclients参数已经是最大可配连接数,仍不满足需求,则需要考虑增加实例分片。 父主题: 监控告警
  • 迁移实例数据 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择源Redis所在的区域。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 迁移任务需要与源Redis和目标Redis实例网络互通,请选择与Redis实例相同的VPC。 迁移任务创建后,会占用一个租户侧IP,即控制台上迁移任务对应的“迁移机IP”,如果目标Redis配置了IP白名单,需要放通迁移机IP。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。 在线迁移任务创建完成后,单击在线迁移任务右侧“操作”列的“配置”,配置在线迁移的源Redis、目标Redis等信息。 迁移方法请选择“全量迁移+增量迁移”,仅当选择“全量迁移+增量迁移”的迁移方法时,支持通过控制台交换源端与目标端实例的IP地址。如果选择“全量迁移”,需要手动切换业务连接Redis的IP地址。 表1 在线迁移方法说明 迁移类型 描述 全量迁移 该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。 全量迁移+增量迁移 该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。 增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。 当迁移方法选择“全量迁移+增量迁移”时,支持选择是否启用“带宽限制”。 启用带宽限制功能,当数据同步速度达到带宽限制时,将限制同步速度的继续增长。 选择是否“自动重连”。如开启自动重连模式,迁移过程中在遇到网络等异常情况时,会无限自动重连。 自动重连模式在无法进行增量同步时,会触发全量同步,增加带宽占用,请谨慎选择。 “源Redis实例”和“目标Redis实例”,请分别选择需要升级的Redis 3.0实例和新建的高版本Redis实例。 如果源Redis和目标Redis为密码访问模式,请分别在“源Redis实例密码”和“目标Redis实例密码”处输入实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果源Redis和目标Redis为免密访问模式,无需输入密码,直接单击“测试连接”。 在“源DB”和“目标DB”中,可以选择是否需要指定具体迁移的DB。例如源端输入5,目标端输入6时,表示迁移源Redis DB5中的数据到目标Redis的DB6。当源端不指定DB,目标端指定DB时,表示默认迁移源端的全部数据到目标端指定的DB;当目标端不指定DB时,表示默认迁移到与源端对应的DB。本次操作“源DB”和“目标DB”置空即可。 单击“下一步”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。 如果是增量迁移,会一直保持迁移中的状态。 如需手动停止迁移,请选中需要停止的迁移任务,单击“停止”。 数据迁移后,目标端与源端重复的Key会被覆盖。 如果出现迁移失败,可以单击迁移任务名称,进入迁移任务详情页面,查看“迁移日志”。
  • 前提条件 创建与Redis 3.0相同VPC和子网,相同实例类型、相同访问密码、且规格不小于原实例规格的高版本Redis实例。例如,用户需要将Redis 3.0 16GB主备实例升级到Redis 5.0版本,则需要提前创建一个不小于16GB的Redis 5.0主备实例。 创建Redis实例的操作,请参考创建DCS Redis缓存实例。 手动备份Redis 3.0源实例数据。备份数据的操作,请参考如何导出Redis实例数据?。
  • 迁移后验证 数据迁移前如果目标Redis中数据为空,迁移完成后,可以通过以下方式确认数据的完整性: 连接源Redis和目标Redis。连接Redis的方法请参考Redis-cli客户端连接Redis。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。 注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
  • 约束与限制 DCS Redis 3.0实例支持绑定弹性IP公网访问,Redis 4.0及以上版本的实例不支持直接绑定弹性IP,公网访问方式需通过ELB实现,开启Redis 4.0及以上版本实例公网访问的方式请参考开启Redis公网访问并获取公网访问地址,如果用户业务依赖公网访问,升级前请先进行评估。 通过数据迁移的方式升级Redis版本,对客户业务可能有以下影响: 数据同步完成后,需要交换源Redis与目标Redis实例的IP地址,交换IP地址时会有一分钟内只读和30秒左右的中断。 如果升级后实例与原实例密码不一致,数据同步完成后,需要切换访问Redis的密码,切换时需要停止业务。因此,建议升级前后实例密码保持一致。 建议在业务低峰期进行实例升级操作。
  • 方案概述 Redis开源社区自2019年5月19日发布Redis 3.0最后一个小版本后,一直未对Redis 3.0进行更新。华为云DCS也于2021年3月发布了停售DCS Redis 3.0的公告。 鉴于Redis 3.0版本较老,开源社区已不再对其进行更新,DCS提供的Redis 4.0/5.0/6.0/7.0高版本兼容Redis 3.0,建议客户尽快将DCS Redis 3.0升级到高版本。 DCS暂不支持直接升级实例版本,只能通过数据迁移将低版本实例中的数据迁移到高版本,从而实现Redis版本升级。本章节介绍如何通过数据迁移+交换实例IP的方式升级Redis 3.0实例到高版本。
  • 不同实例类型的副本和分片数 单机实例:单机实例只有1个节点,1个Redis进程,当Redis进程故障后,DCS为实例重新拉起一个新的Redis进程。 主备/读写分离实例:分片数为1,包含一个主节点,一个或多个备节点。当主节点出现故障时,会进行主备倒换,恢复业务。 集群实例:集群实例由多个分片组成,每个分片默认是一个双副本的主备实例。例如一个3分片,2副本的集群实例,则每个分片都有2个节点(1个主节点,1个备节点)。 实例类型 分片数 副本数 负载均衡 占用IP数 单机 单分片 单副本,不支持多副本 - 1个 主备 单分片 默认双副本,支持配置为2-10副本 企业版主备实例仅支持2副本 不支持 占用IP个数=副本数 读写分离 单分片 默认双副本,支持2-6副本 支持 1个 Proxy集群 多分片 双副本,不支持其他副本数 支持 1个 Cluster集群 多分片 默认双副本,支持配置为1-5副本 不支持 占用IP个数=副本数*分片数
  • Duplicate模型 数据既没有主键,也没有聚合需求时,可以使用Duplicate数据模型建表。Duplicate模型数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的DUPLICATE KEY,只是用来指明底层数据按照指定的列进行排序。 建Duplicate模型表语句如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `timestamp` DATETIME NOT NULL COMMENT "日志时间", `type` INT NOT NULL COMMENT "日志类型", `error_code` INT COMMENT "错误码", `error_msg` VARCHAR(1024) COMMENT "错误详细信息", `op_id` BIGINT COMMENT "负责人id", `op_time` DATETIME COMMENT "处理时间" ) DUPLICATE KEY(`timestamp`, `type`, `error_code`) DISTRIBUTED BY HASH(`type`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • 基本概念 在Doris中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column),Row即用户的一行数据,Column用于描述一行数据中不同的字段。Column可以分为Key和Value两大类,从业务角度看,Key和Value可以分别对应维度列和指标列。 Doris的数据模型主要分为以下三类: Aggregate Unique Duplicate 更多Doris数据模型介绍请参见Doris数据模型。在MySQL客户端连接Doris后创建表具体操作请参见快速使用Doris。
  • Aggregate模型 建Aggregate模型表语句示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `gender`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ); 当导入数据时,对于Key列相同的行会聚合成一行,而Value列会按照设置的AggregationType进行聚合。 AggregationType目前有以下四种聚合方式: SUM:求和,多行的Value进行累加。 REPLACE:替代,下一批数据中的Value会替换之前导入过的行中的Value。 MAX:保留最大值。 MIN:保留最小值。 表中的列按照是否设置了AggregationType,分为Key (维度列) 和Value(指标列)。例如,没有设置AggregationType的,如user_id、date、age等称为Key,而设置了AggregationType的称为Value。
  • Unique模型 读时合并 这类表没有聚合需求,只需保证主键(user_id和username)的唯一性。且Unique模型的读时合并实现完全可以用Aggregate模型中的REPLACE方式替代。建表示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `username` VARCHAR(50) NOT NULL COMMENT "用户昵称", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `phone` LARGEINT COMMENT "用户电话", `address` VARCHAR(500) COMMENT "用户地址", `register_time` DATETIME COMMENT "用户注册时间" ) UNIQUE KEY(`user_id`, `username`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • 数据模型的选择建议 因为数据模型在建表时就已经确定,且无法修改。所以,选择一个合适的数据模型非常重要。 Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,适合有固定模式的报表类查询场景,但是该模型不适用于count(*)查询。同时因为固定了Value列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语义正确性。 Unique模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。但是无法利用ROLLUP等预聚合带来的查询优势。 对于聚合查询有较高性能需求的用户,推荐使用写时合并实现。 Unique模型仅支持整行更新,如果用户既需要唯一主键约束,又需要更新部分列(例如将多张源表导入到一张Doris表的场景),则可以考虑使用Aggregate模型,同时将非主键列的聚合类型设置为REPLACE_IF_NOT_NULL。 Duplicate适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有Key列)。
  • 多流Join场景支持配置表级别的TTL时间 本章节适用于 MRS 3.3.0及以后版本。 在Flink双流Join场景下,如果Join的左表和右表其中一个表数据变化快,需要较短时间的过期时间,而另一个表数据变化较慢,需要较长时间的过期时间。目前Flink只有表级别的TTL(Time To Live:生存时间),为了保证Join的准确性,需要将表级别的TTL设置为较长时间的过期时间,此时状态后端中保存了大量的已经过期的数据,给状态后端造成了较大的压力。为了减少状态后端的压力,可以单独为左表和右表设置不同的过期时间。不支持where子句。 可通过使用Hint方式单独为左表和右表设置不同的过期时间,如左表(state.ttl.left)设置TTL为60秒,右表(state.ttl.right)设置TTL为120秒: Hint方式格式: /*+ OPTIONS('state.ttl.left'='60S', 'state.ttl.right'='120S') */ 在SQL语句中配置示例: 示例1: CREATE TABLE user_info (`user_id` VARCHAR, `user_name` VARCHAR) WITH ( 'connector' = 'kafka', 'topic' = 'user_info_001', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); CREATE table print( `user_id` VARCHAR, `user_name` VARCHAR, `score` INT ) WITH ('connector' = 'print'); CREATE TABLE user_score (user_id VARCHAR, score INT) WITH ( 'connector' = 'kafka', 'topic' = 'user_score_001', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); INSERT INTO print SELECT t.user_id, t.user_name, d.score FROM user_info as t JOIN -- 为左表和右表设置不同的TTL时间 /*+ OPTIONS('state.ttl.left'='60S', 'state.ttl.right'='120S') */ user_score as d ON t.user_id = d.user_id; 示例2 INSERT INTO print SELECT t1.user_id, t1.user_name, t3.score FROM t1 JOIN -- 为左表和右表设置不同的TTL时间 /*+ OPTIONS('state.ttl.left' = '60S', 'state.ttl.right' = '120S') */ ( select UPPER(t2.user_id) as user_id, t2.score from t2 ) as t3 ON t1.user_id = t3.user_id; 父主题: Flink企业级能力增强
  • 基于标签的数据块摆放策略样例 例如某MRS集群有六个DataNode:dn-1,dn-2,dn-3,dn-4,dn-5以及dn-6,对应的IP为10.1.120.[1-6]。有六个目录需要配置标签表达式,Block默认备份数为3。 下面给出3种DataNode标签信息在“host2labels”文件中的表示方式,其作用是一样的。 主机名正则表达式 /dn-[1456]/ = label-1,label-2 /dn-[26]/ = label-1,label-3 /dn-[3456]/ = label-1,label-4 /dn-5/ = label-5 IP地址范围表示方式 10.1.120.[1-6] = label-1 10.1.120.1 = label-2 10.1.120.2 = label-3 10.1.120.[3-6] = label-4 10.1.120.[4-6] = label-2 10.1.120.5 = label-5 10.1.120.6 = label-3 普通的主机名表达式 /dn-1/ = label-1, label-2 /dn-2/ = label-1, label-3 /dn-3/ = label-1, label-4 /dn-4/ = label-1, label-2, label-4 /dn-5/ = label-1, label-2, label-4, label-5 /dn-6/ = label-1, label-2, label-3, label-4 目录的标签表达式设置结果如下: /dir1 = label-1 /dir2 = label-1 && label-3 /dir3 = label-2 || label-4[replica=2] /dir4 = (label-2 || label-3) && label-4 /dir5 = !label-1 /sdir2.txt = label-1 && label-3[replica=3,fallback=NONE] /dir6 = label-4[replica=2],label-2 标签表达式设置方式请参考hdfs nodelabel -setLabelExpression命令。 文件的数据块存放结果如下: “/dir1”目录下文件的数据块可存放在dn-1,dn-2,dn-3,dn-4,dn-5和dn-6六个节点中的任意一个。 “/dir2”目录下文件的数据块可存放在dn-2和dn-6节点上。Block默认备份数为3,表达式只匹配了两个DataNode节点,第三个副本会在集群上剩余的节点中选择一个DataNode节点存放。 “/dir3”目录下文件的数据块可存放在dn-1,dn-3,dn-4,dn-5和dn-6中的任意三个节点上。 “/dir4”目录下文件的数据块可存放在dn-4,dn-5和dn-6。 “/dir5”目录下文件的数据块没有匹配到任何一个DataNode,会从整个集群中任意选择三个节点存放(和默认选块策略行为一致)。 “/sdir2.txt”文件的数据块,两个副本存放在dn-2和dn-6节点上,虽然还缺失一个备份节点,但由于使用了fallback=NONE参数,所以只存放两个备份。 “/dir6”目录下文件的数据块在具备label-4的节点中选择2个节点(dn-3 -- dn-6),然后在label-2中选择一个节点,如果用户指定“/dir6”下文件副本数大于3,则多出来的副本均在label-2。
  • 参数说明 表1 MemArtsCC参数说明 参数 参数说明 默认值 access_token_enable Access token认证的开关。 开启后,SDK通过worker读取缓存需要经过token校验。SDK首次向worker发送读请求时,worker会做一次Kerberos认证,生成一个密钥,保存在本地和ZooKeeper,然后用这个密钥生成一个token,返回给SDK,SDK向worker发送读请求时,会将该token传入,和密钥进行校验,校验通过才允许读取缓存。 安全集群为true,普通集群为false cache_cap_max_available_rate 每块盘的最大可用容量比率。 设置范围为0.01~1.0,间隔为0.01。本参数决定使用MemArtsCC磁盘最大容量百分比,默认值是30%,比如3TB的磁盘,MemArtsCC最大可使用的缓存空间为900GB,缓存超过900GB,MemArtsCC动态淘汰缓存。 0.3 cache_reserved_space 每块盘需要动态预留的空间。 cache_reserved_space决定磁盘预留空间,默认值为512MB,建议设置为磁盘容量的10%以上。比如3TB的磁盘,cache_reserved_space设置为300GB,cache_cap_max_available_rate设置为30%,如果磁盘空间小于300GB,尽管MemArtsCC的缓存没有达到最大可使用容量900GB,MemArtsCC也会动态淘汰缓存。 512MB auto_isolate_broken_disk 自动隔离故障磁盘开关。 true broken_disk_list 故障磁盘列表。 -
  • 约束与限制 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Spark2x的Ranger访问权限策略。 Spark2x开启或关闭Ranger鉴权后,需要重启Spark2x服务,并重新下载客户端,或刷新客户端配置文件spark/conf/spark-defaults.conf: 开启Ranger鉴权:spark.ranger.plugin.authorization.enable=true 关闭Ranger鉴权:spark.ranger.plugin.authorization.enable=false
  • 操作场景 该任务指导MRS集群管理员在Manager创建并设置SparkSQL的角色。SparkSQL角色可设置Spark管理员权限以及数据表的数据操作权限。 用户使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。
  • 批量构建全局二级索引数据 只有处于INACTIVE状态的索引才能进行批量构建,如需重建索引数据,请先修改索引状态。 数据表中存在大量数据时,构建耗时较长,建议将nohup命令放在后台执行,避免操作被意外中断。 在HBase客户端执行以下命令可批量构建已有数据的索引数据: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.build='idx1' 相关参数介绍如下: tablename.to.index:表示需修改索引状态的数据表的名称。 indexnames.to.build:指定的需要批量生成数据的索引名,可以同时指定多个,用#号分隔。 hbase.gsi.cleandata.enabled(可选):表示构建索引数据前是否需要清空索引表,默认值为“false”。 hbase.gsi.cleandata.timeout(可选):表示构建索引数据前等待清空索引表超时时间,默认值为“1800”,单位为:秒。
  • 操作步骤 使用安装客户端的用户登录客户端所在节点,具体操作请参见使用客户端运行Loader作业。 执行以下命令,进入“backup.properties”文件所在目录。例如,Loader客户端安装目录为 “/opt/client/Loader/”。 cd /opt/client/Loader/loader-tools-1.99.3/loader-backup/conf 执行以下命令,修改“backup.properties”文件的配置参数,参数具体说明如表1所示。 vi backup.properties server.url = 10.0.0.1:21351,10.0.0.2:12000 authentication.type = kerberos authentication.user = authentication.password= job.jobId = 1 use.keytab = true client.principal = loader/hadoop client.keytab = /opt/client/conf/loader.keytab 表1 配置参数说明 配置参数 说明 示例 server.url Loader服务的浮动IP地址和端口(21351)。 为了兼容性,此处支持配置多个IP地址和端口,并以“,”进行分隔。其中第一个必须是Loader服务的浮动IP地址和端口(21351),其余的可根据业务需求配置。 10.0.0.1:21351,10.0.0.2:12000 authentication.type 登录认证的方式。 “kerberos”,表示使用安全模式,进行Kerberos认证。Kerberos认证提供两种认证方式:密码和keytab文件。 “simple”,表示使用普通模式,不进行Kerberos认证。 kerberos authentication.user 普通模式或者使用密码认证方式时,登录使用的用户。 keytab登录方式,则不需要设置该参数。 bar authentication.password 使用密码认证方式时,登录使用的用户密码。 普通模式或者keytab登录方式,则不需要设置该参数。 用户需要对密码加密,加密方法: 进入“encrypt_tool”所在目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”,则执行如下命令。 cd /opt/hadoopclient/Loader/loader-tools-1.99.3 执行以下命令,对非加密密码进行加密。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。 ./encrypt_tool 未加密的密码 得到加密后的密文,作为“authentication.password”的取值。 说明: 非加密密码中含有特殊字符时需要转义。例如,$符号属于特殊字符,可使用单引号进行转义;非加密密码中含有单引号时可用双引号进行转义,非加密密码中含有双引号应使用反斜杠\进行转义。可参考Shell的转义字符规则。 - job.jobId 需要执行数据备份的作业ID。 作业ID可通过登录Loader webUI在已创建的作业查看。 1 use.keytab 是否使用keytab方式登录。 true,表示使用keytab文件登录 false,表示使用密码登录。 true client.principal 使用keytab认证方式时,访问Loader服务的用户规则。 普通模式或者密码登录方式,则不需要设置该参数。 loader/hadoop client.keytab 使用keytab认证方式登录时,使用的keytab文件所在目录。 普通模式或者密码登录方式,则不需要设置该参数。 /opt/client/conf/loader.keytab 执行以下命令,进入备份脚本“run.sh”所在目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”。 cd /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-backup 执行以下命令,运行备份脚本“run.sh”,进行Loader作业数据备份。系统将数据备份到作业的输出路径同一层目录。 ./run.sh 备份数据的输入目录 例如,备份数据的输入目录为“/user/hbase/”,作业的输出路径为/opt/client/sftp/sftp1,其中sftp1只起到一个占位符的作用。执行如下命令,数据将备份到/opt/client/sftp/hbase目录。 ./run.sh /user/hbase/
  • Concatenation Operator : || || 操作符用于将相同类型的数组或数值串联起来。 SELECT ARRAY[1] || ARRAY[2]; _col0 -------- [1, 2] (1 row) SELECT ARRAY[1] || 2; _col0 -------- [1, 2] (1 row) SELECT 2 || ARRAY[1]; _col0 -------- [2, 1] (1 row)
  • 操作步骤 以客户端安装用户,登录安装客户端的节点。 执行以下命令切换到客户端目录。 cd 客户端安装目录 执行以下命令配置环境变量。 source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户 kinit 组件业务用户 如果当前集群未启用Kerberos认证,则执行以下命令设置Hadoop用户名: export HADOOP_USER_NAME=hbase 进入Spark客户端目录,执行如下命令,同步数据到HBase目标表中。 cd Spark/spark/bin 例如,执行以下命令同步test.orc_table表的所有数据到HBase的test:orc_table表中,使用id+uuid组合作为rowkey列,输出路径指定为“/tmp/orc_table”: spark-submit --master yarn --deploy-mode cluster --jars 客户端安装目录/HBase/hbase/lib/protobuf-java-2.5.0.jar,客户端安装目录/HBase/hbase/conf/* --conf spark.yarn.user.classpath.first=true --class com.huawei.hadoop.hbase.tools.bulkload.SparkBulkLoadTool 客户端安装目录/HBase/hbase/lib/hbase-it-bulk-load-*.jar -sql "select * from test.orc_table" -tb "test:orc_table" -rc "id,uuid" -op "/tmp/orc_table"
  • 前提条件 集群安装了Spark及Hive服务。 执行数据导入的用户需要同时具有Spark(对应源表的SELECT权限)、HBase权限(对应HBase NameSpace的RWXA权限)和HDFS权限(对应HFile输出目录的读写权限)。 如果集群已启用Kerberos认证(安全模式),需修改Spark“客户端安装目录/Spark/spark/conf/spark-defaults.conf”配置文件中的“spark.yarn.security.credentials.hbase.enabled”参数值为“true”。
  • 约束与限制 使用Spark BulkLoad同步数据类型数据到HBase表中时,存在以下限制: 数据类型转换的对应关系请参见表1。默认模式下,日期类型会被先转换为String类型,再存储到HBase中; 数字类型、字符串类型、布尔类型均会直接转为byte数组存储到HBase中,解析数据时,请将byte数组直接转换为对应类型,同时需要注意判断空值。 不建议将含有Struct、Map和Seq三种复杂类型的表数据直接同步到HBase表中,这些类型无法直接转换为byte数组,会先被转为String,再存储到HBase中,可能会导致无法还原数据。 该章节内容仅适用于MRS 3.5.0及之后版本。 表1 数据类型转换对应关系 Hive/Spark表 默认模式 HBase表 解析方式 TINYINT Byte byte[]取第一个值 SMALLINT Short Bytes.toShort(byte[]) INT/INTEGER Integer Bytes.toInt(byte[]) BIGINT Long Bytes.toLong(byte[], int, int) FLOAT Float Bytes.toFloat(byte[]) DOUBLE Double Bytes.toDouble(byte[]) DECIMAL/NUMERIC BigDecimal Bytes.toBigDecimal(byte[]) TIMESTAMP String Bytes.toString(byte[]) DATE String Bytes.toString(byte[]) STRING String Bytes.toString(byte[]) VARCHAR String Bytes.toString(byte[]) CHAR String Bytes.toString(byte[]) BOOLEAN Boolean Bytes.toBoolean(byte[]) BINARY byte[] 无需解析 ARRAY String Bytes.toString(byte[]) MAP String Bytes.toString(byte[]) STRUCT String Bytes.toString(byte[])
  • 前提条件 数据源与HetuEngine集群节点网络互通。 集群已启用Kerberos认证(安全模式)创建HetuEngine管理员用户,集群未启用Kerberos认证(普通模式)创建HetuEngine业务用户,并为其赋予HDFS管理员权限,即创建用户时需同时加入“hadoop”和“hadoopmanager”用户组,创建用户可参考创建HetuEngine权限角色。 已创建HetuEngine计算实例,可参考创建HetuEngine计算实例。 已获取Oracle数据库所在的IP地址,端口号,数据库实例名称或是数据库pdb名称,用户名及密码。
  • 操作步骤 以Hive客户端安装用户登录安装客户端的节点。 执行以下命令,切换到客户端安装目录,配置环境变量并认证用户。 切换至客户端安装目录: cd 客户端安装目录 加载环境变量: source bigdata_env 认证用户,未开启Kerberos认证的集群请跳过该步骤: kinit Hive业务用户 执行以下命令登录Hive客户端。 beeline 创建表时指定inputFormat和outputFormat: CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [ROW FORMAT row_format] STORED AS inputformat 'org.apache.hadoop.hive.contrib.fileformat.SpecifiedDelimiterInputFormat' outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 查询之前指定分隔符配置项: set hive.textinput.record.delimiter='!@!'; Hive会以“!@!”为行分隔符查询数据。
  • 操作场景 通常情况下,Hive以文本文件存储的表会以回车作为其行分隔符,即在查询过程中,以回车符作为一行表数据的结束符。但某些数据文件并不是以回车分隔的规则文本格式,而是以某些特殊符号分隔其规则文本。 MRS Hive支持指定不同的字符或字符组合作为Hive文本数据的行分隔符,即在创建表的时候,指定inputformat为SpecifiedDelimiterInputFormat,然后在每次查询前,都设置如下参数来指定分隔符,就可以以指定的分隔符查询表数据: set hive.textinput.record.delimiter='';
  • 回答 在splitWAL的过程中,参数“hbase.splitlog.manager.timeout”控制splitWAL的超时时间,如果该时间内splitWAL无法完成,则会再次提交相同的任务,在一定时间内多次提交了相同的任务,当其中某次任务执行完毕时会删除这个temp文件,所以在后来的任务执行时无法找到这个文件,故出现FileNotFoudException。需做如下调整: 当前“hbase.splitlog.manager.timeout”的默认时间为“600000ms”,集群规格为每个regionserver上有2000~3000个region,在集群正常情况下(HBase无异常,HDFS无大量的读写操作等),建议此参数根据集群的规格进行调整,如果实际规格(实际平均每个regionserver上region的个数)大于默认规格(默认平均每个regionserver上region的个数,即2000),则调整方案为(实际规格 / 默认规格)* 默认时间。 在服务端的“hbase-site.xml”文件中配置splitlog参数,如表1所示。 表1 splitlog参数说明 参数 描述 默认值 hbase.splitlog.manager.timeout 分布式日志分裂管理程序接收worker回应的超时时间 600000
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全