Hadoop学习常见问题及答案总结手册-可下载

文后有下载地址,大家可以自行下载该手册,有目录,更方便查看。
搭建Hadoop单节点集群遇到namenode或datanode启动不起来的问题。

可能原因:多次格式化namenode导致datanode与namenode之间的id不一致
原因分析:执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
解决方法:
(1)搭建单节点hadoop集群遇到namenode启动不起来的解决方法
先关闭集群
查看core-site.xml配置文件中的tmp目录地址,删除以后,重新格式化
(2)搭建单节点hadoop集群遇到datanode启动不起来的解决方法
先关闭集群
查看hdfs-site.xml配置文件,删除data目录下的dfs,然后重建dfs,继续启动集群

或者两者结合起来,直接删除data目录,然后重建data目录和该目录下的dfs和tmp

Hadoop单节点集群搭建成功了,几个进程也都成功启动了,但是在web端却看不到
可能原因:可能是在本地的hosts文件中没有配置主机名和ip之间的对应关系。
解决方法:你可以试一下,用ip:端口号(50070/8088),如果可以打开,那就是这个问题,所以要在本地找到hosts文件(C:\Windows\System32\drivers\etc),在里面添加上ip和 主机名的对应关系。

虚拟机动态IP的时候可以ping通外网,但是设置为静态IP之后就不能ping通外网?
可能原因:可能是DNS的问题。
解决方法:在网关里配置DNS=网关地址,然后重启网关,再次ping外网,应该就可以了。
详情可参考链接
http://blog.csdn.net/zhaolimin6666/article/details/52897198?locationNum=15&fps=1

当磁盘快满的时候,需要删除一些文件来清理一下磁盘,但是文件删除了,磁盘空间还是没有变化?

可能原因:这是因为系统把删除的文件放到了回收站。
解决方法:要把回收站里的文件也删除掉,磁盘空间就有变化了。

安装VM虚拟机时,出现下面问题
Hadoop学习常见问题及答案总结手册-可下载_第1张图片

Hadoop学习常见问题及答案总结手册-可下载_第2张图片
可能原因:这是因为虚拟技术没有启动。
解决方法:可参考下面链接启动一下即可
http://jingyan.baidu.com/article/375c8e19bcd24525f3a22943.html

为什么要把分布式文件系统中的文件抽象(分割)成块?
(1)文件大小可以大于网络中任意一个节点的磁盘容量,即可以不存在同一磁盘上。文件切分之后的块可以存储在集群中的任意一个磁盘上。
(2)用块而不是整个文件作为存储单元,大大简化了存储子系统的设计和管理。(块的大小是固定的,那么一个磁盘能存储多少个块就很好计算)
(3)块适合数据备份,来提高数据的容错能力(多副本策略)和可用性(数据本地化)。
注意:元数据和数据块不一块存储,而是由其他系统单独管理。

为什么HDFS的块是64M或128M?太大或太小会有什么问题?
(1)大点是为了最小化寻址开销,磁盘传输数据的时间会明显大于定位这个块开始位置的时间,所以说传输一个由多个块组成的文件的时间往往取决于磁盘的传输速度,(寻址时间10ms,磁盘传输速度100M/s ,寻址时间占传输时间1%算,那么块的大小设置为100M,那么随着磁盘驱动器传输速度的提升,块的大小就可以设置的更大 )所以说块的大小不能太小。
(2)如果太大也不行,如果块太大,一个map任务一般处理一个块大小的数据,那么每个map任务的处理时间就会比较长,那么整个作业的运行时间也会比较长。
防火墙是干什么的?为什么要关闭防火墙?怎么关闭防火墙?
(1)防火墙是对我们的服务器进行的一种保护,但是有时候也会妨碍集群间的相互通讯,所以我们需要关闭防火墙,
(2)怎么关闭防火墙?
两种方法:
1)临时性关闭
service iptables stop/start
如果要在防火墙中设置某些端口的开关,可以修改编辑/etc/sysconfig/iptables
2)永久性关闭
chkconfig iptables off/on
(3)关闭防火墙之后,要重新启动linux操作系统,即输入reboot命令
(4)查看防火墙状态
service iptables status

SSH是什么?为什么要配置ssh免密码登录?
SSH是一个可以在应用程序中提供安全通信的一个协议,通过SSH可以安全地进行网络数据传输,它的主要原理就是利用非对称加密体系,对所有待传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露或者篡改。但是hadoop使用ssh主要不是用来进行数据传输的,hadoop主要是在启动和停止的时候需要主节点通过SSH协议将从节点上面的进程启动或停止。也就是说如果不配置SSH免密码登录对hadoop的正常使用也没有任何影响,只是在启动和停止hadoop的时候需要输入每个从节点的用户名的密码就可以了,但是我们可以想象一下,当集群规模比较大的时候,比如上百台,如果每次都要输入每个从节点的密码,那肯定是比较麻烦点,所以这种方法肯定是不可取的,所以我们要进行SSH免密码的配置,而且目前远程管理环境中最常使用的也是SSH(Secure Shell)

为什么要格式化namenode?
格式化是对HDFS这个分布式文件系统中的Datanode进行分块,统计所有分块后的初始元数据,然后存储在Namenode中,格式化后,查看core-site.xml配置文件中hadoop.tmp.dir指定的目录下是否有dfs目录,如果有,说明格式化成功)
格式化成功之后的目录:
Hadoop学习常见问题及答案总结手册-可下载_第3张图片
edits:是编辑日志文件,有很多
fsimage:是namenode元数据在内存中满了之后,持久化保存到的文件。
fsimage*.md5是校验文件,用于校验fsimage的完整性
seen_txid是hadoop的版本
version文件里保存的是namespaceID:namenode的唯一ID
clusterID:集群ID,namenode和datanode的集群ID应该一致,表明是一个集群。
在hadoop用户下,使用hadoop目录下的bin目录下的hadoop命令,
即先切换到hadoop用户下的hadoop安装目录下(不是bin目录下的hadoop)
然后输入命令bin/hadoop namenode -format进行namenode格式化操作。

在MyEclipse或Eclipse里出现中文乱码问题该如何解决呢?
例如下面的问题:
Hadoop学习常见问题及答案总结手册-可下载_第4张图片
如果是这样情况,说明是要改编码。
解决的办法?
1 、windows -> preferences
Hadoop学习常见问题及答案总结手册-可下载_第5张图片
将Text file encoding的other部分,改为UTF-8。
Hadoop学习常见问题及答案总结手册-可下载_第6张图片
3、hadoop项目,右键,prpperties,然后出现以下界面。就是配置好了,即hadoop项目的消除中文乱码问题解决。
将Inherited from container(UTF-8)的Other改为UTF-8。
Hadoop学习常见问题及答案总结手册-可下载_第7张图片
刷新,重新即可。将之前的salary.txt重新上传。
Hadoop学习常见问题及答案总结手册-可下载_第8张图片
OK,这样本地乱码问题就得到了解决。

MapReduce 框架的容错性分析
MapReduce 最大的特点之一就是有很好的容错性,即使你的节点挂掉了1个、2个、3个,都是没有问题的, 它都可以照常来运行,把你的作业或者应用程序运行完成。不会出现某个节点挂了,你的作业就运行失败这种情况。 那么MapReduce 到底是通过什么样的机制,使它具有这么好的容错性呢?下面我们依次来介绍一下。

1、JobTracker
很不幸,JobTracker 存在单点故障,一旦出现故障,整个集群就不可用。这个是1.0里面出现的问题,在2.0里面这个问题已经得到了解决。 不过大家放心,即使在1.0中,MapReduce也不会经常出现故障。它可能一年也就是出现几次故障,出现故障之后,你重启一下,再把作业重新提交就可以了,它不会像HDFS那样出现数据的丢失。 因为 MapReduce 是一个计算框架,计算过程是可以重现的,即使某个服务挂掉了,你重启一下服务,然后把作业重新提交,也是不会影响你的业务的。

2、TaskTracker
TaskTracker周期性的向JobTracker汇报心跳,如果一定的时间内没有汇报这个心跳,JobTracker 就认为该TaskTracker 挂掉了,它就会把上面所有任务调度到其它TaskTracker(节点)上运行。这样即使某个节点挂了,也不会影响整个集群的运行。

3、MapTask和ReduceTask

MapTask和ReduceTask 也可能运行挂掉。比如内存超出了或者磁盘挂掉了,这个任务也就挂掉了。 这个时候 TaskTracker 就会把每个MapTask和ReduceTask的运行状态回报给 JobTracker,JobTracker 一旦发现某个Task挂掉了,它就会通过调度器把该Task调度到其它节点上。这样的话,即使任务挂掉了,也不会影响应用程序的运行。

在搭建eclipse/Myeclipse过程中出现下面问题该如何解决?
例如下面的问题:
Hadoop学习常见问题及答案总结手册-可下载_第9张图片
解决方法:
点击Window——Open Perspective——Other…
Hadoop学习常见问题及答案总结手册-可下载_第10张图片
然后在弹出的对话框里选择Map/Reduce,点击OK即可。
Hadoop学习常见问题及答案总结手册-可下载_第11张图片
http://www.dajiangtai.com/community/18307.do

你可能感兴趣的:(Hadoop)