《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文件的片段:
<ol> <li><span>;最后修改时间:2012.10.12 </span></li> <li><span>[owner] </span></li> <li> <span>name</span><span>=</span><span>John</span><span> Doe </span> </li> <li> <span>organization</span><span>=</span><span>Acme</span><span> Widgets Inc. </span> </li> <li><span> </span></li> <li><span>[database] </span></li> <li> <span>server</span><span>=</span><span>192</span><span>.0.2.62 ;使用IP地址,在域名解析不能使用时还能正常工作 </span> </li> <li> <span>port</span><span>=</span><span>143</span><span> </span> </li> <li> <span>file</span><span>=</span><span>"payroll.dat"</span><span> </span> </li> <li><span> </span></li> <li><span>[ftp] </span></li> </ol>
该文件也称为初始化文件(Initialization File,它的扩展名就是initialization的前三个字母)或概要文件(profile),应用程序可以拥有自己的配置文件,存储应用的设置信息,也可以访问Windows的基本系统配置文件win.ini中存储的配置信息。INI文件将配置信息分为“节”,节标题放在方括号中。如上面例子中的[database],就是database节的节标题。节用于对配置数据做一个归类,每一个节可以包含一些与之相关的“项”(ENTRY),并通过等号对其进行赋值(VALUE)。一般的形式如下:
<ol> <li><span>[div] </span></li> <li> <span>ENTRY</span><span>=</span><span>VALUE</span><span> </span> </li> </ol>
其中VALUE值可以有两种类型:数型或字符串。上面给出的INI文件片段中,database节中包含3个项,分别是server、port和file。其中,配置项port可以以数型的形式读取。
INI文件中的注释以分号开始,到行尾结束。
Windows操作系统同时还提供了一些API,用来对配置文件进行读、写。如使用GetProfileString()函数可以从配置文件win.ini中获取字符串型配置,使用GetPrivateProfileInt()函数可以从私有的配置文件中读取一个配置整数型项。该函数的原型如下:
<ol> <li><span>UINT WINAPI GetPrivateProfileInt( </span></li> <li><span> __in LPCTSTR lpAppName, </span></li> <li><span> __in LPCTSTR lpKeyName, </span></li> <li><span> __in INT nDefault, </span></li> <li><span> __in LPCTSTR lpFileName </span></li> <li><span>); </span></li> </ol>
其中,参数LPCTSTR lpFileName是INI文件的文件名,LPCTSTR lpAppName和LPCTSTR lpKeyName分别是上述的“节”和“项”,INT nDefault是默认值,也就是说,如果在配置文件中找不到配置信息,就返回该默认值。
2.1.2 Java配置文件
JDK提供了java.util.Properties类,用于处理简单的配置文件。Properties很早就被引入到Java的类库中,并且一直没有什么变化。它继承自Hashtable,如图2-1所示,表示了一个持久的属性集,该集可保存在流中或从流中加载。属性列表中每个键及其对应值都是字符串类型。
相对于INI文件,Properties处理的配置文件格式非常简单,它只支持键–值对,等号“=”左边为键,右边为值。形式如下:
<ol><li><span><span>ENTRY</span><span>=</span><span>VALUE</span><span> </span></span></li></ol>
由于Properties基于Hashtable,它并不能支持INI文件中的“节”,对配置项进行分类。
java.util.Properties中用于处理属性列表的主要方法如下,其中,getProperty()用于在属性列表中获取指定键(参数key)对应的属性,它有两个形式,一个不提供默认值,另一个可以提供默认值。Properties.setProperty()用于在属性列表中设置/更新属性值。相关代码如下:
<ol> <li><span>//用指定的键在此属性列表中搜索属性 </span></li> <li><span>public String getProperty(String key) </span></li> <li><span> </span></li> <li><span>//功能同上,参数defaultValue提供了默认值 </span></li> <li><span>public String getProperty(String key, String defaultValue) </span></li> <li><span> </span></li> <li><span>//最终调用 Hashtable 的方法put </span></li> <li><span>public synchronized Object setProperty(String key, String value) </span></li> </ol>
Properties中的属性通过load()方法加载,该方法从输入流中读取键–值对,而store()方法则将Properties表中的属性列表写入输出流。使用输入流和输出流,Properties对象不但可以保存在文件中,而且还可以保存在其他支持流的系统中,如Web服务器。J2SE 1.5版本以后,Properties中的数据也可以以XML格式保存,对应的加载和写出方法是loadFromXML()和storeToXML()。
下面是以XML格式存在的Properties配置文件的例子。
<ol> <li><span><span></span><span>xml</span><span>?</span><span>version</span><span>=</span><span>"1.0"</span><span>?</span><span>encoding</span><span>=</span><span>"UTF-8"</span><span>?></span><span> </span></span></li> <li><span>properties?SYSTEM </span></li> <li> <span> "http://java.sun.com/dtd/properties.dtd"</span><span>></span><span> </span> </li> <li><span><span>properties</span><span>></span><span> </span></span></li> <li> <span> </span><span><span>comment</span><span>></span><span>Hi</span><span></span><span>comment</span><span>></span><span> </span></span> </li> <li> <span> </span><span><span>entry</span><span>?</span><span>key</span><span>=</span><span>"foo"</span><span>></span><span>bar</span><span></span><span>entry</span><span>></span><span> </span></span> </li> <li> <span> </span><span><span>entry</span><span>?</span><span>key</span><span>=</span><span>"fu"</span><span>></span><span>baz</span><span></span><span>entry</span><span>></span><span> </span></span> </li> <li> <span></span><span>properties</span><span>></span><span> </span> </li> </ol>
由于java.util.Properties提供的能力有限,Java社区中出现了大量的配置信息读/写方案,其中比较有名的是Apache Jakarta Commons工具集中提供的Commons Configuration。Commons Configuration中的PropertiesConfiguration类提供了丰富的访问配置参数的方法。Commons Configuration支持文本、XML配置文件格式;支持加载多个配置文件;支持分层或多级的配置;同时提供对单值或多值配置参数的基于类型的访问。应该说,Commons Configuration是一个功能强大的配置文件处理工具。

随着互联网的发展,SEO(SearchEngineOptimization,搜索引擎优化)已经成为了网站优化的重要一环。如果您想要使您的PHP网站在搜索引擎中获得更高的排名,就需要对SEO的内容有一定的了解了。本文将会介绍如何在PHP中实现SEO优化,内容包括网站结构优化、网页内容优化、外部链接优化,以及其他相关的优化技巧。一、网站结构优化网站结构对于S

随着电子商务和企业管理的发展,许多企业开始寻找更好的方法来处理其日常业务流程。ERP系统是一种能够整合企业各种业务流程的软件工具。它提供了全面的功能,包括生产、销售、采购、库存、财务等方面,帮助企业提高效率、控制成本和提高客户满意度。而在PHP编程语言中,也能够实现ERP系统,这就需要我们掌握一些基本的知识和技术。下面,我们将深入探讨如何在PHP中实现ERP

标签定义HTML文档的划分。该标签主要用于将相似的内容分组在一起以方便样式设置,也用作HTML元素的容器。我们使用CSS属性在HTML中并排放置三个分区标记。CSS属性float用于实现此目的。语法下面是<div>标签的语法。<divclass='division'>Content…</div>Example1的中文翻译为:示例1以下是使用CSS属性在HTML中将三个分区类并排放置的示例。<!DOCTYPEhtml><html><

随着物联网技术的发展和普及,越来越多的应用场景需要使用PHP语言进行物联网开发。PHP作为一种广泛应用于Web开发的脚本语言,它的易学易用、开发速度快、可扩展性强等特点,使其成为开发物联网应用的一种优秀选择。本文将介绍在PHP中实现物联网开发的常用技术和方法。一、传输协议和数据格式物联网设备通常使用TCP/IP或UDP协议进行数据传输,而HTTP协议是一个优

随着企业的发展,客户管理变得越来越重要。为了提高客户满意度和忠诚度,越来越多的企业采用客户关系管理系统(CRM)来帮助其管理客户关系。而PHP是一种流行的编程语言,因其简单易学、灵活和强大而被广泛应用于Web开发。那么,如何在PHP中实现CRM系统呢?本文将为您介绍实现CRM系统的步骤和技巧。Step1:需求分析在开始开发CRM系统之前,您需要进行需求分析

随着互联网的不断发展,越来越多的网站需要使用验证码来保证安全性。验证码是一种借助人类能力而无法被计算机破解的认证技术,广泛应用于网站注册、登录、找回密码等功能中。下面将介绍如何使用PHP实现验证码功能。一、生成验证码图片验证码图片的生成是验证码功能的核心,需要生成一个随机字符,并将其渲染为图像展示给用户。在PHP中,可以使用GD库来生成图片。GD库是一种用于

管家婆系统在现代企业管理中扮演着重要的角色,它不仅仅能够有效地提高企业的工作效率,还可以大大提高了企业的生产力和竞争力。与此同时,PHP作为一种广泛使用的动态脚本语言,也受到了许多企业的青睐。接下来,我们将探讨如何在PHP中实现管家婆系统,以提高企业的管理效率。一、了解管家婆系统管家婆系统是一种企业管理软件,主要用于管理公司的财务、销售、采购、仓库、人力资源

随着移动互联网技术的普及,短信成为了一种广泛应用的通信手段,需要在网站或应用中实现短信发送功能。PHP作为一种广泛应用于Web开发的编程语言,在实现短信发送功能时也是十分方便的。本文将介绍如何在PHP中实现短信发送功能。选择短信服务商在开始实现短信发送功能之前,首先需要选择一家短信服务商。常见的国内短信服务商包括阿里云、云片网、容联云通讯等。一般情况下,这些


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),