`

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://blog.csdn.net/xiaojiafei/article/details/10162919

关于如何恢复 在这里也不再啰嗦,感兴趣的朋友可以自己去搜一下。
关于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.aboutyun.com/thread-8150-1-1.html

文件四: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://langyu.iteye.com/blog/992916
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:管理页面地址

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

相关推荐

    计算Hadoop:快速部署Hadoop集群.docx

    计算Hadoop:快速部署Hadoop集群 详细的Hadoop集群部署文档,对您绝对有用~

    机房hadoop集群部署

    机房hadoop集群部署

    hadoop 集群部署操作

    Hadoop集群的规划,系统环境准备,配置NTP时间服务器,配置无密钥登录,安装配置JDK,,安装配置zooKeeper集群,安装配置Hadoop集群

    Hadoop集群部署方案.docx

    Hadoop集群部署方案.docx

    云计算Hadoop:快速部署Hadoop集群

    资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    本人亲手操作搭建Hadoop集群成功,并通过Eclipse进行MapReduce程序的开发,步骤详细完整,在相关过程中配有完整代码和解释,全程无误,只需复制粘贴即可,小白新手按步骤一步一步来也能搭建Hadoop集群成功并进行...

    Hadoop集群部署实例

    由于工作需要,最近一段时间开始接触学习 Hadoop 相关的东西,目前公司的实时任务和离线任务都跑在一个 Hadoop 集群,离线 任务的特点就是每天定时跑,任务跑完了资源就空闲了,为了合理的利用资源,我们打算在搭一...

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...

    Hadoop集群pdf文档

    Hadoop 集群配置详解 Hadoop_Hadoop集群(第1期)_CentOS安装配置 Hadoop_Hadoop集群(第2期)_机器信息分布表 Hadoop_Hadoop集群(第4期)_SecureCRT使用 Hadoop_Hadoop集群(第5期)_Hadoop安装配置 Hadoop_Hadoop...

    Hadoop集群部署、实战等相关培训资料

    EasyHadoop集群部署文档\Hadoop常用命令\hadoop大数据架构生态技术简介\Hadoop权威指南\Hadoop实战

    hadoop集群部署.docx

    hadoop作为大数据平台,经常需要部署集群,文档非常详细地介绍了hadoop集群的部署过程,两个节点master和slave

    使用docker部署hadoop集群的详细教程

    最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。 目标:使用docker搭建一个一主两从三台机器...

    hadoop2.4.1集群部署详细步骤

    超详细的hadoop部署详解,适合入门学习使用,大神勿扰

    Hadoop集群部署完整版

    Hadoop集群部署完整版

    hadoop部署与集群运维

    里面讲了一些hadoo是如何部署与运维的知识点,希望对初学者有所帮助!

    实验报告二:Hadoop集群部署前期准备-实验报告模板.docx

    实验报告二:Hadoop集群部署前期准备-实验报告模板.docx

    在docker上部署hadoop集群

    教程:在linux虚拟机下(centos),通过docker容器,部署hadoop集群。一个master节点和三个slave节点。

    脚本搭建hadoop集群

    自动化安装hadoop集群 脚本搭建hadoop集群 可以自定义主机名和IP...搭建Hadoop集群.docx(此为文本教程,脚本都是按这个配置的) 脚本使用教程.txt 请评论区留言反馈,您宝贵的意见是我前进的动力。 我会经常更新的!

    Ambari部署Hadoop集群.doc

    对于企业,如果要部署由成千上万的节点组成的Hadoop集群,手工方式部署显然不符合实际。 而由Hortonworks贡献给Apache开源社区的Ambari则提供了搭建整个Hadoop生态的一站式服务。这款软件具有集群自动化安装、中心化...

    Hadoop集群部署文档

    鉴于网上很多关于hadoop集群部署的介绍都不是很完善,给出一份根据我个人实际安装经验写的详细部署文档。

Global site tag (gtag.js) - Google Analytics