Hadoop开发常见异常及解决办法总结(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在Hadoop中进行MapReduce开始时,会有进行Map端Join的场景,一般都需要在Driver中添加缓存文件。

5.Hive元数据配置内嵌模式报错Error: FUNCTION ‘NUCLEUS_ASCII’ already exists

在Hive中,元数据又种配置方式,即内置模式、本地模式和远程模式,在配置内置模式执行命令schema initialization to 2.3.0初始化元数据库时,执行命令用于生成metastore目录metastore_db,可能会报错Error: FUNCTION 'NUCLEUS_ASCII' already exists,具体如下:

Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed stacktrace.

这是因为在Hive的安装路径下已经存在metastore_db目录,所以在执行命令创建该目录时会存在冲突。

解决办法:

在安装目录下修改metastore_db目录的名字或者直接删除即可解决问题。

6.编译Hue时报错/usr/bin/ld: cannot find -lcrypto和/usr/bin/ld: cannot find -lssl

Hue是Hadoop的可视化框架,安装是通过编译实现的,通过make install命令进行编译,在编译时可能会报错,如下:

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
collect2: 错误:ld 返回 1
error: command 'gcc' failed with exit status 1
make[2]: *** [/opt/software/hue-release-4.3.0/desktop/core/build/python-ldap-2.3.13/egg.stamp] 错误 1
make[2]: 离开目录“/opt/software/hue-release-4.3.0/desktop/core”
make[1]: *** [.recursive-install-bdist/core] 错误 2
make[1]: 离开目录“/opt/software/hue-release-4.3.0/desktop”
make: *** [install-desktop] 错误 2

分析:

即没有找到libssl和libcrypto,查看yum info openssl可以发现openssl已经安装,再查看如下:

[root@node02 lib64]$ ll /usr/lib64/libssl*
-rwxr-xr-x. 1 root root 340976 9月  27 2018 /usr/lib64/libssl3.so
lrwxrwxrwx. 1 root root     16 8月  19 03:23 /usr/lib64/libssl.so.10 -> libssl.so.1.0.2k
-rwxr-xr-x. 1 root root 470360 10月 31 2018 /usr/lib64/libssl.so.1.0.2k

可以看到,根本原因是虽然有libssl的动态库文件,但没有文件名为libssl.so的文件,系


统找不到它。

解决办法:

添加软链接,将动态库文件指向ld可以找到的链接,如下:

[root@node02 lib64]$ ln -s /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so
[root@node02 lib64]$ ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so
[root@node02 lib64]$ ll /usr/lib64/libssl*
-rwxr-xr-x. 1 root root 340976 9月  27 2018 /usr/lib64/libssl3.so
lrwxrwxrwx  1 root root     27 10月  3 13:28 /usr/lib64/libssl.so -> /usr/lib64/libssl.so.1.0.2k
lrwxrwxrwx. 1 root root     16 8月  19 03:23 /usr/lib64/libssl.so.10 -> libssl.so.1.0.2k
-rwxr-xr-x. 1 root root 470360 10月 31 2018 /usr/lib64/libssl.so.1.0.2k
[root@node02 lib64]$ ll /usr/lib64/libcrypto*
lrwxrwxrwx 1 root root      19 10月  3 13:32 /usr/lib64/libcrypto.so -> libcrypto.so.1.0.2k
lrwxrwxrwx 1 root root      19 10月  3 13:32 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k
-rwxr-xr-x 1 root root 2520768 12月 17 2020 /usr/lib64/libcrypto.so.1.0.2k

可以看到,已经添加了软链接。

此时再编译即能成功。

7.编译Hue报错EnvironmentError: mysql_config not found

在编译Hue时,需要MySQL,所以在编译时可能会报错,如下:

EnvironmentError: mysql_config not found
make[2]: *** [/opt/software/hue-release-4.3.0/desktop/core/build/MySQL-python-1.2.5/egg.stamp] 错误 1
make[2]: 离开目录“/opt/software/hue-release-4.3.0/desktop/core”
make[1]: *** [.recursive-install-bdist/core] 错误 2
make[1]: 离开目录“/opt/software/hue-release-4.3.0/desktop”
make: *** [install-desktop] 错误 2

此时需要安装mysql-devel,直接执行命令yum -y install mysql-devel进行安装即可。

然后再编译即能编译成功。

8.启动Impala时报错Unit not found

Impala包括3个角色:


  • impala-server
  • impala-statestored
  • impala-catalogd


在配置好安装时需要分别启动,在启动impala-state-store和impala-catalog时可能会报错:

[root@node03 ~]$ service impala-state-store start
Redirecting to /bin/systemctl start impala-state-store.service
Failed to start impala-state-store.service: Unit not found.
[root@node03 ~]$ service impala-catalog start
Redirecting to /bin/systemctl start impala-catalog.service
Failed to start impala-catalog.service: Unit not found.

即会报错Unit not found.,说明安装的服务未找到,此时可以查看:

[root@node03 ~]$ yum list | grep impala
impala.x86_64                               2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
impala-catalog.x86_64                       2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
impala-server.x86_64                        2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
impala-shell.x86_64                         2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
impala-state-store.x86_64                   2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
hue-impala.x86_64                           3.9.0+cdh5.7.6+1881-1.cdh5.7.6.p0.7.el7
impala-debuginfo.x86_64                     2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7
impala-udf-devel.x86_64                     2.5.0+cdh5.7.6+0-1.cdh5.7.6.p0.7.el7

显然已经安装了这两个服务,说明可能安装的时候出了问题,未加载到systemctl的列表中,查看systemctl的服务列表可以使用systemctl list-unit-files --type=service命令。

解决办法:

先执行命令yum remove impala-state-store.x86_64 -y和yum remove impala-catalog.x86_64 -y这两个服务,再执行yum -y install impala-state-store和yum -y install impala-catalog命令重新安装这两个服务,然后再启动就能成功了。

9.安装Impala后启动HDFS报错java.io.IOException

在安装Impala时,需要进行Hadoop相关的配置,但是在进行相关配置后,可能会出现一些问题,例如启动HDFS时可能不能成功启动DataNode,此时可以查看日志,发现报错如下:

2021-10-10 20:44:40,037 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: The path component: '/var/lib/hadoop-hdfs' in '/var/lib/hadoop-hdfs/dn_socket' has permissions 0755 uid 993 and gid 1003. It is not protected because it is owned by a user who is not root and not the effective user: '0'. This might help: 'chown root /var/lib/hadoop-hdfs' or 'chown 0 /var/lib/hadoop-hdfs'. For more information: https://wiki.apache.org/hadoop/SocketPathSecurity
        at org.apache.hadoop.net.unix.DomainSocket.validateSocketPathSecurity0(Native Method)
        at org.apache.hadoop.net.unix.DomainSocket.bindAndListen(DomainSocket.java:193)
        at org.apache.hadoop.hdfs.net.DomainPeerServer.<init>(DomainPeerServer.java:40)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.getDomainPeerServer(DataNode.java:1171)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:1137)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1369)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:495)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2695)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2598)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2645)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2789)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2813)
2021-10-10 20:44:40,046 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1: java.io.IOException: The path component: '/var/lib/hadoop-hdfs' in '/var/lib/hadoop-hdfs/dn_socket' has permissions 0755 uid 993 and gid 1003. It is not protected because it is owned by a user who is not root and not the effective user: '0'. This might help: 'chown root /var/lib/hadoop-hdfs' or 'chown 0 /var/lib/hadoop-hdfs'. For more information: https://wiki.apache.org/hadoop/SocketPathSecurity
2021-10-10 20:44:40,052 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at node01/192.168.31.155
************************************************************/

显然,这是因为root用户没有对/var/lib/hadoop-hdfs目录的权限。

在安装Impala时可以进行短路读取配置,需要创建短路读取中转站,即目录/var/lib/hadoop-hdfs,如果不添加root用户的操作权限,就可能存在启动失败。

解决办法:

此时只需要在所有节点都执行chown root /var/lib/hadoop-hdfs设置用户即可。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
数据采集 分布式计算 搜索推荐
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
|
11月前
|
分布式计算 Hadoop 大数据
|
数据采集 缓存 分布式计算
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(二)
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(二)
|
存储 SQL 缓存
Hadoop开发常见异常及解决办法总结(上)
在Hadoop中进行MapReduce开始时,会有进行Map端Join的场景,一般都需要在Driver中添加缓存文件。
Hadoop开发常见异常及解决办法总结(上)
|
分布式计算 Hadoop Java
Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
235 0
Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
uiu
|
存储 分布式计算 安全
【亲测】Hadoop 高可用集群搭建 与 开发环境部署(二)
【亲测】Hadoop 高可用集群搭建 与 开发环境部署(二)
uiu
143 0
【亲测】Hadoop 高可用集群搭建 与 开发环境部署(二)
|
分布式计算 Hadoop Linux
hadoop启动hdfs异常
hadoop启动hdfs异常
226 0
|
存储 分布式计算 资源调度
吐血整理的Hadoop最全开发指南【完全分布式集群部署篇】(开发重点)(下)
吐血整理的Hadoop最全开发指南【完全分布式集群部署篇】(开发重点)(下)
215 0
|
分布式计算 资源调度 安全
吐血整理的Hadoop最全开发指南【完全分布式集群部署篇】(开发重点)(上)
吐血整理的Hadoop最全开发指南【完全分布式集群部署篇】(开发重点)
806 0
|
30天前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
129 6