Hadoop集群部署时候的几个问题记录

本章部署一个Hadoop 集群

由于Hadoop 2.5.x 已经出来有好几个月了,网上配置类似架构的文章也有很多,所以在这里重点描述一下namenode 和 secondary namenode不再同一台机器上的配置方法,以及namenode 宕机后 meta数据的恢复方法,并且描述一下几个主要配置文件中配置项的意义。

集群大概框架为

1个namenode  一个 secondary namenode 两个datanode。

其中 secondary namenode 和 datanode 理论上来说是可以无限扩展的。

安装jdk、ssh免密码登陆,下载hadoop神马的就不啰嗦了,主要来记录下几个主要配置文件的配置项

文件一 core-site.xml

<configuration>
  <property>
        <name>fs.defaultFS</name>
        <value>hdfs://cloud001:9000</value>
        <description>NameNode URI<description/>
  </property>

<property>
      <name>io.file.buffer.size</name>
      <value>4069</value>
      <description>Size of read/write buffer used in SequenceFiles.<description/>
 </property>

<property>
      <name>hadoop.tmp.dir</name>
      <value>/snwz/hadoop/config/temp</value>
      <description><description/>
 </property>
</configuration>

io.file.buffer.size :hadoop访问文件的IO操作都需要通过代码库。因此,在很多情况下,io.file.buffer.size都被用来设置缓存的大小。不论是对硬盘或者是网络操作来讲,较大的缓存都可以提供更高的数据传输,但这也就意味着更大的内存消耗和延迟。这个参数要设置为系统页面大小的倍数,以byte为单位,默认值是4KB,一般情况下,可以设置为64KB(65536byte)

hadoop.tmp.dir:hadoop文件系统依赖的基本配置,很多配置路径都依赖它,它的默认位置在/tmp/{$user}下面,建议修改默认路径,因为linux启动 会将temp目录下文件删除。

文件二:hdfs-site.xml

<configuration>

<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>cloud001:9001</value>
  </property>

<property> 
        <name>dfs.namenode.name.dir</name> 
        <value>file:/snwz/hadoop/config/name</value> 
  </property> 

<property> 
        <name>dfs.datanode.data.dir</name> 
        <value>file:/snwz/hadoop/config/data</value> 
  </property> 

<property>
        <name>dfs.replication</name>
        <value>2</value>
  </property>
 
  <property> 
        <name>dfs.webhdfs.enabled</name> 
        <value>true</value> 
  </property> 
</configuration>

dfs.namenode.name.dir:Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.

dfs.datanode.data.dir:Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.

dfs.replicatio:副本数量,建议配置和slaves数目相同

dfs.webhdfs.enabled:dfs 的web页面功能是否启用,建议启动

dfs.namenode.secondary.http-address:secondary namenode 的地址,在此着重说下这个配置。

大部分人包括我 仅仅认为 snn是 nn 的一个热备份,其实它真正的用途,是用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间。hadoop的默认配置中让 snn进程默认运行在了 namenode 的那台机器上,但是这样的话,如果这台机器出错,宕机,对恢复HDFS文件系统是很大的灾难,更好的方式是:将snn的进程配置在另外一台机器 上运行。在hadoop中,namenode负责对HDFS的metadata的持久化存储,并且处理来自客户端的对HDFS的各种操作的交互反馈。为了保 证交互速度,HDFS文件系统的metadata是被load到namenode机器的内存中的,并且会将内存中的这些数据保存到磁盘进行持久化存储。为 了保证这个持久化过程不会成为HDFS操作的瓶颈,hadoop采取的方式是:没有对任何一次的当前文件系统的snapshot进行持久化,对HDFS最 近一段时间的操作list会被保存到namenode中的一个叫Editlog的文件中去。当重启namenode时,除了 load fsImage意外,还会对这个EditLog文件中 记录的HDFS操作进行replay,以恢复HDFS重启之前的最终状态。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9f4fa2e7996f5914b4e8b4bb396e20c2.html