sqoop을 사용하여 MySQL 테이블을 HDFS로 가져 오려고합니다. JDK 1.7.0_45 및 CDH4.4를 사용하고 있습니다. Eclipse에서 pydev 플러그인을 사용하기 때문에 JDK를 1.7로 변경한다는 점을 제외하고는 실제로 cloudera의 사전 빌드 된 VM을 사용하고 있습니다. 내 sqoop 버전은 1.4.3-cdh4.4.0입니다.Sqoop 및 Java 7
나는이 예외 얻을 Sqoop을 내가 실행
오류 : 상품 : 지원되지 않는 MAJOR.MINOR 버전 내가했을 때 내가 과거에이 오류를 보았다 51.0
을이 : 1. 자바로 컴파일 7 2. Java 6로 응용 프로그램을 실행하십시오.
하지만이 시간은 제가 현재하고있는 것이 아닙니다. 나는 내 sqoop 버전이 java 6으로 컴파일되었다고 믿고, Java 7로 실행하고있다. 완벽하게 괜찮을 것이다. 아마 hadoop이 JDK 6으로 매퍼 프로세스를 시작한다고 생각합니다. 어떻게 변경해야할지 모르겠습니다. 맵핑 된 구성 문서를 살펴본 후지도 작업에 사용할 Java 버전을 설정하는 방법을 찾지 못했습니다.
다음은 관련 콘솔 출력 :
[[email protected] ~]$ echo $JAVA_HOME
/usr/java/latest
[[email protected] ~]$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
[[email protected] ~]$ sqoop version
Sqoop 1.4.3-cdh4.4.0
git commit id 2cefe4939fd464ba11ef63e81f46bbaabf1f5bc6
Compiled by jenkins on Tue Sep 3 20:41:55 PDT 2013
[[email protected] ~]$ hadoop version
Hadoop 2.0.0-cdh4.4.0
Subversion file:///data/1/jenkins/workspace/generic-package-rhel64-6-0/topdir/BUILD/hadoop-2.0.0-cdh4.4.0/src/hadoop-common-project/hadoop-common -r c0eba6cd38c984557e96a16ccd7356b7de835e79
Compiled by jenkins on Tue Sep 3 19:33:17 PDT 2013
From source with checksum ac7e170aa709b3ace13dc5f775487180
This command was run using /usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar
[[email protected] ~]$ cat mysqooper.sh
#!/bin/bash
sqoop import -m 1 --connect jdbc:mysql://localhost/$1 \
--username root --table $2 --target-dir $3
[[email protected] ~]$ ./mysqooper.sh cloud commodity /user/cloudera/commodity/csv/sqooped
14/01/16 16:45:10 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
14/01/16 16:45:10 INFO tool.CodeGenTool: Beginning code generation
14/01/16 16:45:11 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `commodity` AS t LIMIT 1
14/01/16 16:45:11 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `commodity` AS t LIMIT 1
14/01/16 16:45:11 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-0.20-mapreduce
14/01/16 16:45:11 INFO orm.CompilationManager: Found hadoop core jar at: /usr/lib/hadoop-0.20-mapreduce/hadoop-core.jar
Note: /tmp/sqoop-cloudera/compile/f75bf6f8829e8eff302db41b01f6796a/commodity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
14/01/16 16:45:15 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-cloudera/compile/f75bf6f8829e8eff302db41b01f6796a/commodity.jar
14/01/16 16:45:15 WARN manager.MySQLManager: It looks like you are importing from mysql.
14/01/16 16:45:15 WARN manager.MySQLManager: This transfer can be faster! Use the --direct
14/01/16 16:45:15 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.
14/01/16 16:45:15 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)
14/01/16 16:45:15 INFO mapreduce.ImportJobBase: Beginning import of commodity
14/01/16 16:45:17 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/01/16 16:45:20 INFO mapred.JobClient: Running job: job_201401161614_0001
14/01/16 16:45:21 INFO mapred.JobClient: map 0% reduce 0%
14/01/16 16:45:38 INFO mapred.JobClient: Task Id : attempt_201401161614_0001_m_000000_0, Status : FAILED
Error: commodity : Unsupported major.minor version 51.0
14/01/16 16:45:46 INFO mapred.JobClient: Task Id : attempt_201401161614_0001_m_000000_1, Status : FAILED
Error: commodity : Unsupported major.minor version 51.0
14/01/16 16:45:54 INFO mapred.JobClient: Task Id : attempt_201401161614_0001_m_000000_2, Status : FAILED
Error: commodity : Unsupported major.minor version 51.0
14/01/16 16:46:07 INFO mapred.JobClient: Job complete: job_201401161614_0001
14/01/16 16:46:07 INFO mapred.JobClient: Counters: 6
14/01/16 16:46:07 INFO mapred.JobClient: Job Counters
14/01/16 16:46:07 INFO mapred.JobClient: Failed map tasks=1
14/01/16 16:46:07 INFO mapred.JobClient: Launched map tasks=4
14/01/16 16:46:07 INFO mapred.JobClient: Total time spent by all maps in occupied slots (ms)=23048
14/01/16 16:46:07 INFO mapred.JobClient: Total time spent by all reduces in occupied slots (ms)=0
14/01/16 16:46:07 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
14/01/16 16:46:07 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
14/01/16 16:46:07 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead
14/01/16 16:46:07 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 51.0252 seconds (0 bytes/sec)
14/01/16 16:46:07 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead
14/01/16 16:46:07 INFO mapreduce.ImportJobBase: Retrieved 0 records.
14/01/16 16:46:07 ERROR tool.ImportTool: Error during import: Import job failed!
내가 JDK 1.6 실행 시도하고 작동하지만, 난 정말 다시 그에게 내가 Sqoop을을 사용해야 할 때마다 전환하고 싶지 않아요.
내가 무엇을 바꾸어야하는지 아는 사람이 있습니까?
있는 jinfo는 VMVersionMismatchException을 던진다. ps aux를 실행하면 볼 수 있습니다. | 그것이 hadoop 항아리에 대한 자바 1.6을 사용하고있는 grep java. 문제는 방금 내 JAVA_HOME을 .bashrc 파일에 설정했지만, hadoop 항아리가 부팅시 시작된다는 것입니다. cloudera가 설정 한 방식이기 때문입니다. 따라서 JAVA_HOME은 루트로 설정되지 않으며, 부팅 시간으로 설정되지 않습니다. 내가 hadoop conf 파일을 감싸고 자바 1.6에 대한 언급이 없다는 것을 발견했다면 /etc/init.d 파일의 어딘가에 설정해야하지만, 여전히 어디 있는지 알아 내려고합니다. – msknapp
나는 루트 사용자의 bashrc에서 JAVA_HOME을 설정하려고 시도했다. 그런 다음 루트에서 java -version을 실행하고 Java 7을 사용하고 있다고 확인한 다음 재부팅했다. 그럼에도 불구하고, hadoop 서비스는 여전히 Java 6 – msknapp
으로 시작합니다. Java 7을 사용하기 위해/etc/profile을 수정했습니다. 기본적으로/etc와/usr 및/root를 모두 Java 1.6을 가리키는 모든 항목에 대해 grepped하고 아무 것도 발견하지 못했습니다./usr/java에있는 모든 심볼릭 링크는 java 7을 가리 킵니다. 그럼에도 불구하고이 모든 것이 여전히 Java 6에서 시작됩니다. 나는 정말로 아이디어가 부족합니다. – msknapp