本章部署一个hadoop 集群
由于2.5.x 已经出来有好几个月了,网上配置类似架构的文章也有很多,所以在这里重点描述一下namenode 和 secondary namenode不再同一台机器上的配置方法,以及namenode 宕机后 meta数据的恢复方法,并且描述一下几个主要配置文件中配置项的意义。
集群大概框架为
1个namenode 一个 secondary namenode 两个datanode。
其中 secondary namenode 和 datanode 理论上来说是可以无限扩展的。
安装jdk、ssh免密码登陆,下载hadoop神马的就不啰嗦了,主要来记录下几个主要配置文件的配置项
文件一 core-site.xml
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
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
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
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:管理页面地址
主要配置就是这些了。后续会就事论事,遇到哪个配置不明白或者需要重点说明的 我会都记录下来跟大家一起分享。
由于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:管理页面地址
主要配置就是这些了。后续会就事论事,遇到哪个配置不明白或者需要重点说明的 我会都记录下来跟大家一起分享。
发表评论
-
Sort-based Shuffle的设计与实现
2016-03-15 08:49 759原文 http://www.cnblogs.com/hsea ... -
spark的几个重要概念
2015-12-04 14:09 0本节主要记录以下几个概念 一:RDD的五大特点 二:RDD 窄 ... -
spark部署安装调试
2015-12-02 11:28 704本节记录spark下载-->编译-->安装--&g ... -
spark基本概念
2015-11-12 10:45 733记录一下课堂笔记: ... -
hadoop计算能力调度器配置
2015-10-29 10:39 969问题出现 hadoop默认调度器是FIFO,其原理就是先按照作 ... -
HBase在各大应用中的优化和改进
2015-10-28 14:59 639Facebook之前曾经透露过Facebook的hbase架构 ... -
一篇很好的解决系统问题过程描述文章
2015-09-23 08:40 460在网上看到的一篇解决h ... -
通过GeoHash核心原理来分析hbase rowkey设计
2015-09-08 15:49 3477注:本文是结合hbase ... -
从OpenTsdb来分析rowkey设计
2015-09-06 16:04 4905讨论此问题前,先理解 ... -
HBase中asynchbase的使用方式
2015-08-25 10:32 8108Hbase的原生java 客户端是完全同步的,当你使用原生AP ... -
Mapreduce优化的点滴
2015-07-16 15:18 795注:转载 1. 使用自定义Writable 自带的Text ... -
hadoop 如何自定义类型
2015-07-15 09:37 1209记录一下hadoop 数据类型章节的笔记,以便后期使用,本文是 ... -
napreduce shuffle 过程记录
2015-07-10 11:23 727在我看来 hadoop的核心是mapre ... -
ZooKeeper伪分布式集群安装及使用
2015-02-13 08:29 8811. zookeeper介绍 ZooKeeper是一个为分 ... -
hadoop-mahout 核心算法总结
2015-02-07 10:08 1500其实大家都知道hadoop为我们提供了一个大的框架,真正的 ... -
推荐引擎内部原理--mahout
2015-01-22 11:11 539转载自:https://www.ibm.com/devel ... -
hadoop 动态添加删除节点
2015-01-20 13:39 638转自:http://www.cnblogs.com/rill ... -
hbase hadoop zookeeper
2015-01-19 14:47 0hadoop 部署手册 http://www.iteblo ... -
mapreduce 开发以及部署
2015-01-16 13:56 793前面几篇文章的梳理让我对hadoop新yarn 框架有了一 ... -
hadoop yarn几个问题的记录
2015-01-13 11:48 610本文主要介绍以下几 ...
相关推荐
计算Hadoop:快速部署Hadoop集群 详细的Hadoop集群部署文档,对您绝对有用~
机房hadoop集群部署
Hadoop集群的规划,系统环境准备,配置NTP时间服务器,配置无密钥登录,安装配置JDK,,安装配置zooKeeper集群,安装配置Hadoop集群
Hadoop集群部署方案.docx
资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...
本人亲手操作搭建Hadoop集群成功,并通过Eclipse进行MapReduce程序的开发,步骤详细完整,在相关过程中配有完整代码和解释,全程无误,只需复制粘贴即可,小白新手按步骤一步一步来也能搭建Hadoop集群成功并进行...
由于工作需要,最近一段时间开始接触学习 Hadoop 相关的东西,目前公司的实时任务和离线任务都跑在一个 Hadoop 集群,离线 任务的特点就是每天定时跑,任务跑完了资源就空闲了,为了合理的利用资源,我们打算在搭一...
部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...
Hadoop 集群配置详解 Hadoop_Hadoop集群(第1期)_CentOS安装配置 Hadoop_Hadoop集群(第2期)_机器信息分布表 Hadoop_Hadoop集群(第4期)_SecureCRT使用 Hadoop_Hadoop集群(第5期)_Hadoop安装配置 Hadoop_Hadoop...
EasyHadoop集群部署文档\Hadoop常用命令\hadoop大数据架构生态技术简介\Hadoop权威指南\Hadoop实战
hadoop作为大数据平台,经常需要部署集群,文档非常详细地介绍了hadoop集群的部署过程,两个节点master和slave
最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。 目标:使用docker搭建一个一主两从三台机器...
超详细的hadoop部署详解,适合入门学习使用,大神勿扰
Hadoop集群部署完整版
里面讲了一些hadoo是如何部署与运维的知识点,希望对初学者有所帮助!
实验报告二:Hadoop集群部署前期准备-实验报告模板.docx
教程:在linux虚拟机下(centos),通过docker容器,部署hadoop集群。一个master节点和三个slave节点。
自动化安装hadoop集群 脚本搭建hadoop集群 可以自定义主机名和IP...搭建Hadoop集群.docx(此为文本教程,脚本都是按这个配置的) 脚本使用教程.txt 请评论区留言反馈,您宝贵的意见是我前进的动力。 我会经常更新的!
对于企业,如果要部署由成千上万的节点组成的Hadoop集群,手工方式部署显然不符合实际。 而由Hortonworks贡献给Apache开源社区的Ambari则提供了搭建整个Hadoop生态的一站式服务。这款软件具有集群自动化安装、中心化...
鉴于网上很多关于hadoop集群部署的介绍都不是很完善,给出一份根据我个人实际安装经验写的详细部署文档。