mysql tungsten_使用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-devel

gem 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件项目立项书_2019年度上海市软件和集成电路产业发展专项资金项目立项

上海艾瑞德生物科技有限公司荣获2019年上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目立项!上海艾瑞德生物科技有限公司的【医用体外诊断动态光场图像采集电子模块的研发及产业化】喜获2019年上海市软件和集成电路产业发展专项资金(集成电路…

line-height:1.5和line-height:150%的区别

1. 给你个数,孩子自己算吧 line-height:1.5 父元素设置line-height:1.5会直接继承给子元素,子元素根据自己的font-size再去计算子元素自己的line-height。 2.老子说多大就是多大 line-height:150% 父元素设置line-height:150%是计算好了line-height值&…

mysql提供了表示日期和时间的数据类型_MySQL数据类型 - 日期和时间类型(1)

1.日期和时间数据类型语法用于表示时间值的日期和时间数据类型是DATE, TIME, DATETIME, TIMESTAMP和 YEAR。对于TIME, DATETIME和 TIMESTAMP值,MySQL支持小数秒,精度可达微秒(6位数)。要定义包含小数秒部分的列,请使用语法type_name(fsp)&…

软件质量保证计划_CMMI V2.0 精讲之“过程质量保证”

过程质量保证(PROCESS QUALITY ASSURANCE, PQA)目的:验证并改进已执行的过程和所产生的工作产品的质量。价值:增强过程使用和改进的一致性,以最大限度地提高业务效益和客户满意度。实践概述第1级PQA 1.1识别并解决过程和工作产品问题。第2级P…

mysql gzip_在mysql中存储GZIP:ed文本?

Is it a common thing for bigger applications and databases to GZIP text data before inserting it to the database?Ill guess that any full-text search on the actual text field will not be working before unzipping it again?解决方案Ive not seen this done muc…

07.30《jQuery》——1.1DOM对和jQuery对象的转化

1.dom对象--->jQuery对象 $(DOM对象):是把DOM对象转化成JQuery对象 演示代码 //1.dom对象---->jQuery对象 var div1 document.getElementById("div1"); var $div1 $(div1); alert($div1.html());// $div1.width() jQuery对象实质就是map、关联数组 Dom对象是…

mysql数据库持续_MySql数据库--持续记录ing

1 基本,引擎,数据类型,运算1.1 基本操作启动:net start mysql停止:net stop mysql连接: mysql –uroot -h127.0.0.1 -proot断开连接:quit; 或 exit;查询支持的存储引擎:show engines; 或 show v…

html 分页_JQuery堪称完美的分页函数

演示效果&#xff1a;html部分&#xff08;引入jquery.js&#xff09;<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>jQuery简单的分页插件</title> </head><link rel"stylesheet" href"…

mysql 8.0.12解压版安装教程_mysql 8.0.12 解压版安装教程

本文为大家分享了mysql 8.0.12 解压版安装教程&#xff0c;供大家参考&#xff0c;具体内容如下1、首先在官网上下载mysql8.0.12的压缩包&#xff1a;下载地址2、下载成功后解压到任意目录&#xff0c;比如我的是E:\download\mysql-8.0.12-winx64&#xff1b;3、配置环境变量&a…

python 修改图片尺寸_python 批量修改图片大小

一个文件夹下面有好多图片格式是jpg大小是1920*1080&#xff0c;把它们处理成1280*720并按原先图片的名保存在另一路径下 这里首先要找到给定路径下所有的图片文件&#xff0c;然后在修改图片文件的大小&#xff0c;这里用到PIL和glob两个库&#xff1a; # -*- coding: utf-8 -…

简洁又快速地处理集合——Java8 Stream(下)

上一篇文章我讲解 Stream 流的基本原理&#xff0c;以及它与集合的区别关系&#xff0c;讲了那么多抽象的&#xff0c;本篇文章我们开始实战&#xff0c;讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集合——Java8 Stream&#xf…

java if,if...else...的应用

import java.util.Scanner; public class Dome1{public static void main (String []args ){Scanner input new Scanner (System.in );int day 0;System.out.print("请输入1~7整数:");day input.nextInt();if(day1){System.out.print("星期一");}else if…

mac mysql安装失败_Mac mysql安装失败解决方法

在mac终端通过命令安装mysql&#xff0c;提示错误&#xff0c;解决方法如下&#xff1a;(1)安装命令&#xff1a;brew install mysql(2)提示错误&#xff1a;Error:Could not create /usr/local/CellarCheck you have permission to write to /usr/local解决方法&#xff1a;su…

python入口函数的作用_python之函数中参数的作用域

学编程究竟学的是什么呢&#xff1f;在写文章的这几天也一直在思考这个问题——恐怕这也是接下来的几年一直会去思考的问题。这个问题的答案也会指导我的方法论&#xff0c;所以索性整顿一下。 现阶段我的回答是&#xff0c;发现需求&#xff0c;然后解决。 最大的需求无非是完…

容器——归纳数据

一、什么是容器 容器是 Python 中的一种特殊类型的数据&#xff0c;是用来装载数据的&#xff0c;同时它也被泛称为数据结构。 我们使用容器的目的在于&#xff0c;把它当成数据工具来使用&#xff0c;而工具的使用方式又和工具的使用场景以及我们解决问题的思维密不可分。正如…

idea lombok 离线安装_Lombok与IntelliJ IDEA干了一架,完胜

我相信前段时间&#xff0c;有更新IDEA到2020.2版本的同学&#xff0c;在安装Lombok的过程中&#xff0c;肯定遇到与Lombok无法兼容的问题&#xff0c;并且报错&#xff1a;Caused by: com.intellij.psi.PsiInvalidElementAccessException: Element: class de.plushnikov.intel…

jquery设置宽_JavaScript学习笔记(三十二) jQuery(中)

jQuery昨天讲了 jQuery 的基本选择器筛选器和属性操作今天来说一些 jQuery 别的东西元素操作创建一个元素var div $()内部插入元素// 向 div 元素中插入一个 p 元素&#xff0c;放在最后$(div).append($())// 把 p 元素插入到 div 中去&#xff0c;放在最后$(hello).appendTo(…

面向对象--内置方法

__名字__ 类中的特殊方法\内置方法 双下方法 魔术方法 magic_method 类中的每一个双下方法都有它自己的特殊意义 1.__call__ 相当于 对象() class A:def __call__(self, *args, **kwargs):print(执行call方法了) a A() a() # 对象() 相当于调用__call__方法 A()()…

python自动化框架测试实操_自动化框架之 python+selenium+pytest

1.概述 selenium&#xff1a; 基于JavaScript代码库的自动化测试框架&#xff0c;通过脚本语言&#xff0c;模拟用户行为操作&#xff0c;最接近用户真实场景&#xff0c;实现对web自动测试。 Selenium&#xff0c;是目前的最火爆企业最主流的webUI自动化框架 pytest: pytest是…

mysql 关联查询慢_mysql慢查询语句分析总结

我们经常会接触到MySQL&#xff0c;也经常会遇到一些MySQL的性能问题。我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题通过SHOW FULL PROCESSLIST查看问题SHOW FULL PROCESSLIST相当于select * from information_schema.processlist可以列出正在运行的连…