025-大數據ETL工具之StreamSets安裝及訂閱mysql binlog


025-大數據ETL工具之StreamSets安裝及訂閱mysql binlog

 

原文章來自:https://anjia0532.github.io/2019/06/10/cdh-streamsets/

這是堅持技術寫作計划(含翻譯)的第 25 篇,定個小目標 999,每周最少 2 篇。

本文主要介紹 CDH6.2+StreamSets3.9。

StreamSets 是一個大數據采集和數據處理工具。可以通過拖拽式的可視化操作,實現數據管道(Pipelines)的設計和調度。其特點有:

  • 拖拽式的可視化界面操作,上手快。
  • 對常見數據處理(數據源、數據操作、數據輸出)支持較好。
  • 內置監控,可以對數據流進行觀測。

類似的開源產品還有 Apache NiFi , 網上有關於 NiFi 和 StreamSets 的對比 Open Source ETL: Apache NiFi vs Streamsets (網上有中文翻譯版版)

國內接觸較多的 ETL 工具,可能是 DataX 、 Kettle 、Sqoop。此處有個簡單的對比,數據集成之 kettle、sqoop、datax、streamSets 比較

安裝 StreamSets 3.9

下載 parcel 安裝包

從 https://archives.streamsets.com/index.html 下載 3.9 的
image.png
並上傳到 http 服務器的 www 目錄下,本文以 centos7.6 為例

wget -P /var/www/html/streamsets3.9.0/ https://archives.streamsets.com/datacollector/3.9.0/parcel/manifest.json
wget -P /var/www/html/streamsets3.9.0/ https://archives.streamsets.com/datacollector/3.9.0/parcel/STREAMSETS_DATACOLLECTOR-3.9.0-el7.parcel.sha
wget -P /var/www/html/streamsets3.9.0/ https://archives.streamsets.com/datacollector/3.9.0/parcel/STREAMSETS_DATACOLLECTOR-3.9.0-el7.parcel

image.png

配置 csd

從 https://streamsets.com/opensource 下載
image.png

wget -P /opt/cloudera/csd/ https://archives.streamsets.com/datacollector/3.9.0/csd/STREAMSETS-3.9.0.jar
cd /opt/cloudera/csd/
sudo chown cloudera-scm:cloudera-scm STREAMSETS-3.9.0.jar && sudo chmod 644 STREAMSETS-3.9.0.jar
systemctl restart cloudera-scm-server

下載分發 Parcel 包

image.png
image.png
image.png
image.png
下載並激活,但是,我實際測試時,總大小,4.6G,實際下載后,5.2G,導致 sha1sum 校驗失敗,報
image.png

在 cm 所在主機, ls -lah /opt/cloudera/parcel-repo
image.png

把下載的 https://archives.streamsets.com/datacollector/3.9.0/parcel/STREAMSETS_DATACOLLECTOR-3.9.0-el7.parcel 復制到 /opt/cloudera/parcel-repo 下
image.png
如果已經不信邪,試過下載,並報 hash 錯誤后,直接替換后,這個頁面還是提示 hash,此時再次點擊下載,就會變成分配。
激活后如下所示
image.png
image.png
image.png
創建完畢

streamsets 簡單使用

打開 streamsets,默認用戶名密碼 admin/admin
image.png

![image.png](https://cdn.nlark.com/yuque/0/2019/png/226273/1561003595012-472339dd-c7c0-49be-9be3-855d9fe21016.png)

官方教程,參考 Basic Tutorial

本文主要講解訂閱 mysql binlog 進行數據同步

mysql binlog

開啟 binlog

修改 mysql 配置文件,my.cnf,在 mysqld 下增加(注意 5.7 的不加 server-id 無法正常啟動)

server-id=1
log-bin=mysql-bin
binlog_format=ROW

創建並配置同步賬號

GRANT ALL on slave_test.* to 'slave_test'@'%' identified by 'slave_test';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'slave_test'@'%';
FLUSH PRIVILEGES;

安裝 mysql jdbc 驅動

wget -P /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/streamsets-libs/streamsets-datacollector-mysql-binlog-lib/lib/ https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

重啟 streamsets

創建 pipeline

image.png

配置 mysql binlog 解析及處理

image.png
image.png
image.png
image.png
image.png
配置目標端
image.pngimage.png

運行

image.png

測試

此處使用 mysql 自帶的壓測工具 mysqlslap.exe 進行測試

bin/mysqlslap --user=root --password=xxxxxx --concurrency=50 --number-int-cols=5 --number-char-cols=20 --auto-generate-sql --number-of-queries=100000 --auto-generate-sql-load-type=write --host=192.168.0.123 --port=3306
--user 用戶(需要有建庫建表權限)
--password 密碼
--concurrency 並發數
--number-int-cols 表內有5個數字列
--number-char-cols 表內有20個字符串列
--auto-generate-sql 自動生成腳本
--number-of-queries 總執行次數
--auto-generate-sql-load-type=write 只執行寫入操作
--host mysql 主機
--port 端口

下方有監控報表

常見錯誤

![image.png](https://cdn.nlark.com/yuque/0/2019/png/226273/1561021775509-fa60a34d-8e71-4e30-aa65-88a23521fb26.png)

同步不一致導致的錯誤,手動從

設置偏移量
image.png

如果報錯 Pipeline Status: RUNNING_ERROR: For input string: ""xxxx" ,把 my.cnf 改成

server-id=1
log-bin=mysql-bin
binlog_format=ROW
sync_binlog=1
binlog_gtid_simple_recovery=ON
log_slave_updates=ON
gtid_mode=ON
enforce_gtid_consistency=ON


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM