大数据:Sqoop-导出错误

Posted

技术标签:

【中文标题】大数据:Sqoop-导出错误【英文标题】:Big Data: Sqoop-Export Error 【发布时间】:2015-10-01 16:03:35 【问题描述】:

我对这个世界很陌生。使用 sqoop 运行导出命令时,我收到以下错误“输入路径不存在:hdfs://quickstart.cloudera:8020/home/cloudera/Test5”。我检查了路径/home/cloudera/Test5,并且该文件存在于路径中。从 sqoop 配置的core-site.xml 文件中可以看到 hdfs 路径的详细信息,当我通过文件浏览器对其进行测试时,只需打开 IE 并输入hdfs://quickstart.cloudera:8020/home/cloudera/Test5,就会出现“无法连接”的消息。我不知道该属性的正确参数值。请帮我解决这个问题。

请在下面找到属性文件参数和错误详细信息。

参数文件

<name>fs.defaultFS</name>
<value>hdfs://quickstart.cloudera:8020</value>

错误

[cloudera@quickstart hadoop-conf]$ sqoop export --connect jdbc:sqlserver://10.34.83.177:54815 --username hadoop --password xxxxxx --table hadoop_sanjeeb3 --export-dir /home/cloudera/Test5 -mapreduce-job-name sqoop_export_job -m 1
Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
15/10/01 08:42:47 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5-cdh5.4.2
15/10/01 08:42:47 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
15/10/01 08:42:48 INFO manager.SqlManager: Using default fetchSize of 1000
15/10/01 08:42:48 INFO tool.CodeGenTool: Beginning code generation
15/10/01 08:42:49 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM [hadoop_sanjeeb3] AS t WHERE 1=0
15/10/01 08:42:49 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-mapreduce
Note: /tmp/sqoop-cloudera/compile/aa9c9fd9f69b76202be29508561f22ff/hadoop_sanjeeb3.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
15/10/01 08:42:51 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-cloudera/compile/aa9c9fd9f69b76202be29508561f22ff/hadoop_sanjeeb3.jar
15/10/01 08:42:51 INFO mapreduce.ExportJobBase: Beginning export of hadoop_sanjeeb3
15/10/01 08:42:51 INFO Configuration.deprecation: mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
15/10/01 08:42:51 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar
15/10/01 08:42:54 WARN mapreduce.ExportJobBase: Input path hdfs://quickstart.cloudera:8020/home/cloudera/Test5 does not exist
15/10/01 08:42:54 INFO Configuration.deprecation: mapred.reduce.tasks.speculative.execution is deprecated. Instead, use mapreduce.reduce.speculative
15/10/01 08:42:54 INFO Configuration.deprecation: mapred.map.tasks.speculative.execution is deprecated. Instead, use mapreduce.map.speculative
15/10/01 08:42:54 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
15/10/01 08:42:54 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/10/01 08:42:58 INFO mapreduce.JobSubmitter: Cleaning up the staging area /tmp/hadoop-yarn/staging/cloudera/.staging/job_1443557935828_0011
15/10/01 08:42:58 WARN security.UserGroupInformation: PriviledgedActionException as:cloudera (auth:SIMPLE) cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://quickstart.cloudera:8020/home/cloudera/Test5
15/10/01 08:42:58 ERROR tool.ExportTool: Encountered IOException running export job: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://quickstart.cloudera:8020/home/cloudera/Test5

问候 - 桑吉布

【问题讨论】:

【参考方案1】:

似乎您在本地文件系统和 hadoop 文件系统之间有些混淆。您尝试使用 sqoop 导出的文件应该存在于 hdfs 中。目录位置 /home/cloudera/Test 似乎存在于本地文件系统中。

执行下面给出的命令并确认你提到的位置存在于hdfs中。

hadoop fs -ls /home/cloudera/Test5

如果出现错误,则表示该目录在 hdfs 中不存在。你不能用简单的 ls 命令浏览 hdfs,你必须使用 hadoop 命令。如果您想使用浏览器浏览 hdfs 目录,请打开 namenode web ui (http://namenode-host:50070),然后您可以选择浏览文件和目录。 您无法使用浏览器使用 hdfs://quickstart.cloudera:8020/home/cloudera/Test5 之类的 url 浏览 hdfs 文件系统。您可以使用webhdfs 进行类似操作。

确保文件存在于 hdfs 中并再次触发该命令。它会起作用的。

注意:通常我们从不将 /home/cloudera 之类的用户目录保存在 hdfs 中。结构类似于 /user/username。默认情况下,hdfs 将 /user/username 视为 hdfs 中的主目录。其中 username 将是 linux 中的当前登录用户

【讨论】:

谢谢..问题得到解决,因为我的命令中有语法错误..我发现了它,它对我来说非常好。【参考方案2】:

该文件可能在本地文件系统中,但不在 hadoop 分布式文件系统 (HDFS) 中。您可以通过

将这些本地文件从本地文件系统添加到 HDFS
  hadoop fs -put <local_file_path> <HDFS_diresctory> 

命令。您应该以 HDFS 用户的身份进行操作。

【讨论】:

以上是关于大数据:Sqoop-导出错误的主要内容,如果未能解决你的问题,请参考以下文章

大数据篇-使用SQOOP导入导出数据

大数据学习之路又之从小白到用sqoop导出数据

大数据(3j)Sqoop生产经验

大数据(3j)Sqoop生产经验

大数据之非常详细Sqoop安装和基本操作

大数据开发之Sqoop详细介绍