阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下HBase数据库的安装和配置文件详解

274次阅读
没有评论

共计 13604 个字符,预计需要花费 35 分钟才能阅读完成。

Ubuntu 下 HBase 安装

1. 从 http://www.apache.org/dyn/closer.cgi/hbase/ 下载稳定版安装包,我下的是 hbase-1.2.6-bin.tar.gz

2. 解压放在 /usr/local 的目录下

3. 修改权限
sudo chown -R luanpeng hbase-1.2.6/

4. 修改文件夹的名称为 hbase

5. 在~/.bashrc 下添加,之后 source 一下

export PATH=$PATH:/usr/local/hbase/bin

或者在 /etc/profile 中添加

export HBASE_HOME=/usr/local/hbase
export PATH=${HBASE_HOME}/bin:$PATH

6. 修改文件夹的权限

cd /usr/local
sudo chown -R luanpeng ./hbase

7. 测试一下是否安装成功
hbase version

单机版 hbase 配置
配置 /usr/local/hbase/conf/hbase-env.sh。
配置 Java 环境变量,并添加配置 HBASE_MANAGES_ZK 为 true,用 vi 命令打开并编辑 hbase-env.sh,命令如下
HBASE_MANAGES_ZK 为 true 的时候使用的 Hbase 自带的 zookeeper,使用 jps 来查看的时候进程的名字前面都是带 h 的,比如:HRegionServer、HQuorumPeer、HMaster
vi /usr/local/hbase/conf/hbase-env.sh

export JAVA_HOME=/usr/lib/java8/jdk1.8.0_65
export HBASE_MANAGES_ZK=true

配置 /usr/local/hbase/conf/hbase-site.xml。
在启动 HBase 前需要设置属性 hbase.rootdir,用于指定 HBase 数据的存储位置,因为如果不设置的话,hbase.rootdir 默认为 /tmp/hbase-${user.name}, 这意味着每次重启系统都会丢失数据。
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>/usr/local/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/hbase/zookeeper</value>
    </property>
</configuration>

单机版 hbase 测试
接下来测试运行。首先切换目录至 HBase 安装目录 /usr/local/hbase;再启动 HBase。命令如下:
cd /usr/local/hbase
bin/start-hbase.sh
bin/hbase shell

sudo bin/start-hbase.sh 用于启动 HBase
bin/hbase shell 用于打开 shell 命令行模式,用户可以通过输入 shell 命令操作 HBase 数据库。
停止 HBase 运行, 命令如下:
sudo bin/stop-hbase.sh

下面我们试验一下 hbase 的使用,执行:

hbase(main):001:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 3.0000 average load

创建一张表

hbase(main):004:0> create ‘table1′,’field1’
0 row(s) in 1.3430 seconds

=> Hbase::Table – table1

获取一张表
hbase(main):005:0> t1 = get_table(‘table1’)
0 row(s) in 0.0010 seconds

=> Hbase::Table – table1

添加一行
hbase(main):008:0> t1.put ‘row1’, ‘field1:qualifier1’, ‘value1’
0 row(s) in 0.4160 seconds

读取全部
hbase(main):009:0> t1.scan
ROW                                                                COLUMN+CELL
 row1                                                              column=field1:qualifier1, timestamp=1470621285068, value=value1
1 row(s) in 0.1000 seconds

集群版 hbase 配置
hbase 集群需要分布是存储, 一般是使用 hdfs 这个 Hadoop 分布式存储, 所以要先安装 hadoop 来布局分布式存储。

hbase 的基本语法

参考:https://www.linuxidc.com/Linux/2019-01/156204.htm

habse 配置详解
hbase.tmp.dir:本地文件系统的临时目录,默认是 java.io.tmpdir/hbase−java.io.tmpdir/hbase−{user.name};
hbase.rootdir:hbase 持久化的目录,被所有 regionserver 共享,默认 ${hbase.tmp.dir}/hbase,一般设置为 hdfs://namenode.example.org:9000/hbase 类似,带全限定名;
hbase.cluster.distributed:hbase 集群模式运作与否的标志,默认是 false,开启需要设置为 true,false 时启动 hbase 会在一个 jvm 中运行 hbase 和 zk;
hbase.zookeeper.quorum:重要的也是必须设置的,启动 zk 的服务器列表,逗号分隔,cluster 模式下必须设置,默认是 localhost,hbase 客户端也需要设置这个值去访问 zk;
hbase.local.dir:本地文件系统被用在本地存储的目录,默认 ${hbase.tmp.dir}/local/;
hbase.master.port:hbase master 绑定的端口,默认是 60000;
hbase.master.info.port:hbase master web 界面的端口,默认是 60010,设置为 - 1 可以禁用 ui;
hbase.master.info.bindAddress:master web 界面的绑定地址,默认是 0.0.0.0;
hbase.master.logcleaner.plugins:清理日志的插件列表,逗号分隔,被 LogService 调用的 LogCleanerDelegate,可以自定义,顺序执行,清理 WAL 和 HLog;默认 org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner
hbase.master.logcleaner.ttl:HLog 在.oldlogdir 目录中生存的最长时间,过期则被 Master 起线程回收,默认是 600000;
hbase.master.hfilecleaner.plugins:HFile 的清理插件列表,逗号分隔,被 HFileService 调用,可以自定义,默认 org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner
hbase.master.catalog.timeout:Catalog Janitor 从 master 到 META 的超时时间,我们知道这个 Janitor 是定时的去 META 扫描表目录,来决定回收无用的 regions,默认是 600000;
fail.fast.expired.active.master:如果 master 过期,那么不需要从 zk 恢复,直接终止,默认是 false;
hbase.master.dns.interface:master 的 dns 接口,向该接口提供 ip,默认是 default;
hbase.master.dns.nameserver:master 使用的 dns 主机名或者 ip,默认是 default;
hbase.regionserver.port:regionserver 绑定的端口,默认是 60020;
hbase.regionserver.info.port:regionserver 的 web 界面端口,- 1 取消界面,默认是 60030;
hbase.regionserver.info.bindAddress:regionserver 的 web 绑定,默认是 0.0.0.0;
hbase.regionserver.info.port.auto:master 或者 regionserver 是否自动搜索绑定的端口,默认是 false;
hbase.regionserver.handler.count:regionserver 上 rpc listener 的个数,把这个配置称为 io 线程数,其实雷同,就是说在 regionserver 上一个处理 rpc 的 handler,默认是 30;
hbase.regionserver.msginterval:regionserver 向 master 发消息的间隔,默认 3000 毫秒;
hbase.regionserver.optionallogflushinterval:如果没有足够的 entry 触发同步,那么过了这个间隔后 HLog 将被同步到 HDFS,默认是 1000 毫秒;
hbase.regionserver.regionSplitLimit:regionsplit 的最大限额,默认是 MAX_INT=2147483647,设置这个限制后,在到达限制时 region split 就不会再进行;
hbase.regionserver.logroll.period:不管有多少版本,直接 roll 掉 commit log 的周期,也就是说一个固定的时间周期,到期就 roll,默认是 3600000 毫秒;
hbase.regionserver.logroll.errors.tolerated:可接受的 WAL 关闭错误个数,到达后将触发服务器终止;设置为 0 那么在 WAL writer 做 log rolling 失败时就停止 region server,默认是 2;
hbase.regionserver.hlog.reader.impl:HLog 文件 reader 的实现类,默认是 org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader;
hbase.regionserver.hlog.writer.impl:HLog 文件 writer 的实现类,默认是 org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter;
hbase.regionserver.global.memstore.upperLimit:memstore 在 regionserver 内存中的上限,届时新的 update 被阻塞并且 flush 被强制写,默认是 0.4 就是堆内存的 40%;阻塞状态持续到 regionserver 的所有 memstore 的容量到达 hbase.regionserver.global.memstore.lowerLimit;
hbase.regionserver.global.memstore.lowerLimit:memstore 在 regionserver 内存中的最大上限,到达时 flush 就被强制写,默认是 0.38 等价于 38% 的内存容量;
hbase.regionserver.optionalcacheflushinterval:一个 edit 版本在内存中的 cache 时长,默认 3600000 毫秒,设置为 0 的话则禁止自动 flush;
hbase.regionserver.catalog.timeout:regionserver 的 Catalog Janitor 访问 META 的超时时间,默认是 600000;
hbase.regionserver.dns.interface:同 master 类似~~ 不讲
hbase.regionserver.dns.nameserver:同 master 类似
zookeeper.session.timeout:这是个值得说道一下的配置,首先 ZK 客户端要用,Hbase 使用 zk 的客户端联系总体,同时也被用来启动一个 zk server,作为 zk 的 maxSessionTimeout,总的来说就是 regionserver 与 zk 的关键参数,如果连接超时,master 会重新的 balance,regionserver 也会被从集群名单中清除,默认是 90000;一个问题是如果 zk 由 hbase 自己维护,那么该参数作为 regionserver 连接是一个值,如果 zk 在另外的集群,那么 zk 自己的 maxSessionTimeout 参数将优先于 Hbase 的该参数,届时可能会发生超时时间不同的问题;
zookeeper.znode.parent:znode 存放 root region 的地址,默认是 root-region-server;
zookeeper.znode.acl.parent:root znode 的 acl,默认 acl;
hbase.zookeeper.dns.interface:zk 的 dns 接口,默认 default;
hbase.zookeeper.dns.nameserver:zk 的 dns 服务地址,默认 default;
hbase.zookeeper.peerport:zk 的 peer 之间的通讯端口,默认是 2888;
hbase.zookeeper.leaderport:zk 选 leader 的通讯端口,默认是 3888;
hbase.zookeeper.useMulti:zk 支持多重 update,要求 zk 在 3.4 版本以上,默认是 false;
hbase.config.read.zookeeper.config:让 hbaseconfig 去读 zk 的 config,默认 false,也不支持开启,这个功能很搞笑~~ 个人观点;
hbase.zookeeper.property.initLimit:zk 的配置,同步的属性个数限制,默认 10 个~~ 没用;
hbase.zookeeper.property.syncLimit:zk 的配置,同步时的每次请求的条数,默认 5 个;
hbase.zookeeper.property.dataDir:zk 的配置,snapshot 存放的目录,默认是 ${hbase.tmp.dir}/zookeeper;
hbase.zookeeper.property.clientPort:zk 的配置,client 连 zk 的端口,默认 2181;
hbase.zookeeper.property.maxClientCnxns:zk 的配置,允许接入 zk 的最大并发连接数的限制,按 ip 分配,默认 300;
hbase.client.write.buffer:htable 客户端写缓冲区大小,默认是 2097152BYTE,这个缓冲区就是为了写数据的临时存放,设置大了,浪费客户端和服务端的存储,设置小了,如果写的数据多,太多的 RPC 又带来网络开销,官方给的一个服务端存储耗费评估计算是:hbase.client.write.buffer*hbase.regionserver.handler.count,服务端的 rs 的处理 handler 个数也很关键;
hbase.client.pause:pause 时长,在 hbase 发生 get 或其他操作 fail 掉的时候进行 pause 的时间长度,默认��100;
hbase.client.retries.number:发生操作 fail 时的重试次数,结合上一个指标一起来控制总的重试时间,默认是 35;
hbase.client.max.total.tasks:一个 HTable 实例可以提交给集群的最大并发任务数,默认是 100;
hbase.client.max.perserver.tasks:一个 HTable 实例给一台 regionserver 提交的最大并发任务数,默认是 5;
hbase.client.max.perregion.tasks:客户端连接一台 region 的最大连接数,换句话说,当你有这么多个连接在 region 时,新的操作不被发送直到有操作完成,默认是 1;
hbase.client.scanner.caching:做 scanner 的 next 操作时(如果再本地 client 没找到)缓存的数据行数,这个值的设置也需要权衡,缓存的多则快,但吃内存,缓存的少则需要多的拉数据,需要注意的事项是如果两次调用的时间差大于 scanner 的 timeout,则不要设置该值,默认是 100;
hbase.client.keyvalue.maxsize:一个 KeyValue 实例的最大大小,这是存储文件中一个 entry 的容量上限,合理的设置这个值可以控制 regionserver 的 split,split 不会拆 keyvalue,所以把 keyvalue 的大小设置为 regionserver 大小的一个比例分数(可除)是个不错的选择,默认是 10485760;
hbase.client.scanner.timeout.period:结合刚才的 caching 做的一个,scanner 的超时时间,默认是 60000 毫秒;
hbase.client.localityCheck.threadPoolSize:做 localityCheck 的线程池大小,默认是 2;
hbase.bulkload.retries.number:做 bulk load 的最大重试次数,默认是 0,即代表不断重试;
hbase.balancer.period:Master 运行 balancer 的周期,默认是 300000 毫秒;
hbase.regions.slop:如果有 regionserver 的 region 数目超过 average+(average*slop),则 rebalance,默认是 0.2;
hbase.server.thread.wakefrequency:服务线程的 sleep 时间,默认 10000 毫秒,比如 log roller;
hbase.server.versionfile.writeattempts:退出前写 version file 的重试次数,默认 3,每次尝试的间隔由上一个参数控制;
hbase.hregion.memstore.flush.size:Memstore 写磁盘的 flush 阈值,超过这个大小就 flush,默认是 134217728;
hbase.hregion.preclose.flush.size:如果一个 region 的 memstore 的大小等于或超过这个参数的量,在关闭 region 时(放置关闭 flag),要提前 flush,然后 region 关闭下线,默认大小是 5242880;
hbase.hregion.memstore.block.multiplier:如果 memstore 的大小满足 hbase.hregion.block.memstore * hbase.hregion.flush.size 个 byte,那么阻塞 update,这个配置可以避免不必要的长时间 split 或者 compact,甚至是 OOME,默认是 2;
hbase.hregion.memstore.mslab.enabled:开启 MemStore-Local Allocation Buffer,这个配置可以避免在高写入的情况下的堆内存碎片,可以降低在大堆情况下的 stop-the-world GC 频率,默认是 true;
hbase.hregion.max.filesize:HStoreFile 的最大尺寸,换句话说,当一个 region 里的列族的任意一个 HStoreFile 超过这个大小,那么 region 进行 split,默认是 10737418240;
hbase.hregion.majorcompaction:一个 region 的所有 HStoreFile 进行 major compact 的时间周期,默认是 604800000 毫秒(7 天);
hbase.hregion.majorcompaction.jitter:major compaction 的发生抖动范围,这么理解比较容易,就是说上一个参数不是一个严格周期,会有个抖动,这个参数就是这个抖动的比例,默认是 0.5;
hbase.hstore.compactionThreshold:一个 HStore 存储 HStoreFile 的个数阈值,超过这个阈值则所有的 HStoreFile 会被写到一个新的 HStore,需要平衡取舍,默认是 3;
hbase.hstore.blockingStoreFiles:一个 HStore 存储 HStoreFile 阻塞 update 的阈值,超过这个阈值,HStore 就进行 compaction,直到做完才允许 update,默认是 10;
hbase.hstore.blockingWaitTime:一个更强力的配置,配合上一个参数,当 HStore 阻塞 update 时,超过这个时间限制,阻塞取消,就算 compaction 没有完成,update 也不会再被阻塞,默认是 90000 毫秒;
hbase.hstore.compaction.max:每个 minor compaction 的 HStoreFile 个数上限,默认是 10;
hbase.hstore.compaction.kv.max:在 flushing 或者 compacting 时允许的最大 keyvalue 个数,如果有大的 KeyValue 或者 OOME 的话则配置一个小的值,如果行数多且小则配置大值,默认是 10;
hbase.storescanner.parallel.seek.threads:如果并行查找开启的线程池大小,默认是 10;
hfile.block.cache.size:一个配置比例,允许最大堆的对应比例的内存作为 HFile 和 HStoreFile 的 block cache,默认是 0.4,即 40%,设置为 0 则 disable 这个比例,不推荐这么做;
hfile.block.index.cacheonwrite:在 index 写入的时候允许 put 无根(non-root)的多级索引块到 block cache 里,默认是 false;
hfile.index.block.max.size:在多级索引的树形结构里,如果任何一层的 block index 达到这个配置大小,则 block 写出,同时替换上新的 block,默认是 131072;
hfile.format.version:新文件的 HFile 格式版本,设置为 1 来测试向后兼容,默认是 2;
hfile.block.bloom.cacheonwrite:对于组合布隆过滤器的内联 block 开启 cache-on-write,默认是 false;
io.storefile.bloom.block.size:一个联合布隆过滤器的单一块(chunk)的大小,这个值是一个逼近值,默认是 131072;
hbase.rs.cacheblocksonwrite:当一个 HFile block 完成时是否写入 block cache,默认是 false;
hbase.rpc.server.engine:hbase 做 rpc server 的调度管理类,实现自 org.apache.hadoop.ipc.RpcServerEngine,默认是 org.apache.hadoop.hbase.ipc.ProtobufRpcServerEngine;
hbase.rpc.timeout:Hbase client 发起远程调用时的超时时限,使用 ping 来确认连接,但是最终会抛出一个 TimeoutException,默认值是 60000;
hbase.rpc.shortoperation.timeout:另一个版本的 hbase.rpc.timeout,控制短操作的超时时限,比如 region server 汇报 master 的操作的超时时限可以设置小,这样有利于 master 的 failover,默认是 10000;
hbase.ipc.client.tcpnodelay:默认是 true,具体就是在 tcp socket 连接时设置 no delay;
hbase.master.keytab.file:kerberos keytab 文件的全路径名,用来为 HMaster 做 log,无默认值;
hbase.master.kerberos.principal:运行 HMaster 进程时需要 kerberos 的 principal name,这个配置就是这个 name 的值,形如:hbase/_HOST@EXAMPLE.COM;
hbase.regionserver.keytab.file:kerberos keytab 文件的全路径名,用来为 HRegionServer 做 log,无默认值;
hbase.regionserver.kerberos.principal:运行 HRegionServer 进程时需要 kerberos 的 principal name,这个配置就是这个 name 的值,形如:hbase/_HOST@EXAMPLE.COM;
hadoop.policy.file:RPC 服务器做权限认证时需要的安全策略配置文件,在 Hbase security 开启后使用,默认是 habse-policy.xml;
hbase.superuser:Hbase security 开启后的超级用户配置,一系列由逗号隔开的 user 或者 group;
hbase.auth.key.update.interval:Hbase security 开启后服务端更新认证 key 的间隔时间:默认是 86400000 毫秒;
hbase.auth.token.max.lifetime:Hbase security 开启后,认证 token 下发后的生存周期,默认是 604800000 毫秒;
hbase.ipc.client.fallback-to-simple-auth-allowed:client 使用安全连接去链接一台非安全服务器时,服务器提示 client 切换到 SASL SIMPLE 认证模式(非安全),如果设置为 true,则 client 同意切换到非安全连接,如果 false,则退出连接;
hbase.coprocessor.region.classes:逗号分隔的 Coprocessores 列表,会被加载到默认所有表上。在自己实现了一个 Coprocessor 后,将其添加到 Hbase 的 classpath 并加入全限定名。也可以延迟加载,由 HTableDescriptor 指定;
hbase.rest.port:Hbase REST 服务器的端口,默认是 8080;
hbase.rest.readonly:定义 REST 服务器启动的模式,有两种方式,false:所有 http 方法都将被通过 -GET/PUT/POST/DELETE,true:只有 get 方法 ok。默认值是 false;
hbase.rest.threads.max:REST 服务器线程池的最大线程数,池满的话新请求会自动排队,限制这个配置可以控制服务器的内存量,预防 OOM,默认是 100;
hbase.rest.threads.min:同上类似,最小线程数,为了确保服务器的服务状态,默认是 2;
hbase.rest.support.proxyuser:使 REST 服务器支持 proxy-user 模式,默认是 false;
hbase.defaults.for.version.skip:是否跳过 hbase.defaults.for.version 的检查,默认是 false;
hbase.coprocessor.master.classes:由 HMaster 进程加载的 coprocessors,逗号分隔,全部实现 org.apache.hadoop.hbase.coprocessor.MasterObserver,同 coprocessor 类似,加入 classpath 及全限定名;
hbase.coprocessor.abortonerror:如果 coprocessor 加载失败或者初始化失败或者抛出 Throwable 对象,则主机退出。设置为 false 会让系统继续运行,但是 coprocessor 的状态会不一致,所以一般 debug 时才会设置为 false,默认是 true;
hbase.online.schema.update.enable:设置 true 来允许在线 schema 变更,默认是 true;
hbase.table.lock.enable:设置为 true 来允许在 schema 变更时 zk 锁表,锁表可以组织并发的 schema 变更导致的表状态不一致,默认是 true;
hbase.thrift.minWorkerThreads:线程池的 core size,在达到这里配置的量级后,新线程才会再新的连接创立时创建,默认是 16;
hbase.thrift.maxWorkerThreads:顾名思义,最大线程数,达到这个数字后,服务器开始 drop 连接,默认是 1000;
hbase.thrift.maxQueuedRequests:Thrift 连接队列的最大数,如果线程池满,会先在这个队列中缓存请求,缓存上限就是该配置,默认是 1000;
hbase.thrift.htablepool.size.max:Thrift 服务器上 table pool 的最大上限,默认是 1000;
hbase.offheapcache.percentage:JVM 参数 -XX:MaxDirectMemorySize 的百分比值,默认是 0,即不开启堆外分配;
hbase.data.umask.enable:开启后,文件在 regionserver 写入时会 有权限相关设定,默认是 false 不开启;
hbase.data.umask:开启上面一项配置后,文件的权限 umask,默认是 000;
hbase.metrics.showTableName:是否为每个指标显示表名前缀,默认是 true;
hbase.metrics.exposeOperationTimes:是否进行关于操作在使用时间维度的指标报告,比如 GET PUT DELETE INCREMENT 等,默认是 true;
hbase.snapshot.enabled:是否允许 snapshot 被使用、存储和克隆,默认是 true;
hbase.snapshot.restore.take.failsafe.snapshot:在 restore 过程中,如果失败则启用 snapshot 替换,成功则删除掉 snapshot,默认开启 true;
hbase.snapshot.restore.failsafe.name:刚才所说过程中 snapshot 的名字,默认是 hbase-failsafe-{snapshot.name}-{restore.timestamp};
hbase.server.compactchecker.interval.multiplier:检查是否需要 compact 的时间间隔,一般情况是在比如 memstore flush 后或者其他事件触发 compact 的,但是有时也需要不同的 compact 策略,所以需要周期性的检查具体间隔 =hbase.server.compactchecker.interval.multiplier * hbase.server.thread.wakefrequency,默认 1000;
hbase.lease.recovery.timeout:在 dfs 租约超时时限,超时则放弃,默认是 900000;
hbase.lease.recovery.dfs.timeout:dfs 恢复租约调用的超时时限,默认是 64000;

Hadoop+HBase 搭建云存储总结 PDF https://www.linuxidc.com/Linux/2013-05/83844.htm
Ubuntu Server 14.04 下 Hbase 数据库安装  https://www.linuxidc.com/Linux/2016-05/131499.htm
HBase 结点之间时间不一致造成 regionserver 启动失败 https://www.linuxidc.com/Linux/2013-06/86655.htm
深入理解 HBase 架构原理 https://www.linuxidc.com/Linux/2017-01/139173.htm
Hadoop 集群安装 &HBase 实验环境搭建 https://www.linuxidc.com/Linux/2013-04/83560.htm
基于 Hadoop 集群的 HBase 集群的配置 https://www.linuxidc.com/Linux/2013-03/80815.htm‘
Hadoop 安装部署笔记之 -HBase 完全分布模式安装 https://www.linuxidc.com/Linux/2012-12/76947.htm
CentOS 6.4 下 HBase 集群安装  https://www.linuxidc.com/Linux/2016-11/137303.htm

HBase 的详细介绍:请点这里
HBase 的下载地址:请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计13604字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中