VMware虚拟机Centos7的Hadoop集群搭建中遇到的问题

目录

(1)无法创建新虚拟机: 无法打开配置文件“C:\xxx.vmx”:拒绝访问

(2)有关Hadoop集群的一些问题合集

1、主节点master进程正常,从节点中只有jps

2、启动后jps没有Datenode(主节点和从节点都出现过)

3、启动集群后主节点jps没有NodeManager

4、Hadoop集群输入jsp出现process information unavailable

5、Hadoop集群启动错误

(3)Hive3 报错

(4)hive 插入数据,insert后报错 FAILED


     本文是我在VMware虚拟机Centos7中搭建Hadoop完全分布式集群时所遇到的一些问题,通过在网上查阅资料都已解决,这些问题可能会比较常见,所以发出来供大家参考。

(1)无法创建新虚拟机: 无法打开配置文件“C:\xxx.vmx”:拒绝访问

问题原因:这是因为创建虚拟机需要计算机管理员权限,需要使用管理员运行该程序。

解决方法:退出当前VMware,然后右键桌面VMware的快捷方式以管理员身份运行重新进行创建。

(2)有关Hadoop集群的一些问题合集

在配置完Hadoop集群后,执行命令start-all.sh启动集群,并可以通过jps来查看节点运行情况,但是由于各种各样的原因(包括但不限于配置文件出错、频繁格式化namenode),可能会导致在不同节点执行jps时会没有相应的进程,并且情况可能各不相同,以下是对我搭建集群时出现的问题做出陈述,并且给出我的解决方法。

我的节点分配为master:Datanode、Namenode、NodeManager、Resourcemanager、NodeManager

node1和node2:Datanode、NodeManager

1、主节点master进程正常,从节点中只有jps

问题原因:Hadoop2需要在etc/hadoop目录下的slave文件中写入主节点与从节点名称,刚开始我就是在slave中写入的名称,而我的Hadoop版本为3,对应的配置文件为workers,所以会出错。

解决方法:因此Hadoop3需要在hadoop-3.1.3/etc/hadoop/workers中写入主从节点名称而非slave。

2、启动后jps没有Datenode(主节点和从节点都出现过)

问题原因:这大多数情况是因为多次输入hadoop namenode -format格式化节点的缘故,这导致了的datanode的clusterID和 namenode的clusterID不匹配,从而在启动后没有datanode进程。

想要解决这个问题,首先需要打开配置文件core-site.xml,查看初始化节点产生的相关文件存在的路径,如下图所示,我的Hadoop集群产生日志文件等都保存在/usr/local/soft/hadoop-3.1.3/tmp下,因此需要进入该目录下解决问题,下面介绍这个问题的两个解决方法。

解决方法一(简单粗暴):重新格式化,首先执行stop-all.sh关闭集群,然后在xftp7找到master主节点集群中的tmp目录,将里面的文件全部删除(主节点执行即可!!在终端用命令删除也可以,在hadoop目录下执行命令rm -rf /tmp/)。

然后还需要删除hadoop安装目录的logs文件夹(与tmp同级),将logs下边的所有文件全部删除即可(这一步需要三个节点都执行!!)。

删除完毕后格式化hadoop:hadoop  namenode -format,等待过后启动Hadoop集群:start-all.sh,执行jps查看进程,可以看到问题解决。但是因为要重新格式化,所以只适用于Hadoop中没有文件或无重要文件的情况

解决方法保留现有数据,首先执行stop-all.sh关闭集群,然后用NameNode节点的~/dfs/name/current/VERSION中的namenode的clusterID替换所有datanode节点机器中~/dfs/data/current/VERSION中的clusterID(注意,两者的路径不一致)。如下面图所示,

修改完毕后重新启动hadoop:start-all.sh。这种方式不影响现有的数据,避免了重新的格式化。

3、启动集群后主节点jps没有NodeManager

问题原因:nodemanager要求的内存最低1024MB以及运行时cpu数量,如果在配置文件中没有相应的设置,就有可能出现启动失败的结果。

解决方法:进入目录cd /usr/local/soft/hadoop-3.1.3/etc/hadoop/,并进入文件yarn-site.xml,增加以下一段代码:

<property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>1024</value>

 </property>

 <property>

        <name>yarn.nodemanager.resource.cpu-vcores</name>

        <value>1</value>

 </property>

保存配置文件后重启集群 stop-all.sh,start-all.sh即可。

4、Hadoop集群输入jsp出现process information unavailable

问题原因:process information unavailable,是因为进程没有被正常结束,比如资源占用过大时挂掉或者没有结束进程就重启服务器,导致原进程变为-- process information unavailable空值

解决方法:首先输入jsp查看,得出进程号为2394,然后ps查看该进程是否存在:

ps -ef|grep 2394

发现存在,随后进入hsperfdata_{当前用户}目录下,ls查看若有2394,则删除对应进程号的文件,执行如下命令即可,随后再jps就无问题了。

rm -rf 2394

5、Hadoop集群启动错误

问题原因:用户权限不够因此启动失败。

解决方法:通过修改系统的环境变量,来增加root用户权限。首先进入配置文件,添加如下内容:

sudo vim /etc/profile.d/my_env.sh

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_JOURNALNODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

然后将文件分发到各个从节点即可。

scr -r my_env.sh node1:/etc/profile.d/my_env.sh

scr -r my_env.sh node2:/etc/profile.d/my_env.sh

(3)Hive3 报错

java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgumen...

问题原因:hadoop和hive的两个guava.jar版本不一致导致问题,程序执行时不知选择哪个,所以就抛出异常。两个jar位置分别位于下面两个目录:

Hive:/usr/local/soft/hive/lib/guava-19.0.jar

Hadoop:/usr/local/soft/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar

解决方法:保留高版本的jar包,故删除hive中的guava然后把hadoop中的文件复制即可。执行命令:

rm -rf /usr/local/soft/hive/lib/guava-19.0.jar

cp/usr/local/soft/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/soft/hive/lib/

(4)hive 插入数据,insert后报错 FAILED

FAILED: Execution Error,

return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

错误提示:

Starting Job = job_1594085668614_0006, Tracking URL = http://kudu:8088/proxy/application_1594085668614_0006/
Kill Command = /root/soft/hadoop-3.2.1/bin/mapred job -kill job_1594085668614_0006
Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0
2020-07-07 09:43:24,559 Stage-1 map = 0%, reduce = 0%
Ended Job = job_1594085668614_0006 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec

错误原因:namenode内存空间不够,JVM剩余内存空间不够新job运行所致。

解决办法:在hive> 下,输入set hive.exec.mode.local.auto=true;即可。以此启用Hive执行引擎的本地模式自动切换功能,这个设置允许Hive在本地模式和远程模式之间自动切换,根据查询的性质来选择执行引擎。

CentOS 7上搭建Hadoop集群的步骤如下: 1. 首先,确保你的CentOS 7系统已经安装了JDK,并配置好了JAVA_HOME环境变量。 2. 下载Hadoop的压缩包,并解压到指定目录。例如,将压缩包解压到/usr/soft/hadoop-2.7.5目录下。 3. 进入Hadoop解压后的文件夹的/etc/hadoop/目录,并修改以下四个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml。 4. 在yarn-site.xml,添加以下属性: ``` <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> ``` 5. 在hdfs-site.xml,添加以下属性: ``` <property> <name>dfs.namenode.name.dir</name> <value>file:///usr/soft/hadoop-2.7.5/etc/hadoop/dfs/name</value> <description>NameNode directory for namespace and transaction logs storage.</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///usr/soft/hadoop-2.7.5/etc/hadoop/dfs/data</value> <description>DataNode directory</description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> ``` 6. 创建必要的文件夹: ``` sudo mkdir -p /usr/soft/hadoop-2.7.5/etc/hadoop/dfs/name sudo mkdir -p /usr/soft/hadoop-2.7.5/etc/hadoop/dfs/data ``` 7. 配置集群的主机名和IP地址。确保所有的节点都能够相互访问。 8. 启动Hadoop集群: ``` sudo /usr/soft/hadoop-2.7.5/sbin/start-dfs.sh sudo /usr/soft/hadoop-2.7.5/sbin/start-yarn.sh ``` 9. 验证集群是否正常工作。可以通过访问Hadoop的Web界面来确认。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值