使用tungsten将mysql的数据同步到hadoop

  • 背景

线上有很多的数据库在运行,后台需要一个分析用户行为的数据仓库。目前比较流行的是mysql和hadoop平台。

现在的问题是,如何将线上的mysql数据实时的同步到hadoop中,以供分析。这篇文章就是利用tungsten-replicator来实现。

  • 环境

由于tungsten-replicator依赖ruby和gem。需要安装

yum install ruby
yum install rubygems
gem install json

其中json模块可能因为gfw的原因,需要手动下载到本地,然后使用gem本地安装
yum install ruby-develgem install --local json-xxx.gem
 

安装好mysql,地址是 192.168.12.223:3306 ,数据库配置好权限

安装好hadoop 2.4 ,hdfs的地址是 192.168.12.221:9000

  • 配置

先在mysql的机器上,进入到tungsten-replicator目录下执行,并且启动tungsten,可以使用trepctl thl 等命令查看服务的状态

./tools/tpm install mysql1 --master=192.168.12.223 --install-directory=/user/app/tungsten/mysql1 --datasource-mysql-conf=/user/data/mysql_data/my-3306.cnf --replication-user=stats --replication-password=stats_dh5 --enable-heterogenous-master=true --net-ssh-option=port=20460  --property=replicator.filter.pkey.addColumnsToDeletes=true --property=replicator.filter.pkey.addPkeyToInserts=true
mysql1/tungsten/cluster-home/bin/startall 

到hadoop的机器上,,进入到tungsten-replicator目录下执行,并且启动tungsten,可以使用trepctl thl 等命令查看服务的状态

./tools/tpm install hadoop1 --batch-enabled=true --batch-load-language=js --batch-load-template=hadoop --datasource-type=file --install-directory=/user/app/tungsten/hadoop1 --java-file-encoding=UTF8 --java-user-timezone=GMT --master=192.168.12.223 --members=192.168.12.221 --property=replicator.datasource.applier.csvType=hive --property=replicator.stage.q-to-dbms.blockCommitInterval=1s --property=replicator.stage.q-to-dbms.blockCommitRowCount=1000 --skip-validation-check=DatasourceDBPort --skip-validation-check=DirectDatasourceDBPort --skip-validation-check=HostsFileCheck --skip-validation-check=InstallerMasterSlaveCheck --skip-validation-check=ReplicationServicePipelines --rmi-port=25550 

可以在hadoop的文件系统上,查看对应的目录下是否生成了mysql对应的库。如下所示:

└── user
......
......
    └── tungsten
        └── staging
            └── hadoop1
                └── db1
                    ├── x1
                    │   ├── x1-14.csv
                    │   └── x1-3.csv
                    └── x2
                        ├── x2-115.csv
                        ├── x2-15.csv
                        ├── x2-16.csv
                        ├── x2-17.csv
                        └── x2-18.csv

最后还需要将staging的数据merge到hive中,建立hive的表结构,并且让数据能够被hive查询,这里使用continuent-tools-hadoop工具里面的load-reduce-check脚本,在使用之前,先需要配置好hive的环境变量,并且启动hiveservice在10000端口上。拷贝如下的jar包到bristlecone的lib-ext目录

 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/hive-jdbc-0.13.1.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/hive-exec-0.13.1.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/hive-service-0.13.1.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/httpclient-4.2.5.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/commons-httpclient-3.0.1.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hive/apache-hive-0.13.1-bin/lib/httpcore-4.2.5.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hadoop/hadoop-2.4.0-onenode/share/hadoop/common/hadoop-common-2.4.0.jar /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/
 cp -v /user/app/hadoop/hadoop-2.4.0-onenode/share/hadoop/common/lib/slf4j-* /user/app/tungsten/hadoop1/tungsten/bristlecone/lib-ext/

然后执行如下的命令:

第一次,或者以后增加了表,或者表结构发生了变化
./bin/load-reduce-check -v -U jdbc:mysql:thin://192.168.12.223:3306/ -u stats -p stats_dh5 --schema db1 --service=hadoop1 -r /user/app/tungsten/hadoop1  --no-compare

如果表结构没有发生变化,只需要重新装载数据的话,可以执行如下的命令
./bin/load-reduce-check -v -U jdbc:mysql:thin://192.168.12.223:3306/ -u stats -p stats_dh5 --schema db1 --service=hadoop1 -r /user/app/tungsten/hadoop1  --no-base-ddl --no-staging-ddl --no-meta

只想比较数据,不过貌似compare很卡
./bin/load-reduce-check -v -U jdbc:mysql:thin://192.168.12.223:3306/ -u stats -p stats_dh5 --schema db1 --service=hadoop1 -r /user/app/tungsten/hadoop1  --no-base-ddl --no-staging-ddl --no-meta --no-materialize
  • 参考

tungsten-replicator-3.0.pdf   中的  3.4. Deploying MySQL to Hadoop Replication

https://github.com/continuent/continuent-tools-hadoop

时间: 2024-10-24 08:26:57

使用tungsten将mysql的数据同步到hadoop的相关文章

Goldengate完成Mysql到Mysql的数据同步

文档参考地址:http://blog.csdn.net/u010587433/article/details/49305019 需求: 使用Goldengate完成Mysql到Mysql的数据同步,源库的o2m-mc库同步到目标库的gmdc库,表名GMQDSJSP,换句话说,就是不同数据库之间表之间数据的同步 实验准备: 系统: CentOS 7.2 mysql版本 :  5.7-12 mysql-1 : 192.168.68.13     mysql-2:192.168.68.14 1.初始化

怎么通过 Mysql 实现数据同步呢?

怎么使 mysql 数据同步先假设有主机 A 和 B ( linux 系统),主机 A 的 IP 分别是 1.2.3.4 (当然,也可以是动态的),主机 B 的 IP 是 5.6.7.8 .两个主机都装上了php+Mysql ,现在操作的是主机 A 上的资料,如果另外一个主机 B 想跟 A 的资料进行同步,应该怎么做呢?  OK,我们现在就动手.  首先,如果要想两个主机间的资料同步,一种方法就是主机 A 往主机 B 送资料,另外一种主法就是主机 B 到主机 A 上拿资料,因为 A 的 IP 是

MySQL主从数据同步延时分析

一.MySQL数据库主从同步延迟                                                              要了解MySQL数据库主从同步延迟原理,我们先从MySQL的数据库主从复制原理说起: MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高. Slave的IO Thread线程从主库中bin log中读取取日志. Slave的SQL Thread线程将主库的DDL和D

DataX实现HDFS与MySQL之间数据同步

本案例仅适用于HDFS与MySQL之间的数据同步实现. 1.  在编译安装之前注意将release下面的setSharePath方法中的路径改为你自己的安装路径,笔者的为/home/woody/datax/libs. 2.  rpm打包之前,要修改*.spec文件中的路径,dataxpath,此外可能还需要注解掉部分赋值文件的代码,如cp  –r ${OLDPWD}****.properties ****.conf,在engine.spec中的jar包复制语句也要注解掉. 3.  注意将hdfs

MySQL 主从数据同步配置

1:需要两台MySQL服务器,如:master:192.168.1.120slave:192.168.1.121确定MySQL的版本是相同的,可以登录到MySQL CLI界面,输入:select version();此实验MySQL版本是5.6的 2:主服务器要授权从服务器,登录到master的MySQL CLI,输入:grant all on *.* to "test"@"%" identified by '123456'; 3:配置主从服务器的bin-log日志

使用 tungsten-replicator4 实现 mysql -- > monogo 数据同步

tungsten-replicator 技术交流群:376068310 一 规划主机: 192.168.67.128 #mysql主机 (事先安装好,安装步骤详见 前一篇博客 ) 192.168.67.129 #mongodb主机 (事先安装好,安装步骤详见 前一篇博客) 二 前置条件:(128和129) 1 创建tungsten用户 [[email protected] ~] useradd tungsten [[email protected] ~] passwd tungsten 2 将t

MYSQL数据库间同步数据

http://blog.csdn.net/swandy45/article/details/6982421 环境要求: Windows 操作系统 需要Mysql 3.23.15以后的版本. 假设数据库A为主机,数据库B为从机(A向B提供同步服务,即B中的数据来自A) A机器:IP=10.10.151.166 B机器:IP=10.10.151.156 下面看单向同步的配置步骤: 1         在机器A中建立一个新的数据库,sql语句: [sql] view plain copy CREATE

【转】mysql数据库读写分离数据同步

转载请注明来源:mysql数据库读写分离数据同步 mysql数据库读写分离数据同步 我是用了两个xp(一个主的,一个从的)的系统测试成功的,linux系统我也做测试了,没有成功,不过我想我所遇到的问题是同一个问题,xp下的可以成功,linux下的应该也可以成功,稍候会测试,然后更新结果! PS:刚测试了下linux 可以同步成功,主服务器是xp,从服务器是centos,可以成功. 例: A机器 192.168.0.2 B机器 192.168.0.3 两个机器可以ping通,互相访问 先配置主服务

高可用的并行MySQL数据同步及分布式

首先聊聊MySQL的数据分布式,目前最为常用的就是Replication(复制)技术.基于此技术外延开来有很多中架构,分类归结为如下: 1.树状结构(Master,Backup-Master,Slaves) 这种结构是目前Web系统用的最为通用的一种.整个系统有1个写入/更新点,即Master:Master-Backup和Slaves都是Replication的Master从库:多级Slave的原因是为了数据过滤和节省网络资源. 2.环状结构(Master-Master,Slaves) Dual