热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

第二部分Common的实现第2章Hadoop配置信息处理2.1配置文

《Hadoop技术内幕:深入解析HadoopCommon和HDFS架构设计与实现原理》第2章Hadoop配置信息处理,本章从Windows和基于JavaProperties配置文件开始,分析了Hadoop使用的基于健–对构成的、结构相对简单的XML配置文件,以及相应的处理类Configuration,特别是C

《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第2章Hadoop配置信息处理,本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–对构成的、结构相对简单的XML配置文件,以及相应的处理类Configuration,特别是C

《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第2章Hadoop配置信息处理,本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–值对构成的、结构相对简单的XML配置文件,以及相应的处理类Configuration,特别是Configuration类中的资源加载、资源合并和属性扩展等比较重要的处理过程。本节为配置文件简介。

第二部分 Common的实现

本部分内容

Hadoop配置信息处理

序列化与压缩

Hadoop远程过程调用

Hadoop文件系统

第2章 Hadoop配置信息处理

任何一个复杂的软件系统,为了提高其适应性和扩展性,一般都会有一个配置模块或配置系统,作为其扩展、定制的手段和方式。Hadoop使用配置文件将系统中的重要属性以文件的形式进行持久化,使得这些属性可以被重启后的进程或者不同的进程使用。

2.1 配置文件简介

配置文件是一个灵活系统不可缺少的一部分,虽然配置文件非常重要,但却没有标准。本节我们来了解Windows操作系统和Java环境中的配置文件。

2.1.1 Windows操作系统的配置文件

Windows系统广泛使用一种特殊化的ASCII文件(以“ini”为文件扩展名)作为它的主要配置文件标准。下面是INI文件的片段:

  1. ;最后修改时间:2012.10.12
  2. [owner]
  3. name=John Doe
  4. organization=Acme Widgets Inc.
  5. [database]
  6. server=192.0.2.62 ;使用IP地址,在域名解析不能使用时还能正常工作
  7. port=143
  8. file="payroll.dat"
  9. [ftp]

该文件也称为初始化文件(Initialization File,它的扩展名就是initialization的前三个字母)或概要文件(profile),应用程序可以拥有自己的配置文件,存储应用的设置信息,也可以访问Windows的基本系统配置文件win.ini中存储的配置信息。INI文件将配置信息分为“节”,节标题放在方括号中。如上面例子中的[database],就是database节的节标题。节用于对配置数据做一个归类,每一个节可以包含一些与之相关的“项”(ENTRY),并通过等号对其进行赋值(VALUE)。一般的形式如下:

  1. [p]
  2. ENTRY=VALUE

其中VALUE值可以有两种类型:数型或字符串。上面给出的INI文件片段中,database节中包含3个项,分别是server、port和file。其中,配置项port可以以数型的形式读取。

INI文件中的注释以分号开始,到行尾结束。

Windows操作系统同时还提供了一些API,用来对配置文件进行读、写。如使用GetProfileString()函数可以从配置文件win.ini中获取字符串型配置,使用GetPrivateProfileInt()函数可以从私有的配置文件中读取一个配置整数型项。该函数的原型如下:

  1. UINT WINAPI GetPrivateProfileInt(
  2. __in LPCTSTR lpAppName,
  3. __in LPCTSTR lpKeyName,
  4. __in INT nDefault,
  5. __in LPCTSTR lpFileName
  6. );

其中,参数LPCTSTR lpFileName是INI文件的文件名,LPCTSTR lpAppName和LPCTSTR lpKeyName分别是上述的“节”和“项”,INT nDefault是默认值,也就是说,如果在配置文件中找不到配置信息,就返回该默认值。

2.1.2 Java配置文件

JDK提供了java.util.Properties类,用于处理简单的配置文件。Properties很早就被引入到Java的类库中,并且一直没有什么变化。它继承自Hashtable,如图2-1所示,表示了一个持久的属性集,该集可保存在流中或从流中加载。属性列表中每个键及其对应值都是字符串类型。

相对于INI文件,Properties处理的配置文件格式非常简单,它只支持键–值对,等号“=”左边为键,右边为值。形式如下:

  1. ENTRY=VALUE

由于Properties基于Hashtable,它并不能支持INI文件中的“节”,对配置项进行分类。

java.util.Properties中用于处理属性列表的主要方法如下,其中,getProperty()用于在属性列表中获取指定键(参数key)对应的属性,它有两个形式,一个不提供默认值,另一个可以提供默认值。Properties.setProperty()用于在属性列表中设置/更新属性值。相关代码如下:

  1. //用指定的键在此属性列表中搜索属性
  2. public String getProperty(String key)
  3. //功能同上,参数defaultValue提供了默认值
  4. public String getProperty(String key, String defaultValue)
  5. //最终调用 Hashtable 的方法put
  6. public synchronized Object setProperty(String key, String value)

Properties中的属性通过load()方法加载,该方法从输入流中读取键–值对,而store()方法则将Properties表中的属性列表写入输出流。使用输入流和输出流,Properties对象不但可以保存在文件中,而且还可以保存在其他支持流的系统中,如Web服务器。J2SE 1.5版本以后,Properties中的数据也可以以XML格式保存,对应的加载和写出方法是loadFromXML()和storeToXML()。

下面是以XML格式存在的Properties配置文件的例子。

  1. xml?version="1.0"?encoding="UTF-8"?>
  2. "http://java.sun.com/dtd/properties.dtd">
  3. <properties>
  4. <comment>Hicomment>
  5. <entry?key="foo">barentry>
  6. <entry?key="fu">bazentry>
  7. properties>

由于java.util.Properties提供的能力有限,Java社区中出现了大量的配置信息读/写方案,其中比较有名的是Apache Jakarta Commons工具集中提供的Commons Configuration。Commons Configuration中的PropertiesConfiguration类提供了丰富的访问配置参数的方法。Commons Configuration支持文本、XML配置文件&#26684;式;支持加载多个配置文件;支持分层或多级的配置;同时提供对单&#20540;或多&#20540;配置参数的基于类型的访问。应该说,Commons Configuration是一个功能强大的配置文件处理工具。

推荐阅读
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 本文详细记录了一次 HBase RegionServer 异常宕机的情况,包括具体的错误信息和可能的原因分析。通过此案例,探讨了如何有效诊断并解决 HBase 中常见的 RegionServer 挂起问题。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
author-avatar
竹茹士弘宜来
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有