sqoop 는 hive 와 my sql 간 의 상호 유도 데이터 가 만 나 는 구 덩이 를 완성 합 니 다.

sqoop 완성 hive  export 에서 my sql 또는 my sql import 에서 hive 로 갈 때 사실은 MapReduce job 로 번역 되 어 실 행 됩 니 다.그래서 로 그 를 보 는 곳 은 두 가지 가 있 습 니 다.하 나 는?http://node1:8088(resourcemanager 의 웹 입구),다른 하 나 는?http://node1:19888(jobshistory 의 웹 입구)제 것 은 이렇게 설정 되 어 있 습 니 다.다음은 내 가 이 과정 에서 만난 구덩이 이다.
1.
18/04/18 04:50:06 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 7 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
18/04/18 04:50:07 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
18/04/18 04:50:08 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
18/04/18 04:50:08 ERROR tool.ExportTool: Encountered IOException running export job: 
java.io.IOException: java.net.ConnectException: Call From node1/172.16.15.130 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
	at org.apache.hadoop.mapred.ClientServiceDelegate.invoke(ClientServiceDelegate.java:338)
	at org.apache.hadoop.mapred.ClientServiceDelegate.getJobStatus(ClientServiceDelegate.java:423)
	at org.apache.hadoop.mapred.YARNRunner.getJobStatus(YARNRunner.java:576)
	at org.apache.hadoop.mapreduce.Job$1.run(Job.java:326)
	at org.apache.hadoop.mapreduce.Job$1.run(Job.java:323)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1692)
	at org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:323)
	at org.apache.hadoop.mapreduce.Job.isSuccessful(Job.java:623)
	at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1330)
	at org.apache.sqoop.mapreduce.ExportJobBase.doSubmitJob(ExportJobBase.java:324)
	at org.apache.sqoop.mapreduce.ExportJobBase.runJob(ExportJobBase.java:301)
	at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:442)
	at org.apache.sqoop.manager.SqlManager.exportTable(SqlManager.java:931)
	at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80)
	at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
	at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
	at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
Caused by: java.net.ConnectException: Call From node1/172.16.15.130 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
	at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:731)
	at org.apache.hadoop.ipc.Client.call(Client.java:1474)
	at org.apache.hadoop.ipc.Client.call(Client.java:1401)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
	at com.sun.proxy.$Proxy14.getJobReport(Unknown Source)
	at org.apache.hadoop.mapreduce.v2.api.impl.pb.client.MRClientProtocolPBClientImpl.getJobReport(MRClientProtocolPBClientImpl.java:133)
	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.mapred.ClientServiceDelegate.invoke(ClientServiceDelegate.java:324)
	... 22 more

 
이것 은 jobshistory 가 열 리 지 않 아서 생 긴 것 입 니 다.해결 방법 은 jobshistory 를 설정 한 호스트 에서 mr-jobshistory-daemon.sh 입 니 다.  start  historyserver。그리고 jps 는 Jobhistory Server 라 는 프로 세 스 가 나타 나 면 sqoop 명령 을 다시 실행 하면 됩 니 다.
 
주의사항:
a.먼저 mapred-site.xml 에 jobshistory 의 rpc 포트 와 웹 포트 를 설정 해 야 합 니 다.
        
                mapreduce.jobhistory.address
                node1:10020
        
                mapreduce.jobhistory.webapp.address
                node1:19888
        

b.환경 변 수 를 설정 하지 않 았 다 면 mr-jobshistory-daemon.sh  start  historyserver  명령 전에 경 로 를 더 해 야 한다.
2.
18/04/18 04:42:13 INFO mapreduce.Job: Counters: 12
	Job Counters 
		Failed map tasks=1
		Killed map tasks=3
		Launched map tasks=4
		Data-local map tasks=4
		Total time spent by all maps in occupied slots (ms)=69773
		Total time spent by all reduces in occupied slots (ms)=0
		Total time spent by all map tasks (ms)=69773
		Total vcore-milliseconds taken by all map tasks=69773
		Total megabyte-milliseconds taken by all map tasks=71447552
	Map-Reduce Framework
		CPU time spent (ms)=0
		Physical memory (bytes) snapshot=0
		Virtual memory (bytes) snapshot=0
18/04/18 04:42:13 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead
18/04/18 04:42:13 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 59.7689 seconds (0 bytes/sec)
18/04/18 04:42:13 INFO mapreduce.ExportJobBase: Exported 0 records.
18/04/18 04:42:13 ERROR mapreduce.ExportJobBase: Export job failed!
18/04/18 04:42:13 ERROR tool.ExportTool: Error during export: 
Export job failed!
	at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:445)
	at org.apache.sqoop.manager.SqlManager.exportTable(SqlManager.java:931)
	at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80)
	at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
	at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
	at org.apache.sqoop.Sqoop.main(Sqoop.java:252)

 
이러한 erro 는 여러 가지 종류 가 있 습 니 다.예 를 들 어 hive 표 필드 와 my sql 필드 가 맞지 않 거나 hive 의 구분자 가 있 습 니 다.제 이 유 는 이 두 가지 와 다 릅 니 다.위 에서 알 수 있 듯 이 fail 의 map task 는 하나 있 습 니 다.kill 의 map task 는 세 가지 가 있 습 니 다.jobshistory 에서 kill 의 task 를 보 는 이 유 는 Aggregation is not enabled 입 니 다.솔 루 션 은 Yrn-site.xml 에서 설정 되 어 있 습 니 다.
 
    
    yarn.log-aggregation-enable    
    true    

fail 의 task 원인 은 Error:java.io.IOException:com.mysql.jdbc.exceptions.jdbc 4.Communications Exception:Communications link failure...
my sql-jdbc-connector 버 전의 문제 로 보 였 으 나,설정 을 바 꾸 어 hadop 을 다시 시작 한 후에 이 erro 가 없어 진 것 을 발견 하 였 습 니 다.
3.일부 connection refused 의 문 제 는 my sql 의 원 격 로그 인 이 설정 되 지 않 았 기 때 문 입 니 다.이 건 다른 블 로그 에 따로 썼어 요.

좋은 웹페이지 즐겨찾기