GOOD4ME

[Sqoop export error] org.apache.sqoop.mapreduce.ExportJobBase.runExport 본문

개발.오류.정리/Sqoop

[Sqoop export error] org.apache.sqoop.mapreduce.ExportJobBase.runExport

de_youn 2022. 11. 21. 11:04
반응형

독자 대상📣
    👉 Sqoop을 사용하여 Hive to MySQL 마이그레이션하려는 분
    👉 Ubuntu 환경에서 구축하시는 분


출간 이유❓
    👉 Sqoop export 시, 오류 발생 확인


문제 파악🔍

...
2022-10-04 14:40:07,033 INFO mapreduce.Job: Job job_1662078057204_0026 failed with state FAILED due to: Task failed task_1662078057204_0026_m_000002 Job failed as tasks failed. failedMaps:1 failedReduces:0 killedMaps:0 killedReduces: 0 

2022-10-04 14:40:07,116 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)=31217 
        Total time spent by all reduces in occupied slots (ms)=0 
        Total time spent by all map tasks (ms)=31217 
        Total vcore-milliseconds taken by all map tasks=31217 
        Total megabyte-milliseconds taken by all map tasks=31966208 
	Map-Reduce Framework 
     	CPU time spent (ms)=0 
        Physical memory (bytes) snapshot=0 
        Virtual memory (bytes) snapshot=0 
2022-10-04 14:40:07,124 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead 
2022-10-04 14:40:07,125 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 21.0529 seconds (0 bytes/sec) 
2022-10-04 14:40:07,128 INFO mapreduce.ExportJobBase: Exported 0 records. 
2022-10-04 14:40:07,128 ERROR mapreduce.ExportJobBase: Export job failed! 
2022-10-04 14:40:07,128 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:76) 
    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)
...

    👉 Q: sqoop export로 hive에서 mysql로 데이터 마이그레이션을 하려는데 오류가 발생해요..😥


문제 해결🎊

A: 우선 yarn log를 확인하셔야합니다😀

   커맨드로 확인할 수도 있는데, 유저/권한이 불일치하여
   볼 수 없는 경우가 종종 있습니다.
   ex) Docker로 Hadoop eco system 구축 등
   
   가장 쉽게 로그를 확인하는 방법은 WEB HDFS에 접속하는 것입니다❗

   하단의 내용을 참고하여 이 Disgusting한 문제를 해결하십시오❗❗
  1. NameNode의 주소로 WEB HDFS 접속
    # 컨테이너 로그 1로 끝나는 디렉터리로 접근
    경로: /logs/userlogs/application_xxxxxxxx_xx/container_xxxx_xxxx_xx_xxxxx1/
  2. 디렉터리 내, 로그 파일 확인
    로그 파일명syslog
  3. 필자의 오류 -> MySQL 접근 권한
    ... 
    2022-10-04 05:40:04,716 INFO [AsyncDispatcher event handler org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: Diagnostics report from attempt 1662078057204 0026 m 000000 0: Error: java.io.I0Exception: java.sql.SQLException: null, message from server: "Host 'mycluster' is not allowed to connect to this MySOL server" 
    ... 
    # MySQL에 접속하여 'mycluster' 라는 컨테이너의 접근권한을 생성 및 부여해야한다. # Hive가 HDFS 기반이기 때문에 HDFS의 Avtive NameNode인 mycluster의 권한이 필요한가 봅니다😊
  4. MySQL에 접속하여 접근권한 부여하기
# 하단의 sql 커맨딩 시, 권한 생성 및 부여 완료
# sqoop export 또한 해결되었음
> create user root@[mycluster ip address] identified by '[password]';
> grant all privileges on [database].* to root@[mycluster ip addr];
> flush privileges;
반응형
Comments