• [技术干货] 每日分享:技术实践-HBase增量数据迁移的方法
    原文地址:https://bbs.huaweicloud.com/blogs/259874 ## 概览 ● 本文主要是想谈一下如何给HBase做增量数据的迁移,也就是迁移实时数据。在之前的博文[HBase实用技巧:一种全量+增量数据的迁移方法-云社区-华为云 (huaweicloud.com)](https://bbs.huaweicloud.com/blogs/199399)中提到HBase增量数据迁移可以使用Replication的方式去做,但是在实际搬迁时,要给原集群设置Replication可能需要重启,这样会影响业务,我们需要做到不停机迁移才行。 ## WAL原理 正常情况下,HBase新增的数据都是有日志记录的,数据在落盘成HFile之前,任何一个Put和Delete操作都是记录日志并存放在WALs目录中,日志中包含了所有已经写入Memstore但还未Flush到HFile的更改(edits)。 默认情况下每个RegionServer只会写一个日志文件,该RS管理的所有region都在向这一个日志文件写入Put和Delete记录,直到日志文件大小达到128MB(由**hbase.regionserver.hlog.blocksize**设置)后roll出一个新的日志文件,总共可以roll出32个日志文件(由**hbase.regionserver.maxlogs**设置)。 如果日志文件未写满128MB,RegionServer间隔1小时也会roll出新一个新日志文件(由**hbase.regionserver.logroll.period**设置)。 当日志文件中涉及的所有region的记录都flush成HFile后,这个日志文件就会转移至oldWals目录下归档, Master没间隔10分钟(**hbase.master.cleaner.interval**)会检查oldWALs目录下的过期日志文件,当文件过期时会被Master清理掉,(日志过期时间由**hbase.master.logcleaner.ttl**控制)。 RegionServer默认间隔1小时(由**hbase.regionserver.optionalcacheflushinterval**设置)会对它管理的region做一次flush动作,所以WALs目录中一直会有新的日志文件生成,并伴随着老的日志文件移动到oldWALs目录中。 ## 迁移方式 ### 一、迁移oldWALs目录中的文件,使用WALPlayer回放 由于日志文件文件最终移动到oldWALs目录下,只需要写个脚本,定时检查oldWALs目录下是否有新文件生成,如果有文件,则move至其他目录,并使用WALPlayer工具对这个目录进行回放。 优点:无代码开发量,仅需脚本实现 缺点:无法做到实时,因为从数据写入到最后到达oldWAL目录会间隔很长时间。 ### 二、开发独立工具,解析日志文件,写入目的集群 在网上查找迁移方法的时候了解到了阿里开发了一个专门的HBase迁移工具,可以实现不停机。通过阅读其设计[BDS - HBase数据迁移同步方案的设计与实践](#)了解到阿里开发了应用去读取HBase的WAL日志文件并回放数据至目的集群。 优点:可以做到实时; 缺点:需要一定的代码开发量; 要做出这样一个工具,需要了解上面说的WAL文件归档的原理以及日志回放工具WALPlayer,下面简单说一下可以怎么去实现。 ### 独立工具实现 这里简单说明下如何去做这样一个工具,只介绍读取WAL方面,任务编排就不描述了 1. 定时扫描WALs目录获取所有的日志文件,这里按ServerName去分组获取,每个分组内根据WAL文件上的时间戳排序; ● 获取所有RS的ServerName ``` ClusterStatus clusterStatus = admin.getClusterStatus(); Collection serverNames = clusterStatus.getServers(); ``` ● 根据ServerName去组成Path获取日志 ``` Path rsWalPath = new Path(walPath, serverName.getServerName()); List hlogs = getFiles(fs, rsWalPath, Long.MIN_VALUE, Long.MAX_VALUE); ``` ● getFiles()参考HBase源码中WALInputFormat.java中的实现,可以指定时间范围去取日志文件 ``` private List getFiles(FileSystem fs, Path dir, long startTime, long endTime) throws IOException { List result = new ArrayList(); LOG.debug("Scanning " + dir.toString() + " for WAL files"); FileStatus[] files = fs.listStatus(dir); if (files == null) return Collections.emptyList(); for (FileStatus file : files) { if (file.isDirectory()) { // recurse into sub directories result.addAll(getFiles(fs, file.getPath(), startTime, endTime)); } else { String name = file.getPath().toString(); int idx = name.lastIndexOf('.'); if (idx > 0) { try { long fileStartTime = Long.parseLong(name.substring(idx+1)); if (fileStartTime
  • [上云迁移] 大数据迁移实践通过HDFS审计日志解析输出增量文件列表方案
     在进行大数据迁移过程中,往往老集群上还会不断地生产新文件,当老集群上整体数据量不大的时候,可以直接借助CDM的全量扫描+跳过重复文件的方式来迁移新增的文件。但是当老集群上数据量较大(比如>1PB以上,又存在大量小文件5千万以上甚至上亿个),CDM的全量扫描会耗费大量时间,搬迁效率较低。因此本文给出了一种借助HDFS审计日志解析来识别出增量的文件范围,然后将该列表输出给CDM,由CDM只按照列表中的文件进行迁移的方法,可以在增量文件迁移期间,避免全量扫描老集群的文件。 以下的操作步骤实际操作过程中可以考虑自行开发脚本自动定时运行。  操作方式:  将HDFS namenode审计日志定期上传到HDFS或OBS,由Hive分区表加载每天的日志信息。通过hive sql查询获取每天或者某个时间段之后的新增的文件列表。 (1)       按照每天一个文件夹方式,借助公有云的hdfs客户端或者Obsutil 上传HDFS namenode审计日志到公有云HDFS或者OBS路径下。hdfs dfs –put 2020-07-06 /user/audit/2020-07-06/ -r(2)       在公有云集群上创建Hive分区表,以日期作为主键,表名可以自己指定,当前演示的表名叫audit.  备注:由于HDFS审计日志格式不同集群可能配置输出不一致,表中各个字段需要根据实际HDFS审计日志的格式进行修改调整CREATE    TABLE `audit`(      `allow` String,       `ugi` string,       `ip` string,     `cmd` string,     `src` string,     `dst` string,     `perm` string,     `proto` string) partitioned by(`date_time` string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY   '\t' ; (3)       加载每天的分区数据到Hive表中 LOAD DATA INPATH   '/user/audit/2020-07-06/' INTO TABLE audit PARTITION (date_time =   '2020-07-06');(4)       查询某天,或者某个时间段的新增文件列表, 并将输出结果写到OBS路径上 // create 过滤掉.hive-staging 和_temporary临时文件  INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=create' and date_time>='2020-07-06';   // rename结果 INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(dst,'dst=(.*)',1) as output from audit where dst like   'dst=/apps/hive/warehouse%' and dst not rlike '.*/\.hive-staging_hive_.*' and   dst not rlike '.*/_.*' and cmd='cmd=rename' and date_time>='2020-07-06'   // apend INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging_hive_.*' and   src not rlike '.*/_.*' and cmd='cmd=append' and date_time>='2020-07-06';(5)       查找某天或某个时间段的删除文件列表SQL,并将输出结果存到OBS//查询删除语句delete INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=delete' and date_time>='2020-07-06';   //rename操作引起的删除 INSERT OVERWRITE DIRECTORY   'obs://obs-auditlog-chenkaifeng/auditlog/output-2020-07-08' select   regexp_extract(src,'src=(.*)',1) as output from audit where src like   'src=/apps/hive/warehouse%' and src not rlike '.*/\.hive-staging.*' and src   not rlike '.*/_.*' and cmd='cmd=rename' and date_time>='2020-07-06'; (6)配置CDM作业在CDM(华为云云迁移服务)作业上选择步骤4中输出的新增文件列表作为迁移的范围,进行新增文件迁移。
  • [技术干货] 每日分享:HBase 2.X版本的元数据修复及一种数据迁移方式
    在HBase 1.x中,经常会遇到元数据不一致的情况,这个时候使用HBCK的命令,可以快速修复元数据,让集群恢复正常。另外HBase数据迁移时,大家经常使用到一种迁移方式是:拷贝HBase的数据目录/hbase/data/default到新的集群,然后在新集群执行HBCK的命令让元数据重建,这种拷贝数据目录然后恢复元数据的方式是一种快速直接的手段。HBase升级到2.X版本之后,hbase hbck中的一些修复命令已经不再支持,包括,所以在HBase遇到集群故障,无法通过HBCK快速把元数据修复,通过HBase数据目录迁移的方式也就使用不了。在HBase 2.X的客户端执行hbase hbck时,常用的fixMeta命令已经不再支持。原文地址:https://bbs.huaweicloud.com/blogs/199075
  • [技术干货] 离线大数据迁移(四) Hive数据迁移到华为云MRS服务
    借助华为云云数据迁移服务CDM,可以完成线下IDC机房或者自建Hive数据迁移到华为云MRS服务。本文重点介绍如何通过使用CDM将Hive数据搬迁到MRS。详情请点击博文链接:https://bbs.huaweicloud.com/blogs/163269
  • 离线大数据迁移到MRS(二) 数据迁移到MRS集群网络连通说明
      进行大数据迁移时,需要保证老集群和新集群之间的网络互通,例如用Hadoop distcp命令跨集群拷贝数据时候需要所有DataNode是网络互通的。本文主要介绍根据不同的迁移场景打通两套集群之间的网络连接的方式。详情请点击博文链接:https://bbs.huaweicloud.com/blogs/161141
  • [技术干货] 离线大数据迁移到MRS(一)迁移到MRS前调研准备
     迁移前准备主要对当前现有大数据平台做一个信息统计,以便更好地进行迁移决策。  离线大数据迁移范围说明:针对离线大数据平台迁移,涉及到数据部分主要有HDFS文件数据迁移、 Hive 数据(表数据、元数据)迁移、HBase 数据迁移。当前以这三个组件的数据做重点介绍详情请点击博文链接:https://bbs.huaweicloud.com/blogs/160949
  • [上云迁移] 大数据迁移这些小事,如何做到迁移大数据到MRS
    看了这个,也能自己动手做大数据集群的数据迁移了,so easy~参考博文:离线大数据迁移到MRS(一)迁移到MRS前准备  https://bbs.huaweicloud.com/blogs/160949离线大数据迁移到MRS(二)数据迁移到MRS集群网络连通说明 https://bbs.huaweicloud.com/blogs/161141离线大数据迁移到MRS(三)通过CDM迁移HDFS数据到华为云MRS服务 https://bbs.huaweicloud.com/blogs/161144离线大数据迁移到MRS(四)Hive数据迁移到华为云MRS服务    https://bbs.huaweicloud.com/blogs/163269离线大数据迁移到MRS(五)HBase数据迁移到华为云MRS服务 https://bbs.huaweicloud.com/blogs/163312后续博客快马加鞭更新中~
  • [问题求助] 数据迁移
    如何快速将非华为云的数据迁移到MRS?
  • KUNPENG平台 Codis3.2.2移植安装指导文档
     1CODIS简介Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到Codis Proxy和连接原生的RedisServer没有明显的区别,有部分命令不支持。Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务。Codis由四部分组成:· Codis-proxy:实现redis协议,由于本身是无状态的,因此可以部署很多个节点· Codis-config :是codis的管理工具,包括添加/删除redis节点添加删除proxy节点,发起数据迁移等操作,自带httpserver,支持管理后台方式管理配置· Codis-server :是codis维护的redis分支,基于2.8.21分支,加入了slot的支持和原子的数据迁移指令; codis-proxy和codis-config只能和这个版本的redis交互才能正常运行· Zookeeper,用于codis集群元数据的存储,维护codis集群节点2环境信息2.1 环境信息类别子项版本获取地址OSCentOS7.5 Aarch64https://www.centos.org/download/服务器配置16U16GB50GB软件CODIS3.2.2https://codeload.github.com/CodisLabs/codis/tar.gz/3.2.2软件GO1.9.2https://dl.google.com/go/go1.9.2.linux-arm64.tar.gz软件Zookeeper3.4.14http://apache.fayea.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz3 软件移植3.1 环境准备:OS安装类型:CentOS-7.5-aarch64-1804。 注:操作系统安装使用最小简化版安装(如上图),其余步骤安装一般安装操作系统步骤即可。3.1.1 相关软件下载上传:1. 上传codis、go、zookeeper源码包至服务器目录下2. 上传CentOS-7.5-aarch64-Everything-1804.iso文件至服务器3.2 部署zookeeper3.2.1 安装java(三台机器)1. 配置本地yum源2. 安装java:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel –y,修改/etc/profile,添加javahome和path,如:· vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.aarch64export PATH=$JAVA_HOME/bin:$PATH修改后执行:source /etc/profile3.2.2 配置hosts(三台机器)vi /etc/hosts#########zookeeper#########172.31.96.86 192.168.0.159 zk01172.31.96.204 192.168.0.211 zk02172.31.96.226 192.168.0.117 zk033.2.3 关闭防火墙(三台机器)· systemctl stop firewalld· sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config3.2.4 获取安装软件(zk01)· cd /opt (zookeeper安装包所在目录)· tar -xf zookeeper-3.4.14.tar.gz· mv zookeeper-3.4.14 zookeeper3.2.5 创建dataDir和dataLogDir(zk01)· cd /opt/zookeeper· mkdir {data,logs}3.2.6 集群环境配置文件(zk01)· cd /opt/zookeeper/conf· cp -rp zoo_sample.cfg zoo.cfg· vi zoo.cfgtickTime=2000# tickTime : 服务器与客户端之间交互的基本时间单元(ms)initLimit=10# initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。syncLimit=5# syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。dataDir=/usr/local/zookeeper/data# dataDir : 保存zookeeper数据路径dataLogDir=/usr/local/zookeeper/logs# dataLogDir : 保存zookeeper日志路径,当此配置不存在时默认路径与dataDir一致,事务日志,会产生version2目录clientPort=2181# clientPort : 客户端访问zookeeper时经过服务器端时的端口号maxClientCnxns=60# maxClientCnxns : 限制连接到zookeeper服务器客户端的数量。server.1=zk01:2888:3888server.2=zk02:2888:3888server.3=zk03:2888:3888# server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。3.2.7 分发zookeeper到其他节点· scp –r /opt/zookeeper root@zk02:/opt· scp –r /opt/zookeeper root@zk03:/opt3.2.8 配置id到文件· ssh zk01 "echo '1' > /opt/zookeeper/data/myid"· ssh zk02 "echo '2' > /opt/zookeeper/data/myid"· ssh zk03 "echo '3' > /opt/zookeeper/data/myid"注意:此步骤极为重要,请务必保证myid中配置的值与zoo.cfg中server.id中的id对应。3.2.9 启动zookeeper(三台机器)启动zookeeper/opt/zookeeper/bin/zkServer.sh start检查是否正常启动Jps 出现QuorumPeerMain则证明java进程成功启动。/opt/zookeeper/bin/zkServer.sh status 出现此问题是由于我们部署的zookeeper为3个节点,只有当半数以上启动的时候,zookeeper才能正常运行,继续启动另外两台上的zookeeper,启动后,稍等片刻,再次查看:Zookeeper节点全部启动后,仍提示Error contacting,则需要查看zookeeper.out文件,针对具体问题进行具体解决。 3.3 安装go(三台机器)3.3.1 上传文件并解压· cd /usr/local/· tar -xf /opt/go1.9.2.linux-arm64.tar.gz3.3.2 配置环境变量vi /etc/profile,添加:export GOROOT=/usr/local/goexport GOPATH=/usr/local/go/goworkexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin执行:source /etc/profile3.3.3 查看版本go version 3.4 安装codis3.4.1 编译codis(三台机器)创建$GOPATH/src/github.com/CodisLabs目录:· mkdir -p $GOPATH/src/github.com/CodisLabs· cd $GOPATH/src/github.com/CodisLabs解压codis文件:· tar -xf /opt/codis-3.2.2.tar.gz编译codis:· mv codis-3.2.2/ codis· cd codis/· make3.4.2 提取有用程序(三台机器)· cd $GOPATH/src/github.com/CodisLabs/codis· mkdir /usr/local/codis· cp -rp bin admin config /usr/local/codis/3.4.3 部署codis-dashboard(zk01)1.修改配置文件· vi /usr/local/codis/config/dashboard.toml#coordinator_name = "filesystem"#coordinator_addr = "/tmp/codis"coordinator_name = "zookeeper"coordinator_addr = "zk01:2181,zk02:2181,zk03:2181"2.启动dashboard· cd /usr/local/codis· ./admin/codis-dashboard-admin.sh start· ss -tpnl |grep  18080# 可以查看log确认状态 /usr/local/codis/log/codis-dashboard.log.3.dashboard地址admin_addr = "0.0.0.0:18080"3.4.4 部署codis-fe管理后台(zk01)1.修改启动文件· vi /usr/local/codis/admin/codis-fe-admin.sh#COORDINATOR_NAME="filesystem"#COORDINATOR_ADDR="/tmp/codis"COORDINATOR_NAME="zookeeper"COORDINATOR_ADDR=" zk01:2181,zk02:2181,zk03:2181"2.启动fe· cd /usr/local/codis· ./admin/codis-fe-admin.sh start· ss -tpnl|grep 9090# 可以查看log确认状态 /usr/local/codis/log/codis-fe.log.3.后台管理地址CODIS_FE_ADDR="0.0.0.0:9090"3.4.5 部署codis-server加入集群(三台机器)部署3个节点的server zk01/zk02/zk031.配置bindvi /usr/local/codis/config/redis.conf将 bind 127.0.0.1 改为 bind 本地ip注意:此步骤必须使用本地ip,若使用127.0.0.1将导致codis-server无法添加   到集群,若使用浮动ip则无法正常启动codis-server2.所有server机器启动codis-server/usr/local/codis/admin/codis-server-admin.sh start3.fe管理后台添加1个group,group分配3个机器输入:group_id为1,点击new group: 输入:Codis Server Address 为zk01:6379 Gourp 为 1,点击Add Server。 重复上述添加步骤,完成后结果如下: 3.4.6 部署codis-proxy代理服务(三台机器)部署3个节点的server zk01/02/031.修改配置文件proxy.toml,zookeeper地址vi /usr/local/codis/config/proxy.toml#jodis_name = ""#jodis_addr = ""jodis_name = "zookeeper"jodis_addr = " zk01:2181,zk02:2181,zk03:2181"2.修改启动文件并启动,指向dashboard IP:PORTvi /usr/local/codis/admin/codis-proxy-admin.sh#CODIS_DASHBOARD_ADDR="127.0.0.1:18080"CODIS_DASHBOARD_ADDR="zk01:18080"/usr/local/codis/admin/codis-proxy-admin.sh  startss -tpnl |grep 190003.proxy启动默认会自动注册到dashboard中,也可以在fe中手动添加   4 参考信息 5 FAQ5.1 java.net.BindException: 无法指定被请求的地址 (Bind failed) 原因:出现此问题是由于进程无法指定被请求的地址。解决:修改每个zoo.cfg文件中对应的server.x=0.0.0.0:2888:3888,如: 修改后重启zookeeper,则报错消失。5.2 java.net.ConnectException: 拒绝连接 (Connection refused) 原因:对应节点的zookeeper未启动解决:启动对应节点的zookeeper,zookeeper的启动需要时间,稍等片刻,此报错消失。5.3 "Cause": "dial tcp 172.31.96.86:6379: getsockopt: connection refused" 现象:在fe管理界面添加codis-server节点时出现如上报错。在zk01服务器上查看codis-server进程,结果如下 解决:修改redis.conf文件,将 bind 127.0.0.1 改为 bind 本地ip。此步骤必须使用本地ip,若使用127.0.0.1将导致codis-server无法添加到集群,若使用浮动ip则无法正常启动codis-server。
  • [技术干货] 赛云数据&华为云,安全性能两手抓,数据搬“家”再也不用愁
    从前,人们靠烽火传军情、鸿雁传书、鱼传尺素、飞鸽传书等通讯方式作为行走社交江湖的必备技能。如今,人们足不出户,满天飞的讯息通过手机、电脑的传递充斥在我们生活方方面面。社会进步的背后是科技的迅猛发展,我们也许无法看见这波澜壮阔的时代细节,但仍可透过一滴水窥见其发展脉络。作为一家提供语音数据平台及物联网设备的科技公司—赛云数据,一直致力于在万物智联领域提供移动设备智能连接的系统解决方案和运营管理服务。随着业务的发展,赛云数据原先主要服务全球虚拟运营商的MVNE平台已不能满足日益增长的业务需求。在经过多方查找和考量评估,赛云数据最终选择了牵手华为云。在2019年把MVNE平台全部数据迁移部署到华为云上,其中包括业务系统和云数据库。而华为云数据库结合华为云服务的优势,为其量身打造了一套高安全、高可用、高性能的整体解决方案。“左右手”联合把控细节 让数据无处可逃从传统Oracle数据库切换到华为云数据库,要求数据不丢失、不影响业务、工作量最小。据此华为云数据库多番思量给出的解决方案是:左手PostgreSQL增强版(简称PG增强版),右手数据复制服务DRS,左右手共同发力,把控每一个细节,真正做到让数据无处可逃。• 一方面,PG增强版90%兼容Oracle,且搭配华为评估工具,可自主对Oracle生产库进行评估,分析迁移对象,给出改造建议,省心省力;• 另一方面,使用DRS数据迁移服务,将Oracle数据迁移至华为云PG增强版,安全又可靠。这样一来,既为企业客户上云降低了成本,也保障了客户数据的安全,一举两得。多重部署监控 让数据高枕无忧整个迁移过程需要保证数据库服务具备之前的可靠性、安全和高性能,且整个系统要求能够随着业务量的增加而实现快速弹性扩展,并支持分布式部署,结合SD-WAN专线,实现全球客户的高效、便捷接入。面对如此多诉求,华为云一点也不在怕的。一套部署监控看清所有问题套路,还你一个健康数据华为云在PG增强版上部署实际应用,进行大量系统测试,测试中不断发现问题,解决问题,最终保证全部业务正常运行,最后正式部署业务,迁移上线。重重部署,层层把控,确保业务零中断。下面让我们听听客户怎么说据赛云数据相关负责人表示: 此次上云大大简化了系统的扩展和维护,通过分布式部署可以方便接入全球客户,且极大减少了人力、物力成本,很大程度上降低了企业成本。华为云PG增强版Oracle兼容度高,改造工作量小,同时具备可靠性、安全性、高性能和可扩展性,极大保障了数据的管理与安全。华为云PG增强版内核团队专业能干,反应迅速,为我们数据顺利迁移保驾护航。工欲善其事必先利其器,我们的生活和工作正在呈几何式增长,选择好的平台和工具能起到事半功倍的作用。华为云数据库精耕细作多年,凭借着深厚的技术积淀和优质的产品服务成功助力赛云数据数字化转型,实现业务的新一轮升级。专业的事交给专业的人,您只需聚焦业务的研究和创新即可,华为云数据库在背后为您保驾护航。
  • [教程] 采用CDM进行HDFS到OBS的数据迁移
    1      背景介绍传统的Hadoop和Spark大数据生态,主要是以本地硬盘或云硬盘承载HDFS文件系统进行数据存储,但是存在成本高,扩容难等问题。当前华为云对象存储服务OBS可以与Hadoop和Spark大数据生态进行对接,为用户提供计算存储分离的大数据解决方案。为了实现用户数据平滑上云,可以采用华为云CDM服务进行HDFS到OBS的数据迁移。2      迁移背景和目标已存在集群一采用EVS存储HDFS格式数据,新建集群二采用OBS存储数据,需要将数据从集群一的HDFS迁移至集群二的OBS。3      迁移方法1、已搭建集群一(北京一)和集群二(华东),集群一采用EVS存储数据,集群二采用OBS存储数据2、在集群一构造Spark或者Hive的数据,例如,构造Hive表数据如下(1)创建DATABASECREATE DATABASE top_ods;(2)创建TABLECREATE TABLE `top_ods.claim_6yue_pt`(  `user_id` varchar(300),  `ese_id` int,   `task_id` varchar(100))partitioned by (tagdate int)ROW FORMAT DELIMITED FIELDS TERMINATED BY "|"STORED AS parquetfileTBLPROPERTIES ("orc.compression"="Snappy");insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '10' ,10,'10');insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '11' ,11,'11');insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '12' ,12,'12');insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '13' ,13,'13');insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '14' ,14,'14');insert into table top_ods.claim_6yue_pt partition(tagdate=1) values( '15' ,15,'15');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '20' ,20,'20');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '21' ,21,'21');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '22' ,22,'22');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '23' ,23,'23');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '24' ,24,'24');insert into table top_ods.claim_6yue_pt partition(tagdate=2) values( '25' ,25,'25');select * from top_ods.claim_6yue_pt;3、在集群二创建Spark或者Hive的新表,新表格式与源表的存储格式等属性要一致(1)创建DATABASECREATE DATABASE top_odstest location 'obs://obs-bigdata-hd-003/user/hive/warehouse/top_ods.db';(2)创建TABLE,新表格式与源表的存储格式等属性要一致CREATE TABLE `top_odstest.claim_6yue_pt`(  `user_id` varchar(300),  `ese_id` int,   `task_id` varchar(100))partitioned by (tagdate int)ROW FORMAT DELIMITED FIELDS TERMINATED BY "|"STORED AS parquetfileTBLPROPERTIES ("orc.compression"="Snappy");4、创建CDM任务,将集群一的HDFS数据迁移至集群二的OBS(1)创建CDM集群(华东),跨Region需要绑定公网弹性IP(2)配置连接管理,一个连接使用Apache HDFS,另一个连接使用对象存储服务(OBS)备注:集群一的所有节点需配置公网弹性IP,并且Apache HDFS连接中的IP与主机名映射要填写所有集群一的主机XX.XX.XX.XX ecs-bigdata-hdtest-0000.novalocalXX.XX.XX.XX ecs-bigdata-hdtest-0001.novalocalXX.XX.XX.XX ecs-bigdata-hdtest-0002.novalocalXX.XX.XX.XX ecs-bigdata-hdtest-0003.novalocal(3)配置作业管理,源连接使用HDFS连接,目标连接使用OBS连接,文件格式使用二进制格式(4)配置完成后,运行作业进行数据迁移5、迁移完成后,在集群二恢复Hive表数据,即可查询数据成功。恢复Hive表数据:MSCK REPAIR TABLE top_odstest.claim_6yue_pt;查询Hive表数据:select * from top_odstest.claim_6yue_pt;
  • [行业资讯] 当企业上云成为大势所趋,华为云DRS有哪些技术闪光点?
    企业上云成为近年来的热门话题,很多企业甚至把企业上云看成是企业数字化转型的必经之路。然而企业上云从何处入手? 如何在业务不中断或者计划的时间窗口内成功迁云?如何降低数据迁移过程中的复杂性?究其根本企业上云最大的难题之一是数据库的数据迁移。为客户解决的这个难题,是华为云数据库服务团队持续不断地在数据迁移领域进行技术研究和创新的重要驱动力。数据复制服务DRS 的定位我们都知道,华为在云数据库领域的产品已形成了系列,包括SQL、NoSQL的等等。但是很多人不知道的是,华为云还有一款重量级的产品:华为云数据复制服务DRS(Data Replication Service,简称为 DRS)。什么是DRS?从概念来看,数据复制服务DRS是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。DRS围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助用户减少数据传输成本。简单理解,DRS是企业数据上云的“绿色管道”,能确保企业的关键数据一键迁云。具体而言,DRS有两个重要使命。第一,帮助企业DBA或者是CTO,以快速、简单的方式把数据库安全地迁移到云上。企业上云的第一个门槛就是数据迁移,在传统云下做数据库迁移会面临很多风险与挑战,例如业务中断、数据丢失、迁移失败等。虽然传统意义上来看数据库迁移通常很难,在云上有了很大的变化,借助华为云DRS,用户可有效避免云迁移带来的各种复杂问题,为客户成功迁云建立信心。用户只需要轻松几步,分钟级就可以创建好迁移任务;第二个使命,DRS可以解决数据孤岛、数据流、灾备保护等问题,让数据库之间的关键数据按照用户业务的需要驱动,实时流动起来,也就是服务于数据库的同步、灾备等场景下客户的各类需求,是云数据库整体方案成功落地的得力助手。 五大技术亮点降低数据流通的复杂性对于金融行业、政府机构以及自然灾害频发的沿海地区来说,对于异地灾备需求非常强烈。用户要进行两地三中心的容灾部署,最关心的问题就是会不会丢数据、异地传输多长时间能达到百里之外。围绕这些问题,DRS通过以下五个核心能力来更好地满足用户期望。智能压缩:长距离的异地传输或者备份时网络带宽不稳定是主要的问题,DRS采用智能压缩的思路,在传输数据量大小决定压缩与否,面对带宽不足时,有效保障数据可送达异地。批量发送:高频率的数据库操作,在局域网内性能可能不是问题。但远距离传输需要“多层握手”,网络延时从毫秒级变成几十毫秒级,这种时延差异在高频率操作的放大下,延时可能会由原来的几秒变成了几十秒,导致数据传输到异地实时性大幅下降,DRS可以通过批量发送功能减少反复握手的问题,有效提升异地数据传输的实时性。日志回放:DRS收到数据库的日志是有序串行的,按照原顺序回放将会形成瓶颈,使得异地数据远远落后于源数据,并行回放这些日志是提升数据传输实时性的关键技术。当然随意地并行会出现数据错乱问题。DRS采用并行判断模块,可以高效梳理哪些行级数据能并行执行,较大程度上提升了数据实时性。并行抓取:DRS并行地抓取变化的数据,最大程度保护数据在灾难发生时的损失。热点合并:在短时间之内频繁的对同一数据进行反复操作,DRS可以合并这些操作,这个过程可以简化为最终一致数据发送至异地数据,使得满足该类场景下的数据传输性得到提升。通过上述技术组合创新,华为云DRS给用户带来了综合的服务体验提升。 预检查功能确保企业迁云成功华为云DRS有许多具体的技术措施,其中关键的一个技术是预检查,华为云把所有成功项目的经验和要点积累固化到程序的检查项中,成熟完善的预检查系统,DRS可以明确提示客户哪一项环境设置会影响迁移,应该如何调整。成功通过一系列的精准检查后,可以确定迁云成功。值得一提的是,华为云DRS采用统一自动的逻辑,从整体上使得每个用户使用DRS迁移效果一致。例如:大量数据传输时,由网络异常造成的频繁地传输中断,DRS能为用户自动重连,快速定位识别到具体的断点,使得数据能够准确地续传。为了避免人为导致的误操作,华为云DRS在选择目标端的时候,会建议目标数据库只能读、不可写,这样能有效避免人为因素导致的数据不一致性、数据错乱、数据丢失等问题。为了使用户放心切换业务至云数据库,用户希望校验数据是否丢失,直观的方式是做对比,华为云DRS可以做对象级别的对比,包括有多少个表、多少个索引等,所有的对象都一致性一目了然。同时DRS还有两种数据对比能力:行级别和内容对比,行对比将对行总数进行两边一致性的校对,可以帮助用户清楚的看到数据行数是否一致; 内容对比是完整地将表与表全部的值校对一遍。 华为DRS将会持续的优化算法提升对比的效率。正是华为云DRS这一系列的措施,确保了企业成功迁云。企业上云,或者说在选择云平台的时候,可以从云平台三方面考量入手:数据库的技术与安全性、云平台的中立性和稳定性以及云平台的企业级业务成熟度。● 数据库技术和安全方面:华为在数据库领域有多年技术的沉淀,并一脉传承到云平台,国际化和企业级的安全合规设计上已践行多年,在专业的数据安全领域,华为云提供的数据库安全云服务,为云上数据库保驾护航。● 云平台的中立性和稳定性:华为云恪守“黑土地”思维,服务企业的基因驱动着云平台的长期发展。● 云平台的企业级业务成熟度:华为具有丰富的企业级服务经验积累。当然,对于广大CTO/DA/DBA等用户来说,成功走向云端有很多路径,无论通过非核心的外围业务系统来做一些尝试,还是先从没有历史负担的新业务开始,在这个过程中,DRS都能帮助用户更安心,更放心走向云端。
  • [技术干货] 【番外5】好用的数据迁移工具到底多重要?
    云开年采购季火热进行中!免费抽奖,人人有礼,消费满额送mate20,爆款数据库低至5.8 折 火热抢购,了解详情,请点击下面链接。https://activity.huaweicloud.com/2019Feb-promotion/index.html?utm_source=wechat&utm_medium=officialaccount&utm_campaign=2019feb_promotion_0322&utm_content=sjk_xcp
  • [技术干货] 如何使用LogStash将数据迁移到Elasticsearch
    摘要:结合华为云,介绍如何使用Logstash将数据迁往Elasticsearch(ES),为后续提供指导。一、背景首先介绍下ES常用的数据导入工具,以及华为云上ES的应用场景:1)常用数据导入方法:将数据导入到ES的方法较多,常用的工具与方法包括:Elasticsearch-dump,通过Snapshot,Beats以及LogStash等等;其中Elasticsearch-dump主要用于ES集群间导入导出数据,Snapshot主要用于ES集群间数据的备份与恢复,Beats与LogStash作为独立的ETL工具,其应用场景较广泛。2)华为云ES应用场景:华为云上的ES服务运行在独立的VPC中,通过外网无法直接访问,因此其主要使用场景是在ES集群所在VPC下申请一台ECS并绑定弹性IP地址(用于部署业务应用),然后客户通过EIP访问业务应用,业务应用程序再调用ES集群。具体如下图:二、具体使用场景【conf文件组成】使用Logstash将数据导入到ES集群,其关键在于如何配置其conf文件。一般而言,Logstash的配置文件包括3个部分,分别是input,filter,以及output;其中input用于配置数据源,filter用于对数据进行ETL预处理,output用于配置目的端。【运行Logstash】当配置好conf文件后(假设其名称为logstash-simple.conf),接下来在logstash目录下,通过如下命令可启动数据导入:./bin/logstash -f logstash-simple.conf;【具体使用场景】接下来我们结合几个具体需求来介绍如何配置conf文件:1)如何指定导入的index与type名称?使用Logstash导入数据的过程中,如果没有指定index以及type,默认使用logstash-%{+YYYY.MM.dd}以及logs;如果想指定index以及type,可以在output中增加如下内容,使得index以myindex开头,type为mytype:output {                    elasticsearch {                                        hosts => "192.168.0.65:9200"                                        index => "myindex-%{+YYYY.MM.dd}"                                        document_type => "mytype"                    }}2)如何删除导入过程中产生的新字段?使用Logstash在进行数据导入的过程中,默认会添加两个字段@version,@timestamp;如果在应用中不想要这两这个字段,可以在filter中增加如下内容:filter {                    mutate {                                        remove_field => ["@version"," @timestamp"]                    }}3)如何使得索引名称与当前时区一致?使用Logstash在进行数据导入的过程中,index名称后缀默认为@timestamp字段所对应的UTC时间,该设计的初衷是为了统一不同时区的查询(不同时区的查询经过Kibana首先会转化为UTC时间,然后Kibana再向ES发送查询请求,这样不同时区查询过去一段时间的数据时,获得的结果是一样的),但这种情况下如果要查询本地时间某天的数据,则需要遍历Day-1,Day以及Day+1 3天的index;为了兼顾统一查询以及查询效率,可以在filter中增加如下内容,这里假设源数据中存在一个时间字段timestamp,并且其格式为dd/MMM/yyyy:HH:mm:ss +0800(其他格式类似),那么通过如下命令可以将timestamp字段向前滚动8个小时,然后赋值给@timestamp,从而使得index名称的后缀为东八区的时间,同时通过使用timestamp进行统计分析,仍然可以统一查询。filter {                    date {                                        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss +0800"]                                        locale => "en"                                        timezone => "UTC"                    }}4)如何将外网数据导入到华为云ES,并控制数据导入速率?如前所述,将外网数据导入到华为云ES,需要一台带有EIP的ECS作为中转,此时根据Logstash部署的位置,可分为两种场景:一种是Logstash部署在外网,一种是Logstash部署在ECS上。a) 当Logstash部署在外网时,首先需要申请一台与ES集群在同一VPC下的ECS,并开放其安全组的9200外网访问权限;然后为该ECS绑定一个EIP,并限制该EIP的网络带宽;接下来在ECS上做一个端口映射,具体命令如下,然后输入root用户密码完成端口转发(其中9200为EIP接入端口,192.168.0.66:9200为ES集群接入点,192.168.0.200为ECS本机的内网ip地址):ssh -g -L 9200:192.168.0.66:9200 -N -f [email]root@192.168.0.200[/email]最后配置Logstash的conf文件output部分如下,然后运行Logstash开始数据导入过程:output {                    elasticsearch {                                        hosts => "EIP:9200"                    }}b) 当Logstash部署在ECS上时,首先需要确保ES集群与ECS在同一VPC下,并且已开放安全组的9200外网访问权限;然后为该ECS绑定一个EIP,并限制该EIP的网络带宽;最后按常规方式配置conf文件,并运行Logstash开始数据导入过程(不再需要在ECS上做端口映射)。三、拓展思考上面给大家介绍了如何使用Logstash将数据导入到ES集群,此外Logstash还可以用于ES集群内部index的变换处理,包括index合并、过滤某些字段等等。另外如果是在两个ES集群间互导数据,可通过指定document_id防止重复导入数据。
  • [技术干货] 【番外2】哪些关键参数影响数据迁移?
    想了解更多内容,请扫码关注【HW云数据库】
总条数:66 到第
上滑加载中