学会大数据的基础 (大数据初学者的问题)

上一篇文章介绍在idea里远程连接Hadoop的实例WordCount,但在实际过程中很难一次就能成功运行的,会出现各种问题:

远程无法访问HDFS文件系统

出现报错如下:

大数据的应用难题解答大全,大数据用到的数学知识

I/O error

大数据的应用难题解答大全,大数据用到的数学知识

Failed to connect to /127.0.0.1:50010

原因分析:虚拟机上安装的 Hadoop 配置文件是以内网IP作为机器间通信的IP。在这种情况下,我们能够访问到namenode机器,namenode会给我们数据所在机器的IP地址供我们访问数据传输服务,但是返回的的是datanode内网的IP,我们无法根据该IP访问datanode服务器。

为了能够让开发机器访问到 hdfs ,我们可以通过域名访问 hdfs

1.首先注意虚拟机的hosts文件,我的虚拟机的主机名是hadoop01,在hosts文件必须增加:

0.0.0.0 hadoop01

2.在与hdfs交互的程序中添加如下代码:

import org.apache.hadoop.conf.Configuration;

Configuration conf = new Configuration();
//设置通过域名访问datanode
conf.set("dfs.client.use.datanode.hostname", "true");

也就是在WordCout.java 的main方法里加

大数据的应用难题解答大全,大数据用到的数学知识

3.在idea配置应用的参数是:

大数据的应用难题解答大全,大数据用到的数学知识

IP与端口必须与虚拟机的Hadoop环境一致,在通过50070端口的HDFS管理界面中可以在概览处看到hadoop01:9000是Hadoop文件系统的默认端口

大数据的应用难题解答大全,大数据用到的数学知识

4.在win10主机上必须正确配置Hadoop的环境变量:HADOOP_HOMEPATH

无法将文件上传到HDFS上

  1. 执行 hdfs dfs -put localfile /etc/Hadoop-2.xxx 时提示:

put: Permission denied: user=root, access=WRITE, inode="/etc/Hadoop-2.xxx":hdfs:supergroup:drwxr-xr-x

原因:权限不够。这里涉及到两个方面的权限。一个是本地文件系统中localfile 文件的权限,一个是HDFS上 /etc/Hadoop-2.xxx目录的权限。

2.如果排除是权限问题,可能是DataNode出问题了,可以执行命令:

hdfs dfsadmin -report

如果看如下返回信息说明DataNode有问题:Configured Capacity: 0 (0 B)

可以删除Hadoop主目录下的hdfs文件夹及其配置文件中tmp文件夹下的所有文件,重新格式化hdfs。

./sbin/stop-dfs.sh
./sbin/stop-yarn.sh
 rm -rf /tmp/* 
 rm -rf -r /etc/Hadoop-2.10.1/hdfs
./bin/hdfs namenode -format