本章部署一个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 807原文 http://www.cnblogs.com/hsea ... -
spark的几个重要概念
2015-12-04 14:09 0本节主要记录以下几个概念 一:RDD的五大特点 二:RDD 窄 ... -
spark部署安装调试
2015-12-02 11:28 735本节记录spark下载-->编译-->安装--&g ... -
spark基本概念
2015-11-12 10:45 783记录一下课堂笔记: ... -
hadoop计算能力调度器配置
2015-10-29 10:39 1012问题出现 hadoop默认调度器是FIFO,其原理就是先按照作 ... -
HBase在各大应用中的优化和改进
2015-10-28 14:59 690Facebook之前曾经透露过Facebook的hbase架构 ... -
一篇很好的解决系统问题过程描述文章
2015-09-23 08:40 498在网上看到的一篇解决h ... -
通过GeoHash核心原理来分析hbase rowkey设计
2015-09-08 15:49 3513注:本文是结合hbase ... -
从OpenTsdb来分析rowkey设计
2015-09-06 16:04 4943讨论此问题前,先理解 ... -
HBase中asynchbase的使用方式
2015-08-25 10:32 8187Hbase的原生java 客户端是完全同步的,当你使用原生AP ... -
Mapreduce优化的点滴
2015-07-16 15:18 821注:转载 1. 使用自定义Writable 自带的Text ... -
hadoop 如何自定义类型
2015-07-15 09:37 1236记录一下hadoop 数据类型章节的笔记,以便后期使用,本文是 ... -
napreduce shuffle 过程记录
2015-07-10 11:23 755在我看来 hadoop的核心是mapre ... -
ZooKeeper伪分布式集群安装及使用
2015-02-13 08:29 9161. zookeeper介绍 ZooKeeper是一个为分 ... -
hadoop-mahout 核心算法总结
2015-02-07 10:08 1551其实大家都知道hadoop为我们提供了一个大的框架,真正的 ... -
推荐引擎内部原理--mahout
2015-01-22 11:11 568转载自:https://www.ibm.com/devel ... -
hadoop 动态添加删除节点
2015-01-20 13:39 658转自:http://www.cnblogs.com/rill ... -
hbase hadoop zookeeper
2015-01-19 14:47 0hadoop 部署手册 http://www.iteblo ... -
mapreduce 开发以及部署
2015-01-16 13:56 833前面几篇文章的梳理让我对hadoop新yarn 框架有了一 ... -
hadoop yarn几个问题的记录
2015-01-13 11:48 651本文主要介绍以下几 ...
相关推荐
最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。 目标:使用docker搭建一个一主两从三台机器...
本文将详细介绍Hadoop集群作业调度算法的基本概念、重要性以及几种常用的调度策略。 #### 二、Hadoop集群作业调度算法的重要性 Hadoop集群通常由大量的计算机节点组成,这些节点负责执行MapReduce作业。作业调度...
首先,阿里Hadoop集群的架构通常包括以下几个核心组件: 1. **NameNode**:这是Hadoop分布式文件系统(HDFS)的核心组件,负责管理文件系统的命名空间和文件块信息。为了保证高可用性,阿里会采用主备模式,即设置...
这个实验主要涉及以下几个关键知识点: 1. **Linux系统基础**:实验要求学生具备Linux系统的使用知识,包括基本的命令行操作、文件管理等。CentOS 6.5是Red Hat Enterprise Linux的开源版本,被用作实验的虚拟机...
### 基于Hadoop集群的分布式日志分析系统研究 #### 一、Hadoop及其在日志分析中的应用背景 随着互联网技术的飞速发展,各类Web2.0网站、电子商务平台以及大型网络游戏产生了空前的数据量。这些系统在运行过程中会...
Hadoop 2.2 采用了全新的架构设计,主要包括以下几个关键组件: 1. **HDFS (Hadoop Distributed File System)**:负责数据存储,提供高吞吐量的数据访问能力,适合处理大规模数据集。 2. **YARN (Yet Another ...
HBase 的体系结构主要包括以下几个组件: 1. **HBase Client**:客户端用于与 HBase 进行交互,包括读取和写入数据等操作。客户端通过 RPC(远程过程调用)机制与 HMaster 和 HRegionServer 进行通信。 2. **...
`winutils.exe`是Hadoop在Windows上的实用工具程序,它提供了类似于Linux环境下`hadoop`命令的功能,比如设置HDFS的权限、管理Hadoop集群等。当`winutils.exe`缺失或版本不匹配时,Eclipse这样的开发环境在尝试与...
- **Cloudera Manager**:提供了一个统一的管理界面,简化了Hadoop集群的部署和管理过程。 - **HortonWorks**:以其HDP (HortonWorks Data Platform) 和 HDF (HortonWorks DataFlow) 产品著称,强调开源和社区驱动。...
在分布式计算系统中,ZooKeeper可以扮演几个重要的角色:协调员、观察者和分布式锁管理器。作为一个协调员,它能够为计算节点提供动态的添加和删除功能,允许在线更新并行计算的数目而不影响其他计算单元。作为一个...
- **构建MapReduce程序**:编写MapReduce程序一般包括以下几个步骤: - **定义问题**:明确需要解决的问题以及期望的输出格式。 - **设计解决方案流程**:规划数据的输入、处理和输出方式。 - **获取数据集**:...
### Hadoop入门实战手册知识点概览 #### 一、概述 ...- **Hadoop的几个主要子项目**:如HBase、Hive、Pig等。 - **官方集群搭建参考**:提供官方文档链接,帮助用户更好地搭建和管理Hadoop集群。
- 配合云计算平台,如Amazon EMR,可以快速部署和扩展Hadoop集群,降低运维成本。 5. **启动Hadoop**: 在配置好所有必需的参数后,通常需要启动HDFS和MapReduce服务。这可以通过执行`start-dfs.sh`和`start-yarn...
1. **认证**:Kerberos负责用户的认证过程,确保只有合法的用户才能访问Hadoop集群。 2. **授权**:Hadoop通过配置文件指定哪些用户或组有权访问特定的数据或执行某些操作。 3. **审计**:记录用户的活动,以便跟踪...
1. **网络环境**:Hadoop集群部署在一个相对受控的网络环境中,虽然可能存在外部攻击,但内部网络较为安全。 2. **可信节点**:集群中的所有节点都是可信的,即不会发生内部节点恶意行为的情况。 3. **认证服务器...
课程设计可能包含以下几个关键步骤: 1. 数据预处理:收集和清洗用户行为数据,将其转化为Hadoop可以处理的格式。 2. 数据导入:使用Hadoop的工具,如Hadoop命令行或HDFS API,将预处理后的数据加载到HDFS中。 3. ...
文件`hadoop-common-2.2.0-bin-master.zip`和`hadoop-common-2.7.1-bin-master.zip`是这两个版本的二进制发行版,包含了所有必要的库文件和可执行程序,供Windows用户在本地环境搭建和运行Hadoop集群。解压这些文件...
传统方法的局限性主要体现在以下几个方面: - **计算能力限制**:单台服务器的计算能力有限,难以处理大规模数据。 - **编程难度**:分布式计算通常需要高度专业化的编程技能,这增加了开发的难度和成本。 Hadoop...
在安装Hadoop的过程中,往往会出现各种问题,尤其是在初次尝试或者对系统配置不熟悉时。这篇博文"成功安装-安装hadoop遇到的问题"可能提供了一些...通过不断学习和实践,可以克服这些挑战,成功部署和运行Hadoop集群。