云服务器内容精选

  • 示例 1 2 3 4 5 6 7 8 9 CREATE TABLE test_hbase( ATTR1 int, ATTR2 int, ATTR3 string) using hbase OPTIONS ( 'ZKHost'='to-hbase-1174405101-CE1bDm5B.datasource.com:2181', 'TableName'='HBASE_TABLE', 'RowKey'='ATTR1', 'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2');
  • 关键字 表1 CREATE TABLE关键字说明 参数 描述 USING [CLOUDTABLE | HBASE] 指定hbase datasource,"CLOUDTABLE"或"HBASE"二选一,大小写不敏感。 ZKHost HBase集群的ZK连接地址。 获取ZK连接地址需要先创建跨源连接,管理控制台操作请参考增强型跨源连接。 访问CloudTable集群,填写ZK连接地址(内网)。 访问 MRS 集群,填写ZK所在节点IP与ZK对外端口,格式为:"ZK_IP1:ZK_PORT1,ZK_IP2:ZK_PORT2"。 说明: 访问MRS集群,只支持创建增强型跨源连接并且需要配置主机信息,管理控制台操作请参考增强型跨源连接,相关API信息请参考创建增强型跨源连接。 TableName 指定在HBase集群中已创建的表名。 RowKey 指定作为rowkey的dli关联表字段,支持单rowkey与组合rowkey。单rowkey支持数值与String类型,不需要指定长度。组合rowkey仅支持String类型定长数据,格式为:属性名1:长度,属性名2:长度。 Cols 通过逗号分隔的 DLI 表字段与HBase表的列之间的对应关系。其中,冒号前面放置DLI表字段,冒号后面放置HBase表信息,用‘.’分隔HBase表的列族与列名。
  • 注意事项 若所要创建的表已经存在将报错,可以通过添加IF NOT EXISTS参数跳过该错误。 OPTIONS中的所有参数是必选的,参数名称大小写不敏感,但参数值大小写敏感。 OPTIONS中引号内的值前后不能带空格,空格也会被当做有效值。 表名及列名的描述仅支持字符串常量。 创建表时要说明列名及对应的数据类型,目前支持的数据类型为:boolean、short、int、long、float、double和string。 作为RowKey的字段(如上述语法格式中的ATTR1),其值不能为null,长度要大于0,小于或等于32767。 Cols与RowKey中的字段加起来的数量必须与DLI表的字段保持一致,即表中所有的字段都到对应到Cols和RowKey中,但是顺序可以任意。 组合Rowkey只支持String类型,在使用组合Rowkey时,每个属性后面必须带上长度。当Rowkey指定的字段只有一个的时候,该字段的类型可以是支持的所有数据类型,并且不需要填写长度。 在组合Rowkey的场景中 插入Rowkey数据时,如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要短,则会在数据后面补'\0'字符;如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要长,则会在实际插入HBase的时候进行截断。 读取HBase上的Rowkey数据时,如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要短,则会抛出异常(OutofBoundException);如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要长,则会在读取时进行截断。
  • 语法格式 单个RowKey 1 2 3 4 5 6 7 8 9 CREATE TABLE [IF NOT EXISTS] TABLE_NAME ( ATTR1 TYPE, ATTR2 TYPE, ATTR3 TYPE) USING [CLOUDTABLE | HBASE] OPTIONS ( 'ZKHost'='xx', 'TableName'='TABLE_IN_HBASE', 'RowKey'='ATTR1', 'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2'); 组合RowKey 1 2 3 4 5 6 7 8 9 CREATE TABLE [IF NOT EXISTS] TABLE_NAME ( ATTR1 String, ATTR2 String, ATTR3 TYPE) USING [CLOUDTABLE | HBASE] OPTIONS ( 'ZKHost'='xx', 'TableName'='TABLE_IN_HBASE', 'RowKey'='ATTR1:2, ATTR2:10', 'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2'
  • 查看监控信息 登录 表格存储服务 管理控制台。 单击管理控制台左上角的,选择区域。 在左侧导航树,单击集群管理。 在集群列表中找到需要查看的集群,在对应的操作列中,单击查看监控信息,系统会跳到该集群的“云服务监控”页面。 待查看集群,其状态必须为“服务中”。 图1 查看监控信息 在集群的“云服务监控”页面中,单击集群ID前的按钮展开计算单元列表,选择对应节点查看监控信息。 图2 监控页面 ID:所监控的实例ID,即CloudTable集群ID。 查看监控指标:如图监控页面所示的计算单元列表中,找到所需查看的计算单元,单击“查看监控指标”进入该计算单元的监控指标页面。 如果您查看监控页面的指标太多,可以对指标进行设置,设置自己需要查看的指标。 如果指标太多,可以通过设置监控指标页面对指标进行删除。 如果页面显示的指标没有您想看的指标,可以在设置监控指标页面进行添加。 选择您在页面中要展示的指标名称,拖动选中指标可以对指标进行排序。 图3 设置指标图
  • 一键部署客户端 准备Linux弹性云服务器。 使用一键部署客户端工具,建议Linux弹性云服务器的操作系统类型为EulerOS,CentOS,Ubuntu和SUSE。具体操作请参见准备弹性云服务器。 下载客户端一键部署工具。 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,然后执行如下命令,获取客户端一键部署工具: curl -O -k "https://cloudtable-publish.obs.myhuaweicloud.com/cloudtable-client/quick_start_hbase_shell.sh" 此命令适用于HBase 2.x版本。 一键部署包内置校验文件。 准备集群访问地址。 登录 表格存储 服务管理控制台,在左侧导航树单击集群管理,然后在集群列表中找到所需要的集群,并获取相应的“ZK链接地址(内网)”。该参数值就是集群访问地址,如图1所示。 图1 ZK链接地址 使用工具部署客户端。 请将以下命令中的"$zookeeper_address"参数替换为3获取的ZK链接地址,然后在弹性云服务器命令行窗口,执行该命令一键部署客户端。 普通集群一键部署命令。 source quick_start_hbase_shell.sh $zookeeper_address 启动Shell访问集群。 在上一步执行source命令自动部署客户端后,就已自动启动了HBase Shell。在后续使用过程中,您也可以执行“bin/hbase shell”命令启动Shell访问集群。
  • 在CloudTable中查看导入的数据 准备Linux弹性云服务器。 假设该弹性云服务器名称为“ecs_20170916”,准备的具体操作请参见准备弹性云服务器章节。 安装客户端并启动Shell访问CloudTable集群。 使用HBase Shell访问集群的具体操作请参见使用HBase Shell访问集群章节。 在CloudTable客户端中执行查询命令,查看使用 CDM 迁移到CloudTable的数据。 命令示例如下,其中table_name请替换为在CDM集群中新建作业时指定的表名。 scan 'table_name'
  • 为Linux弹性 云服务器配置 DNS地址和hosts文件 当您通过一键部署客户端的方法安装HBase Shell时,不需要执行本操作。其他情况下,请参照以下方法为Linux弹性云服务器配置 DNS地址 和hosts。 配置/etc/hosts。 将主机IP配置到/etc/hosts文件,可以加速访问CloudTable集群。 为Linux弹性云服务器配置"/etc/hosts"的操作方法如下: 以root用户登录Linux弹性云服务器。 执行“hostname”,查询主机名。 [root@euler ~]# hostname euler.novalocal 执行“ifconfig”,查询本机IP。 图2 查询IP 执行“vi /etc/hosts”命令,编辑文件,增加主机配置。 192.168.0.58 euler.novalocal 127.0.0.1 euler.novalocal 按“Esc”键,并输入“:wq”,保存退出。 执行如下命令,查看IP地址是否写入成功。 cat /etc/hosts 执行如下命令,验证是否能够解析主机名。 ping 主机名 配置DNS。 DNS服务器用于解析CloudTable集群相关链接地址(例如ZK链接地址)中的 域名 。请根据CloudTable集群所在的区域,设置相应区域的内网DNS地址,各个区域的DNS地址请参见《云解析服务常见问题》中的内网DNS地址是多少?。 为Linux弹性云服务器配置DNS的操作方法如下: 以root用户登录Linux弹性云服务器。 执行“vi /etc/resolv.conf”命令,编辑“/etc/resolv.conf”文件,增加“nameserver”配置。 在已有的公网IP地址之前新增两行写入DNS服务器IP地址,格式如下: nameserver 100.125.1.250 按“Esc”键,并输入“:wq”,保存退出。 执行如下命令,查看IP地址是否写入成功。 cat /etc/resolv.conf 执行如下命令,验证访问域名是否可以解析到IP地址。 ping 访问域名 访问域名请输入CloudTable集群的相关链接地址(例如ZK链接地址)中的域名。请在表格存储服务管理控制台,单击集群名称,进入集群基本信息页面,获取CloudTable的相关链接地址。所获取的链接地址包含了以逗号分隔的3个内网域名,您可以ping其中任意一个内网域名。
  • 基于HBase本地二级索引查询数据 在具有索引的用户表中,可以使用Filter来查询数据。对于创建单索引和组合索引的用户表,使用过滤器查询的结果与没有使用索引的表相同,但数据查询性能高于没有使用索引的表。 索引的使用规则如下: 对于为一个或多个列创建单个索引的情况: 当将此列用于AND或OR查询筛选时,使用索引可以提高查询性能。 例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2)。 当在查询中使用“索引列和非索引列”进行过滤时,此索引可以提高查询性能。 例如,Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1)。 当在查询中使用“索引列或非索引列”进行筛选时,但不使用索引,查询性能不会提高。 例如,Filter_Condition(IndexCol1)AND / OR Filter_Condition(IndexCol2) OR Filter_Condition(NonIndexCol1)。 对于为多个列创建组合索引的情况: 当用于查询的列是组合索引的全部或部分列并且与组合索引具有相同的顺序时,使用索引会提高查询性能。 例如,为C1,C2和C3创建组合索引。 该索引在以下情况下生效: Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2) FILTER_CONDITION(IndexCol1) 该索引在下列情况下不生效: Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3) FILTER_CONDITION(IndexCol2) FILTER_CONDITION(IndexCol3) 当在查询中使用“索引列和非索引列”进行过滤时,使用索引可提高查询性能。 例如: Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1) 当在查询中使用“索引列或非索引列”进行筛选时,但不使用索引,查询性能不会提高。 例如: Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1)) 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。 例如,为C1,C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。
  • 相关接口 使用HIndex的API都在类org.apache.hadoop.hbase.hindex.client.HIndexAdmin中,相关接口介绍如下: 操作 接口 描述 注意事项 添加索引 addIndices() 将索引添加到没有数据的表中。调用此接口会将用户指定的索引添加到表中,但会跳过生成索引数据。因此,在此操作之后,索引不能用于scan/filter操作。该接口的使用场景为用户想要在具有大量预先存在用户数据的表上批量添加索引,其具体操作为使用诸如TableIndexer工具之类的外部工具来构建索引数据。 索引一旦添加则不能修改。若要修改,则需先删除旧的索引然后重新创建。 应注意不要在具有不同索引名称的相同列上创建两个索引,否则会导致存储和处理的资源浪费。 索引不能添加到系统表中。 向索引列put数据时不支持append和increment操作。 如果客户端出现任何故障,除非发生DoNotRetryIOException,否则应该重试。 索引列族按以下优先级从数据表中已存在的列族选取,优先级从高到低依次为: d、#、@、$、%、#0、@0、$0、%0、#1、@1 ...上至#255、@255、$255和%255 创建索引时,系统会在表中按以上优先级顺序检查是否存在以上列族,如果不存在,则将第一个不存在的列族设为索引列族。 例如: 数据表中仅存在d列族,则索引列族默认为#。 数据表中已存在d和#列族,则默认索引列族默认为@。 数据表中已存在d、#和$列族,则索引列族默认为@。 可以通过HIndex TableIndexer工具添加索引而无需建立索引数据。 addIndicesWithData() 将索引添加到有数据的表中。此方法将用户指定的索引添加到表中,并会对已经存在的用户数据创建对应的索引数据,也可先调用该方法生成索引再在存入用户数据的同时生成索引数据。在此操作之后,这些索引立即可用于scan/filter操作。 删除索引 dropIndices() 仅删除索引。该API从表中删除用户指定的索引,但跳过相应的索引数据。在此操作之后,索引不能用于scan/filter操作。集群在major compaction期间会自动删除旧的索引数据。 此API使用场景为表中包含大量索引数据且dropIndicesWithData()不可行。另外,也可以通过TableIndexer工具删除索引以及索引数据。 在索引的状态为ACTIVE,INACTIVE和DROPPING时,允许禁用索引的操作。 对于使用dropIndices()删除索引的操作,用户必须确保在将索引添加到具有相同索引名的表之前,相应的索引数据已被删除(即major compaction已完成)。 用户删除相应的索引会删除: 一个带有索引的列族。 组合索引所有列族中的任一个列族。 索引可以通过HIndex TableIndexer工具与索引数据一起删除。 dropIndicesWithData() 删除索引数据。此API删除用户指定的索引,并删除用户表中与这些索引对应的所有索引数据。在此操作之后,删除的索引完全从表中删除,不再可用于scan/filter操作。 启用/禁用索引 disableIndices() 该API禁用所有用户指定的索引,使其不再可用于scan/filter操作。 在索引的状态为ACTIVE,INACTIVE和BUILDING时允许启用索引的操作。 在索引的状态为ACTIVE和INACTIVE时允许禁用索引操作。 在禁用索引之前,用户必须确保索引数据与用户数据一致。如果在索引处于禁用状态期间没有在表中添加新的数据,索引数据与用户数据将保持一致。 启用索引时,可以通过使用TableIndexer工具构建索引来保证数据一致性。 enableIndices() 该API启用所有用户指定的索引,使其可用于scan/filter操作。 查看已创建的索引 listIndices() 该API可用于列出给定表中的所有索引。 无
  • 操作场景 HBase可以通过对HFile中的data block编码,减少Key-Value中Key的重复部分,从而减少空间的使用。目前对data block的编码方式有:NONE、PREFIX、DIFF、FAST_DIFF和ROW_INDEX_V1,其中NONE表示不使用编码。另外,HBase还支持使用压缩算法对HFile文件进行压缩,默认支持的压缩算法有:NONE、GZ、SNAPPY和ZSTD,其中NONE表示HFile不压缩。 这两种方式都是作用在HBase的列簇上,可以同时使用,也可以单独使用。
  • 注意事项 当主集群关闭时,此工具将从ZooKeeper节点(RS znode)获得WAL的处理进度以及WAL的处理队列,并将未复制的队列复制到备集群中。 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。 当RegionServer故障时,主集群的每个RegionServer都会通过watcher收到通知,并尝试锁定故障RegionServer的znode,包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后,它们将从旧位置删除。 在主集群关闭期间,ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据,并且RegionServer znode的wals将被移动到备集群下。
  • 使用ReplicationSyncUp工具 在主集群hbase shell中输入如下命令使用: hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1 replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒(默认值)的睡眠时间没有任何意义,因此将其设置为1(s),使备份过程更快触发。
  • 前提条件 主备集群已经安装并且启动。 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。 当主集群HBase服务关闭时,ZooKeeper和HDFS服务应该启动并运行。 该工具应该由启动HBase进程的系统用户运行。 如果处于安全模式,请确保备用集群的HBase系统用户具有主集群HDFS的读取权限。因为它将更新HBase系统ZooKeeper节点和HDFS文件。 主集群HBase故障后,主集群的ZooKeeper,文件系统和网络依然可用。
  • 前提条件 已安装客户端。例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。 各组件业务用户由MRS集群管理员根据业务需要创建。 “机机”用户需要下载keytab文件,“人机”用户第一次登录时需修改密码。 非root用户使用HBase客户端,请确保该HBase客户端目录的属主为该用户,否则请参考如下命令修改属主。 chown user:group -R 客户端安装目录/HBase