標籤:class code http java tar ext
1.異常資訊例如以下:
Caused by: com.google.protobuf.ServiceException: java.net.ConnectException: Call From slave4/10.95.3.65 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: 拒絕串連; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
後來通過調試和跟蹤hadoop源碼,發現oozie在提交任務後確實會去串連jobhistory,
開到debug模式後,在org.apache.hadoop.mapred.ClientCache,這個類的:
protected MRClientProtocol instantiateHistoryProxy()
throws IOException {
final String serviceAddr = conf.get(JHAdminConfig.MR_HISTORY_ADDRESS);
if (StringUtils.isEmpty(serviceAddr)) {
return null;
}
LOG.debug("Connecting to HistoryServer at: " + serviceAddr);
final YarnRPC rpc = YarnRPC.create(conf);
LOG.debug("Connected to HistoryServer at: " + serviceAddr);
UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
return currentUser.doAs(new PrivilegedAction<MRClientProtocol>() {
@Override
public MRClientProtocol run() {
return (MRClientProtocol) rpc.getProxy(HSClientProtocol.class,
NetUtils.createSocketAddr(serviceAddr), conf);
}
});
}
通過上面的代碼能夠知道確實串連了HistoryServer,因此我通過命令
mr-jobhistory-daemon.sh start historyserver 把這個服務啟動,這樣在NN上會啟動JobHistoryServer進程,這個進程的監聽port就是10020,本以為這樣這個問題就能攻克了,沒想到在oozie的log日誌裡還是報上面的錯,唯一可能的原因是oozie沒有讀取到 jobhistory的配置, 因此我把這個配置:
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
又在oozie/conf/hadoop-conf/core-site.xml檔案裡又加入了一遍,上述錯誤就消失了,job也能正常跑起來了。
2. oozie安裝好了,提交任務的時候總是報Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Data truncation: Data too long for column ‘proto_action_conf‘ at row 1 {prepstmnt 184665592 INSERT INTO WF_JOBS (id, app_name, app_path, conf, group_name, parent_id, run, user_name, bean_type, auth_token, created_time, end_time, external_id, last_modified_time, log_token, proto_action_conf, sla_xml, start_time, status, wf_instance) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?]} [code=1406, state=22001]
經過搜尋,wf_jobs中的proto_action_conf這個欄位儲存的是工作流程中workflow.xml的內容,預設oozie建立中繼資料表的時候此欄位類型為text(mysql),此種類型為最大長度為
65536字元的text列,所以有時無法容納workflow.xml的內容,須要將其改為LONGTEXT類型,改後就好了。