日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oozie中管理datax脚本方法实践

發布時間:2024/8/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oozie中管理datax脚本方法实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oozie中管理datax腳本方法實踐

    • @[TOC](oozie中管理datax腳本方法實踐)
    • 寫在前面
    • 遇見問題
    • 解決方法
    • 步驟
    • 處理實踐中的問題
    • 最后

--------------------------------------------------------------莫莫綿來了-----------------------------------------------------------

寫在前面

  • 使用CDH 6.3.2 oozie 5.1.0 datax 3.0
  • 遇見問題

    ? ? 項目中往往會有很多離線同步任務,比如從mysql每天凌晨同步昨日數據到hive中。這些離線任務的執行使用datax是一個很好的選擇(因為它真的快)。一般來說最初可以使用crontab的方式來啟定時任務,執行腳本跑datax job。但是這種方法有一個問題,沒法做流程化。比如A-job 執行完才能執行B-job。但是我并不確定A-job什么時候執行完,使用crontab也只能做如下:

    30 0 * * * source /etc/profile; /bin/bash /home/datax/script/a.sh 30 2 * * * /bin/bash /home/datax/script/b.sh

    ? ? 這種就是我估計a腳本兩個小時執行完沒問題。但是考慮到很多情況,可能會發生a并沒有執行或出錯或沒有執行完,就執行b帶來的各種問題。
    為此我們需要一個管理任務的框架。
    ? ? 而我一個考慮的是遷移的成本問題。盡管有很多開源框架很優秀。但是我們大數據系統使用了CDH。里面就有個現成的工具:oozie。

    解決問題的最好方法就是恰好沒有問題,其次是我恰好已經有了一個現成的工具可以完成它。

    解決方法

    ? ? 由于之前是通過crontab執行腳本的方式來管理的。最簡單的方法就是啥都不動,只把crontab的配置改到oozie上就好(當然這可能是對于我最簡單的方法)。
    ? ? 于是網上的很多方案就都可以排除。最終我選擇使用oozie的ssh-action來處理。直接ssh到之前datax安裝的節點上,執行之前的腳本即可。
    這種方法的好處:
    1:遷移成本低,操作簡單,不需要把shell腳本放入hdfs,不需要把datax塞到hdfs,不用配一大堆oozie的job。
    2:完成了流程式調用,解決了crontab帶來的問題。

    步驟

    1:CDH中安裝部署好oozie,配好配置,啟動

    <property><name>oozie.processing.timezone</name><value>GMT+0800</value><description>使用oozie的時候需要設置時區</description></property> <property><name>oozie.action.max.output.data</name><value>204800</value><description> </description></property> <property><name>oozie.servlet.CallbackServlet.max.data.len</name><value>1048576</value><description>Max size in characters for the action completion data output. </description></property>

    2:hue中配置使用oozie
    3:hue中創建workflow

    3:創建定時任務

    4:運行

    5:腳本部分內容參考:

    #!/bin/bash source /etc/profile; echo "$(date +%Y%m%d)_$(date +%H%M%S) - 開始遷移" setVar=" -DmysqlIp='xxx:xxx'" python /home/datax/datax/bin/datax.py -p "$setVar" /home/datax/mysqltomysql/xxx.json echo "$(date +%Y%m%d)_$(date +%H%M%S) - 結束遷移"

    處理實踐中的問題

    1:cdh安裝oozie中的問題:
    報錯:Failed to install Oozie ShareLib
    上載 Oozie 共享庫 Command aborted because of exception: Command timed-out after 270 second)
    解決:其實看報錯就是這個基礎服務沒裝好而已。服務器上安裝libxslt服務即可:

    yum install libxslt-devel -y

    2:因為要是用ssh功能,所以要打通所有oozie用戶到datax腳本所在服務器用戶的ssh

    su oozie ssh-keygen ssh-copy-id name@xxx.xx

    linux下su oozie切換用戶發現提示This account is currently not available 使用/etc/passwd 發現這個oozie用戶后面是 “/sbin /nologin”,需要將起改成“/bin/bash”就好了

    3:修改hue的時區Time Zone為:Asia/Shanghai

    4:修改oozie的時區,oozie-site.xml配置項中增加如下配置:(cm中oozie搜索oozie-site.xml)
    oozie.processing.timezoneGMT+0800

    5:報錯:org.apache.oozie.action.hadoop.LauncherException: Output data exceeds its limit
    可以把oozie的輸出限制加大:
    Oozie-site.xml中,重啟Oozie服務生效:oozie.action.max.output.data204800

    6:java.lang.IllegalArgumentException: stream exceeds limit [2,048]

    在oozie-site.xml中修改以下值

    <property><name>oozie.servlet.CallbackServlet.max.data.len</name><value>2048</value><description>Max size in characters for the action completion data output.</description></property>

    7: 執行oozie任務的時候datax命令那行死活執行不成功,只顯示下面這兩行信息就停了。
    ·DataX=(DATAX-OPENSOURCE-3.0), From Alibaba ! Copyright=? 2010-2017, Alibaba Group. All Rights Reserved.
    解決方案:于是我自己在服務器的oozie用戶上手動執行了 ssh datax@xxx ‘/bin/bash /home/datax/a.sh’
    之后發現報錯了,/bin/sh: java: command noe found .
    查看了這是因為環境變量的問題,在腳本開頭加個source /etc/profile; 就解決了。

    source /etc/profile;

    最后

    ? ? 這個做的時候,卡在問題7這里卡了很久,因為手動執行腳本datax可以執行,但是用oozie就不行,一直以為是oozie不讓datax啟動新的job進程的問題,還看了datax源碼。然后居然就是一個環境變量的問題。因為沒有輸出啥錯誤日志,哭死我了,最后是手動模擬執行ssh才有問題的報錯信息。還有一個問題就是,如果腳本里沒有echo的輸出語句,任務最后會執行成功但是顯示kill。導致后面的work-flow不執行。我又哭了。。。。唉。先寫到這吧。

    --------------------------------------------------------------莫莫綿走了-----------------------------------------------------------


    水平有限,如果你覺得上述有任何疑問、不足、錯誤的地方,歡迎在評論區指正。

    總結

    以上是生活随笔為你收集整理的oozie中管理datax脚本方法实践的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。