問題1:sqoop修改源碼編譯打包后如何配合oozie使用?
oozie需要依次執行:
$OOZIE_HOME/bin/oozie.setup.sh prepare-war
$OOZIE_HOME/bin/oozie.setup.sh sharelib create -fs hdfs://xxxx:9000
其中第二步是將$OOZIE_HOME/里的oozie-sharelib-4.2.0.tar.gz包含的jar上傳到HDFS目錄里,而不是lib和libext里面的jar,所以sqoop編譯打包后需要把sqoop-1.4.6-xxx.jar放進oozie-sharelib-4.2.0.tar.gz壓縮包里,并去掉里面自帶的sqoop jar
那么調用oozie的時候,觸發sqoop就是你修改了源碼的jar。如圖hdfs目錄

問題2: oozie調度sqoop的時候,總提示NoClassDefoundxxxx異常?
需要把相關jar放進$HADOOP_HOME/share/hadoop/下面的目錄里面,而不是放進oozie的lib目錄里
問題3:如何遠程調試?
若發現有oozie調度sqoop有問題,最好直接運行sqoop命令來進行調試,這樣才能debug進sqoop代碼里面,更直觀
調試命令:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005把上面命令加進 $HADOOP_HOME/bin/hadoop里面
示例: HADOOP_DEBUG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DEBUG"
suspend=y意思是jvm一啟動就等待遠程debug連接。
綜上所述:不管oozie還是sqoop都是通過hadoop來運行,所以若有什么問題,在$HADOOP_HOME/logs/userlogs目錄下查找log進行問題定位,并且依賴什么的都最好放在$HADOOP_CLASSPATH下面
posted on 2016-12-09 13:42
朔望魔刃 閱讀(593)
評論(0) 編輯 收藏 所屬分類:
java