복붙노트

[HADOOP] sqoop (1.4.5)을 사용하여 mysql 데이터를 hdfs (hadoop 2.4.1)로 가져 오기

HADOOP

sqoop (1.4.5)을 사용하여 mysql 데이터를 hdfs (hadoop 2.4.1)로 가져 오기

나는 Hadoop의 초보자이며 sqoop 1.4.5를 사용하여 로컬 데이터베이스 mysql에서 hadoop 2.4.1의 hdfs로 테이블을 가져 오려고합니다.

mysql version : 5.5.38   
hdfs version :hadoop 2.4.1   
sqoop version :1.4.5

sqoop-list-databases 시도해보십시오. 정답을 제공합니다. 그러나 다음 cmd를 제공합니다.

sqoop import --connect jdbc:mysql://localhost:3306/information_schema --username root --password root --table VIEWs -m 1

그리고 나는 얻는다 :

 ERROR tool.ImportTool: Encountered IOException running import job: java.io.FileNotFoundException: File does not exist: hdfs://localhost:54310/usr/lib/sqoop/lib/jackson-mapper-asl-1.9.13.jar
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1128)
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1120)
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1120)
    at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288)
    at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)
    at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestamps(ClientDistributedCacheManager.java:93)
    at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestampsAndCacheVisibilities(ClientDistributedCacheManager.java:57)
    at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:265)
    at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:301)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:389)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1556)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1282)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1303)
    at org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:186)
    at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:159)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:247)
    at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:665)
    at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:118)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:497)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:601)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

해결법

  1. ==============================

    1.mapred-site.xml 파일이 잘못 구성되었습니다. 파일 내용을 확인하십시오. 내용은 다음과 같습니다.

    mapred-site.xml 파일이 잘못 구성되었습니다. 파일 내용을 확인하십시오. 내용은 다음과 같습니다.

     <configuration>
     <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
    </property>
    </configuration>
    

    일반적으로 mapred-site.xml 파일 내용은 core-site.xml 내용과 동일합니다. Core-site.xml 파일 내용은 다음과 같습니다.

    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://master:54310</value>
    </property>
    </configuration>
    

    예 : Tayfun Yalcinkaya

  2. ==============================

    2.mysql을 사용할 수 있도록 mysql 드라이버 jar 및 누락 된 jar을 sqoop 설치의 lib 폴더에 추가하십시오.

    mysql을 사용할 수 있도록 mysql 드라이버 jar 및 누락 된 jar을 sqoop 설치의 lib 폴더에 추가하십시오.

  3. ==============================

    3.HDFS에서 임시 파일을 제거하십시오 (/ user / hduser / ***와 같은 오류가 이미 존재하는 경우).

    HDFS에서 임시 파일을 제거하십시오 (/ user / hduser / ***와 같은 오류가 이미 존재하는 경우).

  4. from https://stackoverflow.com/questions/25996168/import-mysql-data-to-hdfshadoop-2-4-1-using-sqoop1-4-5 by cc-by-sa and MIT license