背景

我搭建的hadoop集群的三台机子的ip地址为:

node01:192.168.1.105

node02:192.168.1.111

node03:192.168.1.108

这里的ip地址不连续,主要是因为我的是动态ip,之前的机子宕机了,所以它自动更新了ip地址。

①找不到8032端口

 原因是因为resourcemanager监听不到8032端口,从而无法进行数据导入,只需要在yarn-site.xml文件中配置yarn.resourcemanager.address即可,而且必须在node01机子启动yarn之前先启动node02机子的resourcemanager。

 <property>
     <name>yarn.resourcemanager.address</name>
     <value>node02:8032</value>
 </property>

resourcemanager的监听端口出现了8032即可以运行sqoop的导入数据了。

②查询hive数据是MySQL查询数据的n倍

原因是因为在用sqoop导入mysql数据到hive中时,多次重复执行了导入的语句,致使hive数据是MySQL查询数据的n倍。

③node02机子的nodemanager状态为standby。

因为nodemanager为standby的时候,可能会受到一些限制,它在执行一些语句时,会优先选择active的机子来运行,导致在sqoop导入mysql数据到hive中时,遇到Connection refused的情况,只需要将其状态改为active即可,具体命令为hdfs haadmin -transitionToActive --forcemanual nn2。

④node02机子内存不足,自动关闭nodemanager。

因为在执行sqoop导入mysql数据到hive过程中,需要占用一定的内存,所以可以通过调增大所运行机子的nodemanager内存或者通过重新开启nodemanager结点即可。

增大所运行机子的nodemanager内存,需要配置yarn-site.yml:

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value>
</property>

如果因为要处理的数据量太大,还需要配置mapred-site.xml:

<property>
    <name>mapreduce.map.memory.mb</name>
    <value>2048</value>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>2048</value>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx1024m</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx1024m</value>
</property>

这里是本人在实现黑马的“教育大数据分析平台”部分项目所遇到的问题,主要是这些问题反反复复困扰了我n天,所以这里主要是记录一下我所遇到的问题和解决方案。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐