# Sqoop - 데이터 Import, Export 시에 오류 정리



# RDBMS(Oracle)의 데이터를 HDFS 으로 Import 실행시 오류

[hadoop@master lib]$ sqoop import \
> --connect jdbc:oracle:thin:@//192.168.1.190:1521/ora10g \
> --username scott \
> --password tiger \
> --table EMP \
> --hive-import
13/07/29 16:23:00 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
13/07/29 16:23:00 INFO tool.BaseSqoopTool: Using Hive-specific delimiters for output. You can override
13/07/29 16:23:00 INFO tool.BaseSqoopTool: delimiters with --fields-terminated-by, etc.
13/07/29 16:23:00 INFO manager.SqlManager: Using default fetchSize of 1000
13/07/29 16:23:00 INFO tool.CodeGenTool: Beginning code generation
13/07/29 16:23:00 INFO manager.OracleManager: Time zone has been set to GMT
13/07/29 16:23:00 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM BULLETIN t WHERE 1=0
13/07/29 16:23:00 ERROR tool.ImportTool: Imported Failed: Attempted to generate class with no columns!

> 변경
--username 의 DB 계정명을 대문자로 변경
 예) --username SCOTT


# RDBMS(Oracle)의 데이터를 Hive로 Import 시 오류

13/07/29 16:46:19 INFO hive.HiveImport: FAILED: Error in metadata: java.lang.RuntimeException:
Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
13/07/29 16:46:19 INFO hive.HiveImport: FAILED: Execution Error,
return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
13/07/29 16:46:19 ERROR tool.ImportTool: Encountered IOException running import job:
 java.io.IOException: Hive exited with status 1

        at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:364)
        at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:314)
        at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:226)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:415)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:238)

> 작업 순서
1) jps 에서 조회 되는 RunJar 프로세스를 중지(이전 Job 프로세스)
2) hdfs 상에 생성된 데이터를 삭제
- hdfs 데이터를 삭제하지 않고 재실행 할경우, 아래와 같이 이미 존재한다는 메시지 출력후 진행 중지됨.

  이유는 데이터를 hadoop 홈에 임시 저장하고, job이 끝나면 hive 홈으로 바꾸는(DDL포함) 방식으로 Import 진행.
  그래서 다시 import 실행시에 hdfs상에는 실제 데이터가 있기 때문에 발생.

메시지보기..

> 작업 진행
1) RunJar 프로세스 중지

[hadoop@master hive]$ jps
30520 JobTracker
28202 RunJar
30336 NameNode
31128 Jps

[hadoop@master hive]$ kill 28202
[hadoop@master hive]$ jps
30520 JobTracker
30336 NameNode
31155 Jps

2) hdfs상의 데이터 삭제
[hadoop@master bin]$ hadoop fs -rmr /user/hadoop/EMP
Moved to trash: hdfs://master.namenode:9000/user/hadoop/EMP


# HCatalog 데이터 Import 시 오류

Oracle to Hive Snappy 압축, 대용량 데이터(1억건 이상) Import시 아래와 같은 메세지 발생
INFO mapreduce.Job: Task Id : attempt_[Job Id]_m_[Map Id]_0 Status : FAILED
AttemptID:attempt_[Job Id]_m_[Map Id]_0 Timed out after 300 secs

> 해결
Sqoop Import 옵션에 mapreduce timeout 옵션값 0 설정 추가
참고 : https://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
Hadoop 최신버전 2.6에서 mapred.task.timeout는 사용되지 않고 mapreduce(mapreduce.task.timeout)와같이 변경됨.

기본적으로 mapreduce.task.timeout 가 300초(5분)
mapreduce task가 300초를 넘을 경우 아래와 같은 메세지가 발생하며, Job 실패함.

sqoop import \
    -Dmapreduce.output.fileoutputformat.compress=true \
    -Dmapreduce.output.fileoutputformat.compress.type=BLOCK \
    -Dmapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec \
    -Dmapreduce.task.timeout=0 \
    -D oracle.sessionTimeZone=Asia/Seoul \
    --connect jdbc:oracle:thin:@//hdfs3.sun:1521/oracle \
    --username SCOTT \
    --password tiger \
    --table SCOTT.EMP \
    --verbose \
    --hcatalog-database scott_db \
    --hcatalog-table EMP
    --hcatalog-storage-stanza "STORED AS ORC tblproperties ('orc.compress'='SNAPPY')" \
    --create-hcatalog-table \
    -m 16



※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.

"BigData / Sqoop" 분류의 다른 글

Sqoop - HDFS에 RDBMS(Oracle,Mysql) 데이터 Import (0)2013/07/29
07 29, 2013 19:22 07 29, 2013 19:22


Trackback URL : http://develop.sunshiny.co.kr/trackback/942

Leave a comment


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. facebook marketing company facebook marketing company %M
  2. check it out here check it out here %M
  3. synchronized wireless clock systems synchronized wireless clock systems %M
  4. find out this here find out this here %M
  5. selling social media services selling social media services %M

Calendar

«   12 2019   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2778959 HIT
TODAY 1152 HIT
YESTERDAY 532 HIT