HDP错误汇总

来源:互联网 发布:英制螺丝孔算法 编辑:程序博客网 时间:2024/06/06 12:46

前言

上一篇《HDP 2.5安装搭建部署》主要写了一些关于安装的步骤,但不是每次都能顺利的安装成功了,不可避免总是会报很多错误,这里总结一些错误的解决方法。

MySQL

mysql数据库驱动找不到错误
以下命令默认以root用户运行

# yum install mysql-connector-java -y# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

Sqoop2

使用基于HDP2.5使用sqoop2抽取数据库表数据到HDFS上面也会遇到很多问题。这里记录一下。
启动报错
org.apache.sqoop.common.SqoopException: CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)

这个是因为sqoopUrl设置的问题,原来设置为:
http://master:12000/sqoop
需要改为
http://master:12000/sqoop/
很坑,就差一个斜杠。

mapreduce

启动报错
Caused by: java.net.URISyntaxException: Illegal character in path at index 11: /hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework

这个是因为mapreduce框架路径设置的问题,进入HDP Web控制台,点击右边的
MapReduce2——>Configs——>Advanced展开mapred-site属性设置,
找到mapreduce.application.framework.path属性,将其值由/hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework
改为/usr/hdp/${hdp.version}/hadoop/mapreduce.tar.gz#mr-framework
然后将在HDFS上创建对应路径目录,如:/usr/hdp/2.6.0.3-8/hadoop/
之后将mapreduce.tar.gz这个文件上传到该目录下
最后在重启服务即可。
如果还不行的话,可以尝试将hdp.version改为实际的版本名,并且重启ambari-server。

yarn

启动sqoop2报错
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: yarn is not allowed to impersonate lu
这个是因为hadoop2之后的权限问题导致,本地提交的job想要yarn代理来跑,但是yarn又不允许给主机用户代理,所以就会报这个错误了,进入HDP Web控制台
HDFS——>Configs——>Advanced
在下面找到Custom core-site展开,添加以下属性配置,然后重启服务即可

hadoop.proxyuser.yarn.hosts=*hadoop.proxyuser.yarn.groups=*

Oozie

问题1

使用Oozie调度sqoop的时候需要注意jobTracker的值不一定就是8021或8032,网上和官方文档有有一定的误导性,如果使用的是HDP2.5的话,其集成的是Hadoop 2.x,那么jobTracker的值其实是yarn.resourcemanager.address对应的值,在HDP2.5中它是master:8050,在CDH中默认是8032。master为hadoop ResourceManager host主机名,在hdp web控制台可通过
YARN——>Configs——>Advanced——>Advanced yarn-site,然后展开找到
yarn.resourcemanager.address属性即可。

问题2

Oozie调度Sqoop1的时候mapreduce应用可以成功跑完,但是最后job却被killed掉了,报错信息如下:
Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]
很简短,但是找半天最后很无语。这个问题可能跟MySQL的jdbc驱动版本有关,一开始使用的是5.1.25,如下:
mysql-version
后来全部替换为5.1.29然后重启服务就好了。。
替换的地方有如下:

中间数字是hdp的版本,可根据不同的版本号进行调整/usr/hdp/2.5.3.0/oozie/oozie-server/webapps/oozie/WEB-INF/lib//usr/hdp/2.5.3.0/oozie/libext//usr/hdp/2.5.3.0/oozie/share/lib/oozie//usr/hdp/2.5.3.0/oozie/share/lib/sqoop//usr/hdp/2.5.3.0/sqoop/lib/下面两个路径是在hadoop hdfs文件系统上的路径,需要上传新的jar包到该路径hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/oozie/hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/sqoop/

我这里jar包是通过Maven来下载的~

问题3

调度启动sqoop job,出现类找不到异常,报错信息如下:
Launcher exception: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SqoopMain not found

这里是有一个jar包没有上传到hdfs上面,找到下面这个jar包:
/usr/hdp/2.5.3.0/oozie/libserver/oozie-sharelib-sqoop-4.2.0.2.6.0.3-8.jar
然后将其上传到
hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/oozie/
然后刷新sharelib或者重启服务

刷新命令# oozie admin -oozie http://e5:11000/oozie -sharelibupdate

这里建议将oozie相关的sharelib jar包都上传上去,可能后面会有用到,避免再次报这个错。

HBase

集群HBase RegionServers服务启动报错:

问题1

Caused by: ClassNotFoundException: org.apache.hadoop.fs.FileSystem

这个是因为没有将hadoop-common.jar添加到hbase的classpath中,导致的错误。
登陆HDP web控制台,点击左边的HBase——>Configs——>Advanced
展开Advanced hbase-env找到# Extra Java CLASSPATH elements. Optional.
在下面添加以下内容:

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar

重启HBase服务即可。

问题2

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.PlatformName

这个问题与上面的类似,同样是classpath缺少jar包。
步骤如上,添加hadoop-auth.jar即可。

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar:/usr/hdp/current/hadoop-client/hadoop-auth.jar

问题3

Caused by: java.io.IOException: No FileSystem for scheme: hdfs

问题原因同上,添加hadoop-hdfs.jar到classpath即可。

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar:/usr/hdp/current/hadoop-client/hadoop-auth.jar:/usr/hdp/current/hadoop-hdfs-client/hadoop-hdfs.jar

Hue

hdp集成hue后,oozie Dashboard 打开报错:
User [hue] not defined as proxyuser
这个需要Oozie添加hue用户代理,
Oozie——>Configs——>Custom oozie-site
添加以下属性,重启Oozie服务即可:

oozie.service.ProxyUserService.proxyuser.hue.groups=*oozie.service.ProxyUserService.proxyuser.hue.hosts=*

待续,后面再慢慢更新

0 0
原创粉丝点击