http://blog.csdn.net/AE86_FC/archive/2010/08/08/5796622.aspx
背景
hadoop
的HDFS
系统
结
构里,namenode一直是一个单点,不管是单点出错还是单点性能方便,都是单点。这一直是HDFS想要达到7 *
24小时服务的最大的阻碍。在hadoop
apache社区和仅有的那几家有能力把hadoop用到这种程度的人群里,对这一点的讨论也已经有很多了,有提出分布式namespace的,有提出
namenode单点热备的,有提出分布式mds(参考ceph和lustre)的,大家都为解决namenode的单点想了很多的办法。最近跟
facebook的Dhruba
Borthakur(这位仁兄的名字实在是不会念,只好大家都叫他DB同学)讨论中发现,他们的hdfs也碰到了相同的问题,facebook目前拥有全
球最大的hadoop集群,其中就有超过1200个slave节点,存储容量到12PB的HDFS集群,当集群储存的文件
越来越多,block越来越多时,namenode单点的瓶颈就越来越明显。暂且不提由于单点的原因造成对namenode rpc调用带来的瓶颈(这一点得用更多的篇幅来记录了,相关测试数据
和性能瓶颈分析以后再发好了),光就availability而言,每次集群修改了代码需要升级,或者例行升级,或者发生故障hdfs需要重启的时候,这个问题就凸现出来。
熟悉namenode内部程序和逻辑的同仁们都知道(呵呵,我说的就是你们,你们懂的),namenode重启时主要耗时的有两个地方:
-
对
fsimage的加载,这个中间还包括对
editlog文件,edits.new文件的加载,然后和先前加载的fsimage做merge,最后save
fsimage到磁盘的时间。这其中还不排除有secondarynamenode挂掉导致edits
log文件变得奇大无比(我碰到的最大的居然有18G!),导致加载fsimage没多久,而load和merge
editlog却需要花费几个小时的情况……(提到这个不得不说,以前还真是没有经验,遇到这种情况的时候居然不知道是因为
secondarynamenode挂掉导致的,还以为在上次checkpoint之后对hdfs的操作频繁到能够写18G
editlog的程度……)。
-
另
外一个大头就是接收所有datanode通过
rpc发送过来的blockReport,这个才是namenode启动时最耗时的地方。因为namenode本身并没有持久化block和
datanode对应的mapping信息,所以namenode里最耗内存的blockMap的结构在启动时需要初始化就必须接收datanode的
blockReport,这个地方就是最耗时,也是最令人头疼,也是yahoo(非中国
)和facebook,以及我司(就是
“我们公司”
的意思,这个词是从一位有着”活百科全书”的神一样的男子那引用来的)的同仁们讨论的最多,想象空间
最大,改造和优化空间最大的地方。
数据
这里有一组测试数据:
节点数
|
存储容量
|
文件和目录数
|
fsimage加载时间
|
blockReport时间
|
1200
|
12PB
|
7000 万
|
10分钟左右
|
35分钟左右
|
650
|
7PB
|
4500 万
|
6分钟左右
|
30分钟左右
|
由于测试数据和集群环境并非来自同一个地方,所有稍微有一些出入,但是总体能够看出,基本上影响HDFS 7 * 24 服务,High
availability的瓶颈,就在这两个地方了。
分享到:
相关推荐
这将编译Hadoop源代码,并创建所需的可执行文件和库,但跳过了测试阶段,因为编译过程可能会耗时较长。 编译完成后,你可以在`hadoop-2.8.5/dist`目录下找到编译好的Hadoop发行版。将其添加到你的`$PATH`环境变量中...
注意需要在Hadoop服务未启动的情况下执行此命令。 - 输入提示时,必须输入大写的`Y`来确认操作。 2. **启动Hadoop服务**: - 使用`start-all.sh`脚本启动所有Hadoop守护进程。 #### 四、创建HDFS输入目录 1. **...
### Hadoop集群与单机数据处理耗时对比实验分析 #### 一、引言 随着互联网技术的飞速进步和普及,数据量呈现爆炸式增长趋势。这些数据不仅包括传统意义上的结构化数据,还包括大量的非结构化数据,例如网页日志、...
手工部署不仅耗时且易出错,尤其对于大规模集群,自动化工具显得尤为重要。 Ambari提供了自动化安装、中心化管理和监控功能,极大地提高了集群管理效率。通过其直观的Web界面,用户可以方便地进行集群部署、服务...
实验过程中可能会遇到的问题,比如Ubuntu的安装耗时较长,以及对Hadoop操作的不熟悉。解决这些问题的方法是多实践和利用网络资源进行学习。通过搭建和配置Hadoop环境,可以深入理解大数据处理的基础架构,掌握基本的...
本压缩包文件"centos-6.7编译成功的hadoop-2.6.4"提供了一个在CentOS 6.7环境下编译好的Hadoop 2.6.4版本,使得用户可以直接使用,无需自行经历耗时的编译过程。 **Linux基础知识** Linux操作系统是基于Unix的操作...
- 在15台小型集群上进行测试,使用WordCount程序处理1.2GB的日志文件,总耗时2分16秒,展示了Hadoop处理大数据的高效性。 5. **Hadoop环境搭建步骤** - **装机阶段** - 安装Ubuntu 10.10,避免在安装过程中更新...
首先,启动和停止Hadoop集群的常用命令是`start-all.sh`和`stop-all.sh`,分别用于启动和停止所有的服务,包括Namenode、Datanode、JobTracker和TaskTracker等。 当需要扩展集群的存储能力时,通常是通过添加新的...
- 避免从`http://svn.apache.org/repos/asf/hadoop/common`目录下全部checkout,因为该目录包含了很多非源代码文件,可能会导致checkout过程非常耗时。 **目录结构建议**: - 组织目录结构时,最好保持本地目录与...
1. **NFS备份方案**:通过NFS共享fsimage和editlog文件,当NameNode挂掉时,可以从备份中恢复,但切换过程可能耗时较长。 2. **Secondary NameNode**:辅助NameNode定期合并fsimage和editlog,减少主NameNode的压力...
然而,随着数据量的增大,手动安装和部署Hadoop集群逐渐成为了一个既耗时又容易出错的过程。因此,研究支持自动化安装和部署Hadoop的技术,对于IT行业的快速部署和业务开发具有重要意义。 本文主要探讨了一套支持...
然而,手动启动和停止Hive的服务,如HiveServer2和Metastore,可能会变得繁琐和耗时。为了解决这个问题,我们可以创建自定义的Shell脚本以及使用systemd服务来实现一键启停Hive的相关服务。 首先,我们来看一下提供...
因为每次写操作都更新FSImage会非常耗时,所以Hadoop采用了Edits日志来记录,仅在需要时才合并回FSImage。 当namenode启动时,会按照以下流程进行工作: 1. 如果是第一次启动,它会格式化HDFS并创建FSImage文件...
* Hadoop HA 是集群中启动两台或两台以上机器充当 NameNode,避免一台 NameNode 节点发生故障导致整个集群不可用的情况(√) * 在安装配置 windows 平台 hadoop,配置后直接运行是没有问题的(×)
一旦NameNode挂掉,整个HDFS就无法访问,同时Hadoop生态系统中依赖于HDFS的各个组件,包括MapReduce、Hive、Pig以及HBase等也都无法正常工作,并且重新启动NameNode和进行数据恢复的过程也会比较耗时。这些问题在给...
如果需要停止Hadoop,应先执行`stop-all.sh`,然后再启动,以确保所有服务都被正确关闭和重新启动。 接着,进入Resys程序所在的目录`/home/hadoop/resys`,使用Spark提交脚本`spark-submit resys.py`来执行推荐系统...
再者,数据共享困难,数据跨集群迁移耗时且成本高。此外,MapReduce 1.0很难支持除MapReduce以外的计算模型,如Storm和Spark这样的实时或内存计算框架。 Hadoop YARN的基本构成包括一个ResourceManager(RM)、多个...
- **Elapsed time**:作业总耗时。 - **Total Allocated Containers**:分配的容器总数。 - **Number of maps, Launched map tasks**:Map任务的数量和启动次数。 - **Number of reduces, Launched reduce tasks**:...