【CDH】Error: JAVA_HOME is not set and could not be found.

错误一:

hdfs dfs -mkdir -p /flume/mysql
Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

这些类似的权限问题都属于同类问题,他是我说我们的执行Hadoop命令的用户没有,执行权限。
刚开始我想解决问题的思路是,将当前用户授权。(这种想法是不正确的,不要为了简化输入命令,就试图修改这些东西)
现在的想法:用的他指定的用户去执行

[root@cdh1 data]#sudo -u hdfs  hadoop fs -mkdir /newFile
或者[root@cdh1 data]#sudo -u hdfs  dfhs dfs  -mkdir /newFile
更简单的是,先进入这个用户,su hdfs

错误二:

sudo -u hdfs hdfs dfs -mkdir -p /flume/mysql  
Error: JAVA_HOME is not set and could not be found.

java -version
java version "1.8.0_91"

export
declare -x CLASSPATH=".:/*/*/jdk1.8.0_91/lib/dt.jar:/*/*/jdk1.8.0_91/lib/tools.jar"
declare -x JAVA_HOME="/*/*/jdk1.8.0_91"

其实是Bigtop 的原因: 由于CDH不会使用系统默认JAVA_HOME环境变量,而是使用Bigtop进行管理,故我们需要安装Bigtop的规则在指定的位置安装jdk。
这里, 很明显可以看到, JAVA_HOME 并没有设置成功。可是呢? 我确实是设置了JAVA_HOME 的,而且在linux shell 执行 echo $JAVA_HOME  也是有输出的。 百思不得其解。

配置在这里:
find / -name cloudera-config.sh
/*/*/*/cloudera-manager/cm-5.10.0/lib64/cmf/service/common/cloudera-config.sh
  local JAVA8_HOME_CANDIDATES=(
    '/usr/java/jdk1.8'
    '/usr/java/jre1.8'
    '/usr/lib/jvm/j2sdk1.8-oracle'
    '/usr/lib/jvm/j2sdk1.8-oracle/jre'
    '/usr/lib/jvm/java-8-oracle'
  )

于是,建立一个已经有的JAVA_HOME  链接到 /usr/java/jdk1.8 就好了!
目标位置:/usr/java/jdk1.8
原文件:/*/*/jdk1.8.0_91
ln -s 源文件 目标文件
ln -s /*/*/jdk1.8.0_91 /usr/java/jdk1.8

sudo -u hdfs hdfs dfs -mkdir -p /flume/mysql
成功

### 回答1: 这个错误是由于Sqoop无法加载MySQL数据库驱动程序类com.mysql.jdbc.Driver导致的。可能是因为驱动程序JAR文件未正确配置或未在Sqoop的类路径中找到。您可以尝试检查以下内容: 1. 检查MySQL驱动程序JAR文件是否已正确配置到Sqoop的类路径中。 2. 确保MySQL驱动程序JAR文件已正确安装在Sqoop所在的机器上。 3. 检查MySQL驱动程序版本是否与Sqoop版本兼容。 4. 如果您使用的是CDH(Cloudera Distribution Hadoop),则可以尝试使用CDH提供的Sqoop版本和MySQL驱动程序版本。 希望这些提示可以帮助您解决问题。 ### 回答2: 该错误通常表示Sqoop无法加载MySQL JDBC驱动程序类com.mysql.jdbc.Driver。Sqoop需要这个驱动程序才能连接MySQL数据库,如果该类未找到,则Sqoop无法执行任何与MySQL相关的任务。 要解决此错误,有几个步骤可以尝试: 1. 检查MySQL JDBC驱动程序是否存在。请确保已将mysql-connector-java.jar文件放置在Sqoop类路径中。如果未在类路径中,则需要将其添加到类路径中。 2. 检查MySQL JDBC驱动程序的版本。Sqoop需要MySQL JDBC驱动程序的特定版本才能正常工作。请确保正在使用与Sqoop兼容的版本。 3. 检查sqoop-env.sh文件。如果使用的是Sqoop2,则需要在sqoop-env.sh文件中设置正确的数据库驱动程序,以便Sqoop2可以正确加载它。 4. 检查MySQL数据库是否在运行。如果MySQL数据库未运行,则无法使用Sqoop与其进行交互。 总之,如果遇到了这个错误,请先检查以上步骤,并确保所有设置都正确。这将确保Sqoop可以正确连接到MySQL数据库并执行所需的任务。 ### 回答3: 这个错误提示意味着在Sqoop运行时无法加载MySQL数据库的驱动程序。在Sqoop里,需要一个有效的数据库驱动程序来访问和操作数据库。这个错误通常出现在以下几种情况下: 1. 未正确安装MySQL JDBC驱动程序。 Sqoop需要用到MySQL数据库的JDBC驱动程序。如果没有正确地安装MySQL JDBC驱动程序,就会导致这个错误出现。解决此问题的方法是下载并正确安装MySQL JDBC驱动程序。 2. 没有将MySQL JDBC驱动程序添加到Sqoop的classpath中。 如果在Sqoop的classpath中没有将MySQL JDBC驱动程序添加到其中,就无法加载MySQL驱动程序。为了解决这个问题,需要将MySQL JDBC驱动程序添加到Sqoop的classpath中。可以使用export命令设置CLASSPATH变量来将JAR文件所在的目录添加到classpath中,或者在Sqoop命令中使用--driver选项指定MySQL驱动程序路径。 3. MySQL JDBC驱动程序版本不兼容。 如果MySQL JDBC驱动程序的版本不兼容,就会导致无法加载MySQL驱动程序。为了解决这个问题,需要确定MySQL驱动程序的版本是否与Sqoop兼容,并确保使用了兼容的驱动程序版本。 总之,这个错误提示表明出现了无法加载MySQL JDBC驱动程序的问题。要解决这个问题,需要确定MySQL JDBC驱动程序是否正确安装和添加到了Sqoop的classpath中,并确定驱动程序的版本是否与Sqoop兼容。只有这样,才能成功加载MySQL JDBC驱动程序并使用Sqoop访问和操作MySQL数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值