阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

117次阅读
没有评论

共计 5672 个字符,预计需要花费 15 分钟才能阅读完成。

本章部署一个 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 重启之前的最终状态。

而 SecondaryNameNode,会周期性的将 EditLog 中记录的对 HDFS 的操作合并到一个 checkpoint 中,然后清空 EditLog。所以 namenode 的重启就会 Load 最新的一个 checkpoint,并 replay EditLog 中 记录的 hdfs 操作,由于 EditLog 中记录的是从 上一次 checkpoint 以后到现在的操作列表,所以就会比较小。如果没有 snn 的这个周期性的合并过程,那么当每次重启 namenode 的时候,就会 花费很长的时间。而这样周期性的合并就能减少重启的时间。同时也能保证 HDFS 系统的完整性。

关于如何分离 namenode 和 secondary namenode  下面这篇文章说的很详细了

http://www.linuxidc.com/Linux/2015-02/113642.htm

关于如何恢复 在这里也不再啰嗦,感兴趣的朋友可以自己去搜一下。

关于 checkpoin 频率等优化问题我们后面再慢慢研究。

文件三:.mapred-site.xml

<configuration>
  <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property> 
        <name>mapreduce.jobtracker.http.address</name> 
        <value>cloud001:50030</value> 
    </property> 
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>cloud001:10020</value> 
    </property> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>cloud001:19888</value> 
    </property> 
</configuration>

mapreduce.framework.name:新框架支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,注意通常情况下这个配置的值都设置为 Yarn,如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,而不是分布式模式。

mapreduce.jobtracker.http.address:job tracker 监听端口

mapreduce.jobhistory.*:hadoop 历史服务器,可以通过历史服务器查看已经运行完的 Mapreduce 作业记录,比如用了多少个 Map、用了多少个 Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop 历史服务器是没有启动的,我们可以通过下面的命令来启动 Hadoop 历史服务器。

sbin/mr-jobhistory-daemon.sh  start historyserver

这篇文章很详细的介绍了历史服务器的原理以及配置:http://www.linuxidc.com/Linux/2015-02/113645.htm

文件四:yarn-site.xml

<configuration>

<!– Site specific YARN configuration properties –>

      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property> 
        <name>yarn.resourcemanager.address</name> 
        <value>nameNode:8032</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>nameNode:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>nameNode:8031</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.admin.address</name> 
        <value>nameNode:8033</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.webapp.address</name> 
        <value>nameNode:8088</value> 
    </property> 
</configuration>

mapreduce_shuffle : http://www.linuxidc.com/Linux/2011-11/47053.htm
yarn.resourcemanager.address:namenode 与 resourcemanager 通讯接口
yarn.resourcemanager.resource-tracker.address:新框架中 NodeManager 需要向 RM 报告任务运行状态供 Resouce 跟踪,因此 NodeManager 节点主机需要知道 RM 主机的 tracker 接口地址
yarn.resourcemanager.admin.address:管理命令通过 ResourceManager 主机访问 host:port
yarn.resourcemanager.webapp.address: 管理页面地址

主要配置就是这些了。后续会就事论事,遇到哪个配置不明白或者需要重点说明的 我会都记录下来跟大家一起分享。

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5672字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中