JAVA,hadoop,hdfs,hive,spring套餐,sql,nosql,websocket通信,netty框架,數(shù)據(jù)結(jié)構(gòu),jvm性能調(diào)優(yōu),http和https,git,svn,maven,shell命令
DataEx是一個異構(gòu)數(shù)據(jù)源離線同步工具,致力于實現(xiàn)包括關(guān)系型數(shù)據(jù)庫(MySQL,Oracle等),HDFS,Hive,ODPS,HBase,F(xiàn)TP等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。DataEx完成單個數(shù)據(jù)同步的作業(yè),我們稱之為Job,DataEx接受到一個Job之后,將啟動一個進(jìn)程來完成整個作業(yè)同步過程。DataEx Job模塊是單個作業(yè)的中樞管理節(jié)點,承擔(dān)了數(shù)據(jù)清理,子任務(wù)切分(將單一作業(yè)計算轉(zhuǎn)化為多個子Task),TaskGroup管理等功能。DataExJob啟動之后,會根據(jù)不同的源端切分策略,將Job切分成多個小的Task(子任務(wù)),以便于并發(fā)執(zhí)行。Task便是DataEx作業(yè)的最小單元,每一個Task都會負(fù)責(zé)一部分?jǐn)?shù)據(jù)的同步工作。切分多個Task之后,DataEx Job會調(diào)用Scheduler模塊,根據(jù)配置的并發(fā)數(shù)據(jù)量,將拆分成的Task重新組合,組裝成TaskGroup(任務(wù)組)。每一個TaskGroup負(fù)責(zé)以一定的并發(fā)運行完畢分配好的所有Task,默認(rèn)單個任務(wù)組的并發(fā)數(shù)量為5。
每一個Task都由TaskGroup負(fù)責(zé)啟動,Task啟動后,會固定啟動Reader—>Channel—>Writer的線程來完成任務(wù)同步工作。DataEx作業(yè)運行起來之后,Job監(jiān)控并等待多個TaskGroup模塊任務(wù)完成,等待所有TaskGroup任務(wù)完成后Job成功退出。否則異常退出,進(jìn)程退出值非0,
我在項目中主要負(fù)責(zé)EIP模塊;
EIP模塊:利用動態(tài)token調(diào)用數(shù)據(jù)源接口Read數(shù)據(jù),將數(shù)據(jù)用并發(fā)線程池存入通道Channel,之后利用鑒權(quán)信息登錄hadoop,先將數(shù)據(jù)從通道寫入hdfs目錄下的臨時文件,待數(shù)據(jù)寫完,將數(shù)據(jù)移至正式目錄并刪除臨時目錄,最后將數(shù)據(jù)存入Hive,每個數(shù)據(jù)源接口都支持插件式開發(fā)。
因公司機(jī)密,我參與該項目發(fā)的dataEx與阿里的datax工具大同小異,因此就參照dataEx來介紹。此為Hadoop+java+linux機(jī)器搭建的離線數(shù)據(jù)處理平臺的工具。該項目將數(shù)據(jù)從各個數(shù)據(jù)源通過api以及動態(tài)token的方式用線程池并發(fā)處理解析json數(shù)據(jù),將數(shù)據(jù)放入ar
該項目為ssm項目,通過前端點擊事件觸發(fā)增刪改查事件將所需參數(shù)傳入后端,后端通過參數(shù)進(jìn)行業(yè)務(wù)邏輯處理,并調(diào)用mapper的sql命令給數(shù)據(jù)庫,該項目我參與后臺開發(fā)以及設(shè)計文檔編寫,項目部署linux機(jī)器測試上線