云服务器内容精选
-
使用HBase客户端 安装客户端,具体请参考安装客户端章节。 以客户端安装用户,登录安装客户端的节点。 执行以下命令切换到客户端目录。 cd /opt/hadoopclient 执行以下命令配置环境变量。 source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建HBase表的权限,具体请参见角色管理配置拥有对应权限的角色,参考创建用户章节,为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit 组件业务用户 例如,kinit hbaseuser。 直接执行HBase组件的客户端命令。 hbase shell
-
前提条件 已安装客户端。例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。 各组件业务用户由MRS集群管理员根据业务需要创建。 “机机”用户需要下载keytab文件,“人机”用户第一次登录时需修改密码。 非root用户使用HBase客户端,请确保该HBase客户端目录的属主为该用户,否则请参考如下命令修改属主。 chown user:group -R 客户端安装目录/HBase
-
查看监控信息 登录表格存储服务管理控制台。 单击管理控制台左上角的,选择区域。 在左侧导航树,单击集群管理。 在集群列表中找到需要查看的集群,在对应的操作列中,单击查看监控信息,系统会跳到该集群的“云服务监控”页面。 待查看集群,其状态必须为“服务中”。 图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其中任意一个内网域名。 图3 查看链接地址
-
原因分析 当一个block size大于2G时,hdfs在seek的时候会出现读取异常,持续频繁写入regionserver时出现了full gc,且时间比较久,导致hmaster与regionserver之间的心跳异常,然后hmaster把regionserver标记为dead状态,强制重启了Regionserver,重启后触发servercrash机制开始回滚wal日志。现在这个splitwal的文件已经达到将近2.1G,且其仅有一个block块,导致hdfs seek异常,引起splitwal失败,regionserver检测到当前这个wal日志还需要split,又会触发splitwal日志的机制进行回滚,就这样在split与split失败之间不停循环,导致无法上线该regionserver节点上的region,最后出现查询该RS上某一个region时会报region not online的异常。
-
常见问题 Q:Flink作业运行失败,作业运行日志中如下报错信息,应该怎么解决? java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 6 A:如果HBase表中的数据是以其他方式导入的话,那么其存储是以String格式存储的,所以使用其他的数据格式将会报该错误。需要将Flink创建HBase源表中非string类型的字段的字段类型重新改为String即可。
-
注意事项 创建Flink OpenSource SQL作业时,在作业编辑界面的“运行参数”处,“Flink版本”需要选择“1.15”,勾选“保存作业日志”并设置保存作业日志的OBS桶,方便后续查看作业日志。 认证用的username和password等硬编码到代码中或者明文存储都有很大的安全风险,建议使用DEW管理凭证。配置文件或者环境变量中密文存放,使用时解密,确保安全。Flink Opensource SQL使用DEW管理访问凭据 创建HBase源表的列簇必须定义为ROW类型,字段名对应列簇名(column family),嵌套的字段名对应列限定符名(column qualifier)。 用户只需在表结构中声明查询中使用的的列簇和列限定符。除了ROW类型的列,剩下的原子数据类型字段(比如,STRING, BIGINT)将被识别为HBase的rowkey,一张表中只能声明一个rowkey。rowkey字段的名字可以是任意的,如果是保留关键字,需要用反引号进行转义。
-
前提条件 该场景作业需要运行在DLI的独享队列上,因此要与HBase建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 如何建立增强型跨源连接,请参考《数据湖探索用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。 如果使用MRS HBase,请在增强型跨源的主机信息中添加MRS集群所有节点的主机ip信息。 详细操作请参考《数据湖探索用户指南》中的“修改主机信息”章节描述。
-
语法格式 create table hbaseSource ( attr_name attr_type (',' attr_name attr_type)* (',' watermark for rowtime_column_name as watermark-strategy_expression) ','PRIMARY KEY (attr_name, ...) NOT ENFORCED) ) with ( 'connector' = 'hbase-2.2', 'table-name' = '', 'zookeeper.quorum' = '' );
-
数据类型映射 HBase以字节数组存储所有数据,在读和写过程中要序列化和反序列化数据。 Flink的HBase连接器利用HBase(Hadoop) 的工具类org.apache.hadoop.hbase.util.Bytes进行字节数组和Flink数据类型转换。 Flink的HBase连接器将所有数据类型(除字符串外)null值编码成空字节。对于字符串类型,null值的字面值由null-string-literal选项值决定。 表2 数据类型映射表 Flink数据类型 HBase转换 CHAR/VARCHAR/STRING byte[] toBytes(String s) String toString(byte[] b) BOOLEAN byte[] toBytes(boolean b) boolean toBoolean(byte[] b) BINARY/VARBINARY 返回 byte[]。 DECIMAL byte[] toBytes(BigDecimal v) BigDecimal toBigDecimal(byte[] b) TINYINT new byte[] { val } bytes[0] // returns first and only byte from bytes SMALLINT byte[] toBytes(short val) short toShort(byte[] bytes) INT byte[] toBytes(int val) int toInt(byte[] bytes) BIGINT byte[] toBytes(long val) long toLong(byte[] bytes) FLOAT byte[] toBytes(float val) float toFloat(byte[] bytes) DOUBLE byte[] toBytes(double val) double toDouble(byte[] bytes) DATE 从 1970-01-01 00:00:00 UTC 开始的天数,int 值。 TIME 从 1970-01-01 00:00:00 UTC 开始天的毫秒数,int 值。 TIMESTAMP 从 1970-01-01 00:00:00 UTC 开始的毫秒数,long 值。 ARRAY 不支持 MAP/MULTISET 不支持 ROW 不支持
-
回答 问题分析 当HBase服务端出现问题,HBase客户端进行表操作的时候,会进行重试,并等待超时。该超时默认值为Integer.MAX_VALUE (2147483647 ms),所以HBase客户端会在这么长的时间内一直重试,造成挂起表象。 解决方法 HBase客户端提供两个配置项来控制客户端的重试超时方式,如表1。 在“客户端安装路径/HBase/hbase/conf/hbase-site.xml”配置文件中配置如下参数。 表1 HBase客户端操作重试超时相关配置 配置参数 描述 默认值 hbase.client.operation.timeout 客户端操作超时时间。需在配置文件中手动添加。 2147483647 ms hbase.client.retries.number 最大重试次数。用于表示所有可重试操作所支持的最大重试次数。 35 这两个参数的重试超时的配合方式如图1所示。 图1 HBase客户端操作重试超时流程 从该流程可以看出,如果未对这两个配置参数根据具体使用场景进行配置,会造成挂起迹象。建议根据使用场景,配置合适的超时时间,如果是长时间操作,则把超时时间设置长一点;如果是短时间操作,则把超时时间设置短一点。而重试次数可以设置为:“(hbase.client.retries.number)*60*1000(ms)”。刚好大于“hbase.client.operation.timeout”设置的超时时间。
-
日志级别 HBase中提供了如表2所示的日志级别。日志级别优先级从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 FATAL FATAL表示当前事件处理出现严重错误信息,可能导致系统崩溃。 ERROR ERROR表示当前事件处理出现错误信息,系统运行出错。 WARN WARN表示当前事件处理存在异常信息,但认为是正常范围,不会导致系统出错。 INFO INFO表示记录系统及各事件正常运行状态信息 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 进入HBase服务参数“全部配置”界面,具体操作请参考修改集群服务配置参数。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后立即生效,不需要重启服务。
-
操作步骤 写数据服务端调优 参数入口: 进入HBase服务参数“全部配置”界面,具体操作请参考修改集群服务配置参数章节。 表1 影响实时写数据配置项 配置参数 描述 默认值 hbase.wal.hsync 控制HLog文件在写入到HDFS时的同步程度。如果为true,HDFS在把数据写入到硬盘后才返回;如果为false,HDFS在把数据写入OS的缓存后就返回。 把该值设置为false比true在写入性能上会更优。 true hbase.hfile.hsync 控制HFile文件在写入到HDFS时的同步程度。如果为true,HDFS在把数据写入到硬盘后才返回;如果为false,HDFS在把数据写入OS的缓存后就返回。 把该值设置为false比true在写入性能上会更优。 true GC_OPTS HBase利用内存完成读写操作。提高HBase内存可以有效提高HBase性能。GC_OPTS主要需要调整HeapSize的大小和NewSize的大小。调整HeapSize大小的时候,建议将Xms和Xmx设置成相同的值,这样可以避免JVM动态调整HeapSize大小的时候影响性能。调整NewSize大小的时候,建议把其设置为HeapSize大小的1/8。 HMaster:当HBase集群规模越大、Region数量越多时,可以适当调大HMaster的GC_OPTS参数。 RegionServer:RegionServer需要的内存一般比HMaster要大。在内存充足的情况下,HeapSize可以相对设置大一些。 说明: 主HMaster的HeapSize为4G的时候,HBase集群可以支持100000 region数的规模。根据经验值,集群每增加35000个region,HeapSize增加2G,主HMaster的HeapSize不建议超过32GB。 HMaster -server -Xms4G -Xmx4G -XX:NewSize=512M -XX:MaxNewSize=512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M Region Server -server -Xms6G -Xmx6G -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M hbase.regionserver.handler.count 表示在RegionServer上启动的RPC侦听器实例数。如果设置过高会导致激烈线程竞争,如果设置过小,请求将会在RegionServer长时间等待,降低处理能力。根据资源情况,适当增加处理线程数。 建议根据CPU的使用情况,可以选择设置为100至300之间的值。 200 hbase.hregion.max.filesize HStoreFile的最大大小(单位:Byte)。如果任何一个列族HStoreFile超过此参数值,则托管Hregion将会一分为二。 10737418240 hbase.hregion.memstore.flush.size 在RegionServer中,当写操作内存中存在超过memstore.flush.size大小的memstore,则MemStoreFlusher就启动flush操作将该memstore以hfile的形式写入对应的store中。 如果RegionServer的内存充足,而且活跃Region数量也不是很多的时候,可以适当增大该值,可以减少compaction的次数,有助于提升系统性能。 同时,这种flush产生的时候,并不是紧急的flush,flush操作可能会有一定延迟,在延迟期间,写操作还可以进行,Memstore还会继续增大,最大值为“memstore.flush.size” * “hbase.hregion.memstore.block.multiplier”。当超过最大值时,将会阻塞操作。适当增大“hbase.hregion.memstore.block.multiplier”可以减少阻塞,减少性能波动。单位:字节。 134217728 hbase.regionserver.global.memstore.size 更新被锁定以及强制冲洗发生之前一个RegionServer上支持的所有MemStore的大小。RegionServer中,负责flush操作的是MemStoreFlusher线程。该线程定期检查写操作内存,当写操作占用内存总量达到阈值,MemStoreFlusher将启动flush操作,按照从大到小的顺序,flush部分相对较大的memstore,直到所占用内存小于阈值。 阈值 = “hbase.regionserver.global.memstore.size” * “hbase.regionserver.global.memstore.size.lower.limit” * “HBase_HEAPSIZE” 说明: 该配置与“hfile.block.cache.size”的和不能超过0.8,也就是写和读操作的内存不能超过HeapSize的80%,这样可以保证除读和写外其它操作的正常运行。 0.4 hbase.hstore.blockingStoreFiles 在region flush前首先判断file文件个数,是否大于hbase.hstore.blockingStoreFiles。 如果大于需要先compaction并且让flush延时90s(这个值可以通过hbase.hstore.blockingWaitTime进行配置),在延时过程中,将会继续写从而使得Memstore还会继续增大超过最大值 “memstore.flush.size” * “hbase.hregion.memstore.block.multiplier”,导致写操作阻塞。当完成compaction后,可能就会产生大量写入。这样就导致性能激烈震荡。 增加hbase.hstore.blockingStoreFiles,可以减低BLOCK几率。 15 hbase.regionserver.thread.compaction.throttle 大于此参数值的压缩将被大线程池执行,单位:Byte。控制一次Minor Compaction时,进行compaction的文件总大小的阈值。Compaction时的文件总大小会影响这一次compaction的执行时间,如果太大,可能会阻塞其它的compaction或flush操作。 1610612736 hbase.hstore.compaction.min 每次执行minor compaction的HStoreFile的最小数量。当一个Store文件超过该值时,会进行compact,适当增大该值,可以减少文件被重复执行compaction。但是如果过大,会导致Store文件数过多而影响读取的性能。 6 hbase.hstore.compaction.max 每次执行minor compaction的HStoreFile的最大数量。与“hbase.hstore.compaction.max.size”的作用基本相同,主要是控制一次compaction操作的时间不要太长。 10 hbase.hstore.compaction.max.size 如果一个HFile文件的大小大于该值,那么在Minor Compaction操作中不会选择这个文件进行compaction操作,除非进行Major Compaction操作。 这个值可以防止较大的HFile参与compaction操作。在禁止Major Compaction后,一个Store中可能存在几个HFile,而不会合并成为一个HFile,这样不会对数据读取造成太大的性能影响。单位:字节。 9223372036854775807 hbase.hregion.majorcompaction 单个区域内所有HStoreFile文件主压缩的时间间隔,单位:毫秒。由于执行Major Compaction会占用较多的系统资源,如果正在处于系统繁忙时期,会影响系统的性能。 如果业务没有较多的更新、删除、回收过期数据空间时,可以把该值设置为0,以禁止Major Compaction。 如果必须要执行Major Compaction,以回收更多的空间,可以适当增加该值,同时配置参数“hbase.offpeak.end.hour”和“hbase.offpeak.start.hour”以控制Major Compaction发生在业务空闲的时期。单位:毫秒。 604800000 hbase.regionserver.maxlogs hbase.regionserver.hlog.blocksize 表示一个RegionServer上未进行Flush的Hlog的文件数量的阈值,如果大于该值,RegionServer会强制进行flush操作。 表示每个HLog文件的最大大小。如果HLog文件大小大于该值,就会滚动出一个新的HLog文件,旧的将被禁用并归档。 这两个参数共同决定了RegionServer中可以存在的未进行Flush的hlog数量。当这个数据量小于MemStore的总大小的时候,会出现由于HLog文件过多而触发的强制flush操作。这个时候可以适当调整这两个参数的大小,以避免出现这种强制flush的情况。单位:字节。 32 134217728 写数据客户端调优 写数据时,在场景允许的情况下,更适合使用Put List的方式,可以极大的提升写性能。每一次Put的List的长度,需要结合单条Put的大小,以及实际环境的一些参数进行设定。建议在选定之前先做一些基础的测试。 写数据表设计调优 表2 影响实时写数据相关参数 配置参数 描述 默认值 COMPRESSION 配置数据的压缩算法,这里的压缩是HFile中block级别的压缩。对于可以压缩的数据,配置压缩算法可以有效减少磁盘的IO,从而达到提高性能的目的。 说明: 并非所有数据都可以进行有效压缩。例如一张图片的数据,因为图片一般已经是压缩后的数据,所以压缩效果有限。常用的压缩算法是SNAPPY,因为它有较好的Encoding/Decoding速度和可以接受的压缩率。 NONE BLOCKSIZE 配置HFile中block块的大小,不同的block块大小,可以影响HBase读写数据的效率。越大的block块,配合压缩算法,压缩的效率就越好;但是由于HBase的读取数据是以block块为单位的,所以越大的block块,对于随机读的情况,性能可能会比较差。 如果要提升写入的性能,一般扩大到128KB或者256KB,可以提升写数据的效率,也不会影响太大的随机读性能。单位:字节 65536 IN_MEMORY 配置这个表的数据优先缓存在内存中,这样可以有效提升读取的性能。对于一些小表,而且需要频繁进行读取操作的,可以设置此配置项。 false
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格