# Hadoop安装(伪分布式)常见问题解决及Hadoop常用命令

Hadoop安装常见问题

一、权限不足问题

对于hadoop安装文件的权限不足会出现以下的错误

错误:Cannot create directory /usr/local/hadoop/hadoop-2.8.3/tmp/dfs/name/current

解决方法:sudo chmod -R a+w /usr/local/hadoop/hadoop-2.8.3

给与这个安装文件夹充足的权限,允许在这个安装文件夹下面创建文件

二、非法反射问题

错误:An illegal reflective access operation has occurred

解决方法:配置JAVA环境变量的时候,JDK 9以上版本对于第一次反射都有警告,安装jdk9以下的版本就不会有了,建议安装jdk8,本人用得就是这个版本

什么是JDK反射

JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

三、没有文件夹

错误:输入hdfs dfs -ls / 显示没有文件夹

解决方法:创建主目录hdfs dfs -mkdir -p /user/hadoop

四、hadoop启动之后输入jps没有看到DataNode的问题

原因:一般由于多次格式化NameNode导致。在配置文件中保存的是第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。

解决方法:

方法一

1 cd hadoop/logs/----dataNode–.logs
2 找到并复制这个namenode clusterID
3 找到hdfs-site.xml,打开并获取data目录所在位置(cd /temp/dfs/data)
4 将VERSION文件里面的clusterID改成找到的哪一个

方法二(有时候没用)

我感觉这样不是很畅快解决问题,
所以直接/home/hadoop/hadoop-2.4.1/tmp/dfs/data/current
下面的VERSION删除了,
然后再执行一下又重新执行了格式化命令(hdfs namenode -format),
最后启动start-dfs.sh和start-yarn.sh就可以了;

方法三 方法二无效并且在VERSION文件夹被删除的情况下

1、在集群/usr/local/src/hadoop/bin目录下./start-all.sh暂停所有服务
2、将/usr/local/src/hadoop/目录下的 logs、tmp文件夹删除(DataNode存放数据块的位置) 然后重新建立tmp logs文件夹
3、重新格式化: (同样是在bin目录下)./hadoop namenode -format
4、重新启动集群:./start-all.sh
5、通过jps查看进程 就好了

Hadoop常用命令

1、hdfs系统需要创建主目录 hdfs dfs -mkdir -p /user/hadoop
2、查看主目录下的文件 hdfs dfs -ls 查看主目录 hdfs dfs -ls /
3、 查看主目录下目录中的文件 hdfs dfs -ls examples
4、查看文件内容 hdfs dfs -cat Test1
5、创建以及删除目录 hdfs dfs -mkdir 目录 ; hdfs dfs -rm -r 目录
6、 上传文件到hdfs系统 hdfs dfs -put test1 TestFirst
下载文件到系统 hdfs dfs -get TestFirst test1
7、复制本地文件到hdfs系统
hdfs dfs -copyFromLocal 本地文件路径 hdfs路径
8、 将hdfs系统的文件合并并保存在本地山
hdfs dfs -getmerge hdfs文件名 本地文件名
9、打开安全模式 hdfs dfsadmin -safemode enter
关闭安全模式 hdfs dfsadmin -safemode leave
安全模式下hdfs里面的文件不可被修改
10、 查看hdfs基本统计信息 hdfs dfsadmin -report
11、 负载均衡 ./start-balancer.sh

知识点

1 、tmp目录存储的是dataNode节点的数据
2、 hdfs namenode -format 每一次都会将nameNode进行格式化,也就是清空nameNode里面的元数据,但是不会删除dataNode里面的数据
3 、hadoop fs 已经过时,要用hdfs dfs
4、伪分布式能否新增加dataNode节点?
如果你之前是伪分布式的话,这个datanode节点可不能还是在这一台机器上,一台机器只能设置一个datanode。 添加一个datanode节点在salves文件下添加上这个节点的ip或者主机名,然后到新加的datanode主机下启动datanode进程就可以了。
增加dataNode节点的教程
链接:link.

你可能感兴趣的:(Hadoop的学习总计)