• datax和datax-web编译安装和使用


    DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

    目前支持的数据源如下:

    c96a4dd8130f481a809da2eda2c124d7.png

    与sqoop的对比:

    f0e8dc74978f421f8f175a37b3ad011e.png

    1. 编译

    1.1编译datax

    idea打开datax项目,执行mvn命令:

    mvn -U clean package assembly:assembly -Dmaven.test.skip=true

    7e64a6fcd1274a9e803a64a468dc7efd.png

    编译成功,打好的tar包在target目录,上传到linux指定目录。

    1.2 编译datax-web

    idea打开datax-web项目,执行mvn命令

    mvn clean install

    e7d4b377e769486cbf47faf45f7b8cba.png

    编译成功,打好的包在build目录,也上传到linux指定目录。

    2.安装

    2.1 测试datax

    将datax.tar.gz解压,进入datax目录,执行测试程序,查看结果。

     python bin/datax.py job/job.json 
    1. 2023-09-13 15:27:28.851 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records0 bytes |  All Task WaitWriterTime 0.023s |  All Task WaitReaderTime 0.030s | Percentage 100.00%
    2. 2023-09-13 15:27:28.851 [job-0] INFO  JobContainer - 
    3. 任务启动时刻                    : 2023-09-13 15:27:18
    4. 任务结束时刻                    : 2023-09-13 15:27:28
    5. 任务总计耗时                    :                 10s
    6. 任务平均流量                    :          253.91KB/s
    7. 记录写入速度                    :          10000rec/s
    8. 读出记录总数                    :              100000
    9. 读写失败总数                    :                   0

    2.2 安装datax-web

    将datax-web-2.1.2.tar.gz解压,进入datax-web/bin目录,执行脚本

    1. ./install 
    2. 2023-09-13 15:31:33.797 [INFO] (101530) Creating directory: [/data/etl/datax-web-2.1.2/bin/../modules].
    3. 2023-09-13 15:31:33.806 [INFO] (101530)  ####### Start To Uncompress Packages ######
    4. 2023-09-13 15:31:33.809 [INFO] (101530) Uncompressing....
    5. Do you want to decompress this package: [datax-admin_2.1.2_1.tar.gz]? (Y/N)y
    6. 2023-09-13 15:32:46.982 [INFO] (101530)  Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory
    7. Do you want to decompress this package: [datax-executor_2.1.2_1.tar.gz]? (Y/N)y
    8. 2023-09-13 15:33:03.246 [INFO] (101530)  Uncompress package: [datax-executor_2.1.2_1.tar.gz] to modules directory
    9. 2023-09-13 15:33:03.485 [INFO] (101530)  ####### Finish To Umcompress Packages ######
    10. Scan modules directory: [/data/etl/datax-web-2.1.2/bin/../modules] to find server under dataxweb
    11. 2023-09-13 15:33:03.489 [INFO] (101530)  ####### Start To Install Modules ######
    12. 2023-09-13 15:33:03.491 [INFO] (101530) Module servers could be installed:
    13. [datax-admin] [datax-executor]
    14. Do you want to confiugre and install [datax-admin]? (Y/N)y
    15. 2023-09-13 15:33:09.255 [INFO] (101530)  Install module server: [datax-admin]
    16. Start to make directory
    17. 2023-09-13 15:33:09.276 [INFO] (105228)  Start to build directory
    18. 2023-09-13 15:33:09.278 [INFO] (105228) Creating directory: [/data/etl/datax-web-2.1.2/modules/datax-admin/bin/../logs].
    19. 2023-09-13 15:33:09.336 [INFO] (105228) Directory or file: [/data/etl/datax-web-2.1.2/modules/datax-admin/bin/../conf] has been exist
    20. 2023-09-13 15:33:09.338 [INFO] (105228) Creating directory: [/data/etl/datax-web-2.1.2/modules/datax-admin/bin/../data].
    21. end to make directory
    22. Start to initalize database
    23. 2023-09-13 15:33:09.487 [INFO] (105228)  Scan out mysql command, so begin to initalize the database
    24. Do you want to initalize database with sql: [/data/etl/datax-web-2.1.2/bin/db/datax_web.sql]? (Y/N)y
    25. Please input the db host(default: 127.0.0.1):
    26. Please input the db port(default: 3306):
    27. Please input the db username(default: root):
    28. Please input the db password(default: ): XXXXXX
    29. Please input the db name(default: dataxweb)
    30. mysql: [Warning] Using a password on the command line interface can be insecure.
    31. Do you want to confiugre and install [datax-executor]? (Y/N)y
    32. 2023-09-13 15:34:10.863 [INFO] (101530)  Install module server: [datax-executor]
    33. 2023-09-13 15:34:10.884 [INFO] (107668)  Start to build directory
    34. 2023-09-13 15:34:10.886 [INFO] (107668) Creating directory: [/data/etl/datax-web-2.1.2/modules/datax-executor/bin/../logs].
    35. 2023-09-13 15:34:10.917 [INFO] (107668) Directory or file: [/data/etl/datax-web-2.1.2/modules/datax-executor/bin/../conf] has been exist
    36. 2023-09-13 15:34:10.919 [INFO] (107668) Creating directory: [/data/etl/datax-web-2.1.2/modules/datax-executor/bin/../data].
    37. 2023-09-13 15:34:10.953 [INFO] (107668) Creating directory: [/data/etl/datax-web-2.1.2/modules/datax-executor/bin/../json].
    38. 2023-09-13 15:34:10.984 [INFO] (101530)  ####### Finish To Install Modules ######

    2.3 配置执行器

    编辑datax-web-2.1.2/modules/datax-executor/bin/env.properties

    1. DATAX_ADMIN_PORT=9527
    2. ## PYTHON脚本执行位置
    3. #PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
    4. PYTHON_PATH=/data/etl/datax/bin/datax.py

    2.3 启动服务

    ./start-all.sh 
    1. 2023-09-13 15:36:26.441 [INFO] (112931)  Try To Start Modules In Order 
    2. 2023-09-13 15:36:26.448 [INFO] (112939)  ####### Begin To Start Module: [datax-admin] ######
    3. 2023-09-13 15:36:26.454 [INFO] (112947) load environment variables
    4. 2023-09-13 15:36:26.755 [INFO] (112947) /data/base/jdk1.8.0_211/bin/java
    5. 2023-09-13 15:36:26.757 [INFO] (112947) Waiting DATAX-ADMIN to start complete ...
    6. 2023-09-13 15:36:26.964 [INFO] (112947) DATAX-ADMIN start success
    7. 2023-09-13 15:36:26.991 [INFO] (113168)  ####### Begin To Start Module: [datax-executor] ######
    8. 2023-09-13 15:36:26.997 [INFO] (113176) load environment variables
    9. 2023-09-13 15:36:27.390 [INFO] (113176) /data/base/jdk1.8.0_211/bin/java
    10. 2023-09-13 15:36:27.393 [INFO] (113176) Waiting DATAX-EXEXUTOR to start complete ...
    11. 2023-09-13 15:36:27.763 [INFO] (113176) DATAX-EXEXUTOR start success

    打开页面,登录密码是admin/123456

    http://xx.16.60.31:9527/index.html

    343945467ecd4659afafac0f1b7acd64.png

    打开接口文档页面

    http://xx.16.60.31:9527/doc.html

    ce00d23e074740cba0e44ab32a2bb8c5.png

    3.同步mysql数据到hive

    3.1 建表和准备数据

    mysql建表并插入数据

    1. CREATE TABLE `user_behavior_mysql`  (
    2.   `user_id` varchar(20CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    3.   `item_id` varchar(20CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    4.   `category_id` varchar(20CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
    5.   `behavior_type` varchar(10CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
    6.   `time_stamp` varchar(20CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    7.   PRIMARY KEY (`user_id`, `item_id`, `time_stamp`) USING BTREE
    8. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
    1. INSERT INTO `user_behavior_mysql` VALUES ('1', '1531036', '2920476', 'pv', '1511733732');
    2. INSERT INTO `user_behavior_mysql` VALUES ('1', '2268318', '2520377', 'pv', '1511544070');
    3. INSERT INTO `user_behavior_mysql` VALUES ('1', '230380', '411153', 'pv', '1511644942');
    4. INSERT INTO `user_behavior_mysql` VALUES ('1', '2333346', '2520771', 'pv', '1511561733');
    5. INSERT INTO `user_behavior_mysql` VALUES ('1', '2576651', '149192', 'pv', '1511572885');
    6. INSERT INTO `user_behavior_mysql` VALUES ('1', '3745169', '2891509', 'pv', '1511725471');
    7. INSERT INTO `user_behavior_mysql` VALUES ('1', '3827899', '2920476', 'pv', '1511713473');
    8. INSERT INTO `user_behavior_mysql` VALUES ('1', '3830808', '4181361', 'pv', '1511593493');
    9. INSERT INTO `user_behavior_mysql` VALUES ('1', '4365585', '2520377', 'pv', '1511596146');
    10. INSERT INTO `user_behavior_mysql` VALUES ('1', '4606018', '2735466', 'pv', '1511616481');

    hive中建表

    1. CREATE TABLE `user_behavior_mysql` (
    2. `user_id` string,
    3. `item_id` string,
    4. `category_id` string,
    5. `behavior_type` string,
    6. `time_stamp` string
    7. ) row format delimited fields terminated by ",";

    3.2 新增mysql数据源

    dd05040577a64c7991d23d8adb525d6e.png

    3.3 新增hive数据源

    0084f21a80804d52b8ff978359c54e54.png

    3.4 新增任务模板

    fb1263f5e4d9448290a3aba7d5b4a594.png

    3.5 任务构建

    b98c17e5e8ec4c54a3345d97d8b34442.png

    988c07e70eb348708a98c2227be7dab9.png

    f0665a96e9674eada6fd9d1c4a34a0cf.png

    89f3342c575749d4ab56123608f4afed.png

    生成json如下:

    1. {
    2. "job": {
    3. "setting": {
    4. "speed": {
    5. "channel": 3
    6. },
    7. "errorLimit": {
    8. "record": 0,
    9. "percentage": 0.02
    10. }
    11. },
    12. "content": [
    13. {
    14. "reader": {
    15. "name": "mysqlreader",
    16. "parameter": {
    17. "username": "yRjwDFuoPKlqya9h9H2Amg==",
    18. "password": "XCYVpFosvZBBWobFzmLWvA==",
    19. "splitPk": ",",
    20. "connection": [
    21. {
    22. "querySql": [
    23. "select * from user_behavior_mysql;"
    24. ],
    25. "jdbcUrl": [
    26. "jdbc:mysql://10.16.60.31:3306/datasets"
    27. ]
    28. }
    29. ]
    30. }
    31. },
    32. "writer": {
    33. "name": "hdfswriter",
    34. "parameter": {
    35. "defaultFS": "hdfs://10.16.60.31:8020",
    36. "fileType": "text",
    37. "path": "/user/hive/warehouse/datasets.db/user_behavior_mysql",
    38. "fileName": "user_behavior_mysql",
    39. "writeMode": "append",
    40. "fieldDelimiter": ",",
    41. "column": [
    42. {
    43. "name": "user_id",
    44. "type": "string"
    45. },
    46. {
    47. "name": "item_id",
    48. "type": "string"
    49. },
    50. {
    51. "name": "category_id",
    52. "type": "string"
    53. },
    54. {
    55. "name": "behavior_type",
    56. "type": "string"
    57. },
    58. {
    59. "name": "time_stamp",
    60. "type": "string"
    61. }
    62. ]
    63. }
    64. }
    65. }
    66. ]
    67. }
    68. }

    3.6 执行结果

    hive中数据如下

    1ba3f3cc0edc47b1af806b01dc504d29.png

    3.7 亿条数据测试

    另外测试从mysql同步约1亿条记录,测试结果如下

    19b3ca7a2e754452a50cad737447b841.png

  • 相关阅读:
    111.(leaflet篇)leaflet椭圆采集
    【MySQL】19-MySQL中如何创建数据库和管理数据库
    深入浅出Spring Aop
    用于对话场景的文本转语音-chattts
    word如何转化成pdf,最新图文教学,学会只需1分钟
    PolarDB-X 源码解读系列:DML 之 INSERT IGNORE 流程
    【嵌入式——QT】线程同步
    【MDPI出版社】物联网通信类SCI&EI,仅2-3个月左右录用
    jenkins创建用户
    Redis实战案例及问题分析之好友关注功能(关注、共同好友、消息推送)
  • 原文地址:https://blog.csdn.net/shangjg03/article/details/132884952