2

使用 sqoop 导入命令时出现以下错误: ERROR security.UserGroupInformation: PriviledgedActionException as:SqoopUser (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: hdfs://localhost:8020/home/SqoopUser /sqoop-1.4.3-cdh4.4.0/sqoop-1.4.3-cdh4.4.0.jar。

我正在使用 Cloudera hadoop 和 Sqoop。

无法理解,为什么它在 hdfs 中寻找 jar 文件。

问候,大数据开发人员

4

6 回答 6

4

除了 Daniel Koverman 的回答之外,也这样做。这将对您有所帮助。

导出 HADOOP_MAPRED_HOME=/usr/lib/hadoop-0.20-mapreduce 导出 HADOOP_HOME=/usr/lib/hadoop-0.20-mapreduce

将这两行添加到

/etc/default/hadoop 和 /etc/default/hiveserver

于 2013-11-04T12:09:11.333 回答
3

Hadoop 服务通常会在 HDFS 中查找 jar,因为集群中的所有节点都可以访问 HDFS 中的文件。如果由 Hadoop 服务(在本例中为 Sqoop)启动的 MapReduce 作业依赖于这些 jar,这一点很重要。请记住,映射器是在 DataNode 上运行的,而不是在 NameNode 上运行,即使您(可能)正在从 NameNode 运行 Sqoop 命令。将罐子放在 HDFS 上并不是解决这个问题的唯一可能解决方案,但它是一个明智的解决方案。

现在我们可以处理实际的错误。至少有一个,但可能是所有的 Mapper 都找不到他们需要的 jar。这意味着 jar 不存在或尝试访问它们的用户没有所需的权限。首先通过hadoop fs -ls home/SqoopUser/sqoop-1.4.3-cdh4.4.0/sqoop-1.4.3-cdh4.4.0.jar在集群上具有超级用户权限的用户运行来检查文件是否存在。如果它不存在,请将其与hadoop fs -put {jarLocationOn/NameNode/fileSystem/sqoop-1.4.3-cdh4.4.0.jar} /home/SqoopUser/sqoop-1.4.3-cdh4.4.0/sqoop-1.4.3-cdh4.4.0.jar. 我没有专门与 Cloudera 合作过,所以你必须自己在 NameNode 上追踪 jar 的位置。如果 Cloudera 与 Hortonworks 类似,那么偶尔会出现这样的问题,即集群部署脚本/文档会遗漏几个必要的步骤来让一切正常运行。

现在我们知道该文件存在,我们可以检查用户 SqoopUser 是否具有该文件的权限。再次,运行hadoop fs -ls home/SqoopUser/sqoop-1.4.3-cdh4.4.0/sqoop-1.4.3-cdh4.4.0.jar并查看文件权限。还要检查包含 jar 的目录的权限。解释 POSIX 文件权限超出了这个答案的范围,所以如果你不熟悉,你可能需要阅读这些。一个重要的注意事项是 HDFS 没有自己的组概念,它基于底层操作系统的组。只需确保 SqoopUser 可以读取 jar 并且所有父目录都可以由 SqoopUser 执行。不分青红皂白的用户chmod 777将采取这一点,即hadoop fs -chmod 777 /home/SqoopUser/sqoop-1.4.3-cdh4.4.0/sqoop-1.4.3-cdh4.4.0.jar。但是,如果您的环境需要,当然要更加了解您授予的权限。

如果您发现文件权限比您想要的更频繁地绊倒您,那么核选项是设置dfs.permissionsfalsein hdfs-site.xml。这将允许所有用户访问 HDFS 上的所有文件。这对于快速开发可能非常有用,但留下来更安全dfs.permisssions

于 2013-10-25T04:58:14.560 回答
0

首先,答案:

您需要刷新客户端配置文件。在 CDH 5 中,这可以通过单击服务旁边的圆形箭头符号从管理器 UI 的首页完成。我认为导致您的问题的配置是YARN服务,但您最好将所有配置文件更新到最新状态。

二、背景:

我只是为自己解决了这个问题。我正在使用 CDH 5.0。

这是我运行的命令和遇到的错误:

$ sqoop import --connect jdbc:mysql://xxx/g2_2 --username xxx --password xxx --table client
...
14/05/27 22:11:54 WARN security.UserGroupInformation: PriviledgedActionException as:aortiz (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: hdfs://xxx:8020/opt/cloudera/parcels/CDH-5.0.1-1.cdh5.0.1.p0.47/lib/sqoop/lib/commons-io-1.4.jar
14/05/27 22:11:54 ERROR tool.ImportTool: Encountered IOException running import job: java.io.FileNotFoundException: File does not exist: hdfs://xxx:8020/opt/cloudera/parcels/CDH-5.0.1-1.cdh5.0.1.p0.47/lib/sqoop/lib/commons-io-1.4.jar
于 2014-05-27T23:15:18.113 回答
0

我也遇到过这样的问题。我只是使用检查我的 hadoop 服务

jps 10869 JobHistoryServer 10610 NameNode 10669 DataNode 15215 Jps 10738 ResourceManager 3978 Main

节点管理器未运行。

更改了 yarn-site.xml 中的一些设置,现在 sqoop 在我的本地文件系统中找到我的 jar。

于 2014-01-23T08:40:36.927 回答
0

请执行以下命令,这将解决您的问题。它会将您的文件复制到 HDFS 系统中。

hdfs dfs -copyFromLocal /opt/hadoop/sqoop-1.4.6 hdfs://localhost:9000/opt/hadoop/sqoop-1.4.6

hdfs dfs -copyFromLocal /opt/hadoop/sqoop-1.4.6/lib hdfs://localhost:9000/opt/hadoop/sqoop-1.4.6/lib

hdfs dfs -copyFromLocal /opt/hadoop/sqoop-1.4.6/sqoop-1.4.6.jar hdfs://localhost:9000/opt/hadoop/sqoop-1.4.6/sqoop-1.4.6.jar

同样复制任何 HDFS 系统无法获取的文件。

注意:上面的命令/opt/hadoop/sqoop-1.4.6是我的系统 sqoop 安装位置

于 2015-11-01T16:10:08.427 回答
0

首先我们必须授予文件的所有权限,例如'将文件名的所有权限。*授予'%'@“localhost';'将文件名的所有权限。*授予''@'localhost';把这个给命令并执行

于 2015-10-30T08:44:17.843 回答