Hadoop学习常见问题及答案整理(二)

时间:2022-09-24 23:33:45

1、为什么要把分布式文件系统中的文件抽象(分割)成块?

(1)文件大小可以大于网络中任意一个节点的磁盘容量,即可以不存在同一磁盘上。文件切分之后的块可以存储在集群中的任意一个磁盘上。

(2)用块而不是整个文件作为存储单元,大大简化了存储子系统的设计和管理。(块的大小是固定的,那么一个磁盘能存储多少个块就很好计算)

(3)块适合数据备份,来提高数据的容错能力(多副本策略)和可用性(数据本地化)。

注意:元数据和数据块不一块存储,而是由其他系统单独管理。

 

2、为什么HDFS的块是64M128M?太大或太小会有什么问题?

(1)大点是为了最小化寻址开销,磁盘传输数据的时间会明显大于定位这个块开始位置的时间,所以说传输一个由多个块组成的文件的时间往往取决于磁盘的传输速度,(寻址时间10ms,磁盘传输速度100M/s ,寻址时间占传输时间1%算,那么块的大小设置为100M,那么随着磁盘驱动器传输速度的提升,块的大小就可以设置的更大 )所以说块的大小不能太小。

(2)如果太大也不行,如果块太大,一个map任务一般处理一个块大小的数据,那么每个map任务的处理时间就会比较长,那么整个作业的运行时间也会比较长。

3、防火墙是干什么的?为什么要关闭防火墙?怎么关闭防火墙?

(1)防火墙是对我们的服务器进行的一种保护,但是有时候也会妨碍集群间的相互通讯,所以我们需要关闭防火墙,

(2)怎么关闭防火墙?

两种方法:

1)临时性关闭

service  iptables stop/start

如果要在防火墙中设置某些端口的开关,可以修改编辑/etc/sysconfig/iptables

2)永久性关闭

chkconfig  iptables off/on

(3)关闭防火墙之后,要重新启动linux操作系统,即输入reboot命令

(4)查看防火墙状态

service iptables  status

 

4SSH是什么?为什么要配置ssh免密码登录?

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

 

5、为什么要格式化namenode?

    格式化是对HDFS这个分布式文件系统中的Datanode进行分块,统计所有分块后的初始元数据,然后存储在Namenode中,格式化后,查看core-site.xml配置文件中hadoop.tmp.dir指定的目录下是否有dfs目录,如果有,说明格式化成功)

格式化成功之后的目录:

Hadoop学习常见问题及答案整理(二)

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格式化操作。

点击看“Hadoop学习常见问题及答案总结系列(一)”