滴滴云使用 DataX 实现 Hive 与 MySQL 数据传输

1. DataX 简介:

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SQLServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。本例中将使用 DataX 实现 Hive 与MySQL之间的数据传输。

本例中所使用的资源为三台 2 核 4G 内存,40G SSD 硬盘的 DC2,EIP 带宽为 1M。
DataC:10.254.125.48
Hive:10.254.237.61
MySQL:10.254.116.249

此处 IP 为云主机内网 IP,方便三台主机之间内网通信,而下载文件或外部访问则需 EIP,即外网 IP 或弹性 IP。有关 滴滴云 EIP 的使用请参考以下链接:https://help.didiyun.com/hc/kb/section/1035272/

2. 在 Hive 节点安装 Hadoop 2.7.7+Hive 2.3.4

  • 滴滴云 主机出于安全考虑,默认不能通过 root 用户直接登录,需要先用 dc2-user 登录,让后用 sudo su 切换至 root。本例中默认全部以 dc2-user 用户运行命令,Hadoop 默认用户同样为 dc2-user。


  • 设置免密登录,为 dc2-user 生成公钥。

输入以下命令将生成的公钥复制到本机:

  ssh - copy - id   - i   $ HOME / . ssh / id_rsa . pub  dc2 - user @ localhost

  • 配置 Java 环境

  1. 下载 JDK

  1. 配置 Java 变量

  1. 使环境变量生效

  source   / etc / profile

  1. 查看 Java 版本

出现以上输出,说明 Java 环境已经配置成功。

  • 安装 Hadoop

节点下载 Hadoop 2.7.7 并解压

在 /home/dc2-user/hadoop-2.7.7/etc/hadoop 下需要配置的5个文件分别是 hadoop-env.sh、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml

  1. hadoop-env.sh添加如下内容

  1. core-site.xml

  1. hdfs-site.xml

  1. yarn-site.xml

  1. mapred-site.xml

  • 配置 Hadoop 环境变量

使环境变量生效

  source   / etc / profile

输入 haoop version 看是否有输出,验证环境变量是否生效

  • 格式化 HDFS

  / home / dc2 - user / hadoop - 2.7.7 / bin / hdfs  namenode   - format  testCluster

  • 开启服务

  / home / dc2 - user / hadoop - 2.7.7 / sbin / start - dfs . sh

  / home / dc2 - user / hadoop - 2.7.7 / sbin / start - yarn . sh

  • 查看服务是否已启动

出现以上输出,说明服务已经正常启动,可以通过 Hive 的公网 IP 访问 DFS 的 web 页面,注意要打开安全组的 50070 端口,关于滴滴云安全组的使用请参考以下链接:https://help.didiyun.com/hc/kb/article/1091031/

注:公网开放 50070 端口可能会被黑客利用植入木马,因此建议在安全组中限制可访问的来源 IP,或者不在安全组中开放此端口。

3. Hive 2.3.4 安装和配置

Hive 是基于 Hadoop 的一个数据仓库,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能,Hive 底层将SQL 语句转化为 MapReduce 任务运行。
– 下载 Hive 2.3.4 到 Master 的 /home/dc2-user 并解压

  wget  http : //mirror.bit.edu.cn/apache/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz

  tar  zxvf  apache - hive - 2.3.4 - bin . tar . gz

  • 设置 Hive 环境变量

编辑 /etc/profile.d/hive.sh 文件, 在其中添加以下内容:

使环境变量生效:

  source   / etc / profile

  • 配置 Hive

重命名以下配置文件:

修改 hive-env.sh:

修改 hive-site.xml
修改对应属性的 value 值

  • 配置 Hive Metastore

Hive Metastore 是用来获取 Hive 表和分区的元数据,本例中使用 MariaDB 来存储此类元数据。
下载 mysql-connector-java-5.1.40-bin.jar 放入 $HIVE_HOME/lib 下并在 hive-site.xml 中添加 MySQL 数据库连接信息。

安装 MySQL,本例中使用的是 MariaDB。

  sudo  yum  install   - y   mariadb - server

  sudo  systemctl  start  mariadb

登录 MySQL,初始无密码,创建 Hive 用户并设置密码。

  • 运行 Hive

运行 Hive 之前必须保证 HDFS 已经启动,可以使用 start-dfs.sh 来启动,如果之前安装 Hadoop 已启动,此步骤可略过。
从 Hive 2.1 版本开始, 在启动 Hive 之前需运行 SchemaTool 命令来执行初始化操作。

启动 Hive,输入命令 Hive

  • 测试 Hive

在 Hive中创建一个数据库并在数据库中创建一个表:

可以看到表已经创建成功,向表中输入数据。

查看表中数据:

可以看到数据插入成功并且可以正常查询。

4. 在 MySQL 节点安装 MariaDB

MySQL 的安装可以参照 Hive 节点中安装 MariaDB 的步骤,启动完成后,设置 root 密码并开启远程登录:

接下来在创建数据库和将要导入数据的表:

5. DataX 数据同步

在 DataX 节点的操作比较简单,首先要配置 Java 环境变量,可参照前文中的介绍,然后下载 DataX 并解压。

  • Hive 到 MySQL 的数据同步,编辑 job 文件:

运行 DataX 开始同步数据

如果输出结尾为以上内容,说明数据同步完成,查看 MySQL 中是否有数据。

说明数据同步成功。

  • MySQL 到 Hive 的数据同步

首先在 MySQL 节点的 mysql_datax 表插入一条新记录:

在 DataX 节点编辑 mysql2hive

运行 DataX 同步数据:

如果输出结尾与以上内容一样,说明同步成功,注意这里读出 2 条记录,会把第一条记录再同步一遍。
查看 Hive 表中的内容:

可以看到新记录与旧记录都被写入。

参考链接:https://github.com/alibaba/DataX


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2284263/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31559758/viewspace-2284263/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataX 是阿里巴巴集团开源的一款数据同步工具,它支持多种数据源之间的同步,包括 HiveMySQL、Oracle 等常见关系型数据库以及 HDFS、FTP 等非关系型数据源。下面介绍如何使用 DataXHiveMySQL 中的表互导。 首先需要在本地和远程服务器上安装好 DataX。然后创建一个名为 job.json 的配置文件,内容如下: ``` { "job": { "content": [ { "reader": { "name": "hdfswriter", "parameter": { "path": "/user/hive/warehouse/myhive.db/myhive_table", "defaultFS": "hdfs://localhost:9000", "fileType": "orc", "column": [ "col1", "col2", "col3" ] } }, "writer": { "name": "mysqlwriter", "parameter": { "url": "jdbc:mysql://localhost:3306/test", "username": "root", "password": "123456", "table": "mysql_table", "column": [ "col1", "col2", "col3" ] } } } ], "setting": { "speed": { "channel": "3" } } } } ``` 该配置文件定义了一个数据同步任务,将 Hive 中的 myhive_table 表导入到 MySQL 中的 mysql_table 表中。其中,hdfswriter 和 mysqlwriter 分别表示数据源和目标源的类型,parameter 参数中定义了数据源和目标源的详细信息。column 参数定义了需要同步的列。 执行以下命令启动 DataX 任务: ``` python datax.py job.json ``` 该命令会按照配置文件中的定义开始数据同步任务。在数据量较大的情况下,可以通过修改 job.json 中的 speed 参数来调整数据同步的速度,以避免对源和目标服务器的负载过大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值