摘要: 1 前提 由于近期工作的需要,要把RESTLET应用到项目中,于是在网上参考了一些资料的基础上,实践了一个关于RESTLET接口的小例子。 Restlet的思想是:HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当Web客户端又充当Web服务器,而无须采用两套完全不同的APIs。 Restlet提供了多个版本:Java SE、Java EE、android、Google AppEngine、Google Web Toolkit、Android。这里我们使用的是jee版本。 RESTLET的实现可以采用JAX-RS方式,也可以采用其他方式,见:http://... 阅读全文
posted @ 2013-09-03 23:27 Scott007 阅读(12221) 评论(1) 推荐(0) 编辑
摘要: HDFS2.x之RPC流程分析1 概述 Hadoop提供了一个统一的RPC机制来处理client-namenode, namenode-dataname,client-dataname之间的通信。RPC是整个Hadoop中通信框架的核心,目前采用ProtocolBuf作为RPC的默认实现。RPC的整体调用流程如下:2 Protobuf Protocol buffer(以下简称PB),PB是Google开源的一种轻便高效的结构化数据存储格式,可以用于结构化数据的序列化和反序列化,很适合做数据存储或 RPC 数据交换格式,目前提供了 C++、Java、Python 三种语言的 API。序列化/反序 阅读全文
posted @ 2013-08-21 20:10 Scott007 阅读(2060) 评论(0) 推荐(0) 编辑
摘要: Java自定义日志输出文件日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径。1 log4j输出多个自定义日志文件如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: 1 log4j.rootLogger=DEBUG, stdout, logfile 4 5 log4j.appender.stdout=org.apache.... 阅读全文
posted @ 2013-08-19 22:09 Scott007 阅读(27527) 评论(1) 推荐(1) 编辑
摘要: Linux Shell 数学运算 在Linux中直接使用数学运算符进行数学运算往往得不到我们想要的计算结果。要在Shell中进行数学运算,我们需要借助点小手段。目前,Linux Shell中进行数学运算的方法主要有三种:bc、expr、let。1 bc1.1 命令行方式 在bash界面,直接输入bc或者bc -q,就可以进去bc的命令行,通过使用数学运算符能够得到我们想要的结果: 1 [scott@centos1 ~]$ bc -q 2 3 2+4 4 5 6 6 7 2-4 8 9 -210 11 2*412 13 814 15 2/416 17 018 19 2%420 21 22... 阅读全文
posted @ 2013-08-16 23:33 Scott007 阅读(5513) 评论(2) 推荐(0) 编辑
摘要: 1硬盘的基本工作原理1.1硬盘部件结构图1.2主要参数术语解释磁头:在与硬盘交换数据的过程 中,读操作远远快于写操作,硬盘厂商开发一种读/写分离磁头。转速(Rotationl Speed):是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。 目前市场上常见的硬盘转速一般有5400rpm、7200rpm、10000rpm、15000rpm。理论上,转速越快越好。因为较高的转速可缩短硬盘的平均寻道时间和实际读写时间。可是转速越快发热量越大,不利于散热。现在的主流硬盘转速一般为7200rpm以上。至 阅读全文
posted @ 2013-07-24 21:49 Scott007 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 1 概念 通常来说,我们编写的Java代码是以进程的形式来运行的,所编写的代码就是“程序”,而执行中的程序就是“进程”。进程是系统进行资源分配和调度的独立单位。 线程是位于进程的下一级,是系统中的最小的执行单位。但是线程本身不拥有资源,线程本身通常只拥有寄存器数据以及执行时的堆栈。同一个进程内的多个线程共享属于当前进程的资源,在需要资源的时候要抢占。 多线程编程的目的就是使得程序能够最大限度的利用CPU等资源,当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。相对于进程间的通信,线程间的通信占用的资源更少,实现起来也更加方便,而且能 阅读全文
posted @ 2013-06-29 22:27 Scott007 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 如果Hadoop集群已经在运行了,这时可能需要动态的添加新的数据节点到Hadoop系统中去,或者将某个数据节点下线,由于业务的需要,集群是不能重启的,那么具体的DataNode添加、删除步骤是什么样的呢?下面以DataNode的上线为例详细说明下如何动态的给HDFS集群新增数据节点(Hadoop2.0版本)。 首先简单说下几个相关的配置文件。(1)由dfs.hosts配置选项指定的白名单文件,当要新上线数据节点的时候,需要把数据节点的名字追加在此文件中;(2)由dfs.hosts.exclude配置选项指定的黑名单文件,当要下线数据节点的时候,需要把数据节点的名字追加在此文件中; 下面开始步. 阅读全文
posted @ 2013-06-13 21:49 Scott007 阅读(2095) 评论(0) 推荐(0) 编辑
摘要: 1 存储过程 创建用于存储数据元的桶,可以选择数据元所驻留的地区(目前来说,选择东京、新加坡会快些,美国本土更便宜),上传数据元到桶,进行持久化存储。另外,可以对上传的数据元及桶进行访问控制、加密等设置。每个AWS账户可以创建多个用户,用户可以对所拥有的数据进行上述权限控制。 目前可存储的你内容有:(1)多媒体、音乐、图片(2)视频监控文件(3)医疗系统的档案、资料(4)静态网站资料2 管理 通过AWS管理控制台对数据进行控制。AWS控制台类似于EC2的web控制界面,或者通过API接口(Java、.Net)、REST接口编程实现。3 S3功能简述(1)创建桶、删除桶(2)写入、读取、删除数据 阅读全文
posted @ 2013-06-04 22:24 Scott007 阅读(7791) 评论(1) 推荐(0) 编辑
摘要: HDFS中的Block状态分析 文件在HDFS里进行读取和存储的时候大都是以block的形式存在和表现。每个文件都可能会有很多个block,每个block又会根据配置文件中的replica的value设置有着多个备份。在NN(NameNode)中,称之为block的这些个东东,在DN(DataNode)中通常叫做replica(都是指的同一种东东)。Block在NN中和DN中随着操作的不同,会有多种状态,这些状态因不同的操作而触发,又因不同的操作而发生转变。下面就分别分析block在NN中和DN中的各种状态以及状态之间的转变。1 DN端的block状态 DN端block状态都保存在DN的内存之 阅读全文
posted @ 2013-05-30 20:12 Scott007 阅读(1069) 评论(0) 推荐(0) 编辑
摘要: 通常来说,大家都是对Java中的Exception进行捕获和进行相应的处理,有些人说,error就无法捕获了。其实,error也是可以捕获的。Error和Exception都是Throwable的子类。既然可以catch Throwable,那么error也是可以catch的。下面给个小例子,来验证一下error的捕获。public class TestCatchError extends Error{ private static final long serialVersionUID = -351488225420878020L; public TestCatchE... 阅读全文
posted @ 2013-05-22 21:03 Scott007 阅读(1926) 评论(0) 推荐(0) 编辑