上一页 1 ··· 4 5 6 7 8 9 下一页
摘要: 一 Hadoop的I/O1 数据完整性检测损坏数据的常用方法是在第一次进入系统时计算数据的校验和,如果新生成的校验和不完全匹配原始的校验和,那么数据就被认为是被损坏了。每个512字节都有一个单独的校验和。数据节点负责在存储数据及其校验和前验证它们收到的数据。客户端写入数据并且将它发送到一个数据节点的管线中,在管线上的最有一个数据节点验证校验和。如果此节点检测到错误,客户端便会收到一个checksum excption。除了对客户端读取数据进行验证,每个数据节点还会在后台线程运行一个DataBlockScanner(数据块检测程序),定期验证存储在数据节点上的所有块,防止物理损坏。由于HDFS存 阅读全文
posted @ 2013-05-19 15:38 suzhou 阅读(143) 评论(0) 推荐(0) 编辑
摘要: Hadoop分布式文件系统管理着跨计算机网络存储的文件系统称为分布式文件系统。使这个文件系统能容忍节点故障而不损失数据就是一个极大的挑战。HDFS是Hadoop的旗舰级文件系统。HDFS是为以流式数据访问模式存储超大文件而设计的文件系统。流式数据访问:一次写入,多次读取模式是最高效的。每次分析至少会涉及数据集中的大部分数据,因此读取整个数据集的时间比读取第一条记录的延迟更为重要。1 HDFS的概念HDFS的块默认为64M,HDFS中小于一个块大小的文件an不会占据整个块的空间。之所以要让HDFS的块远大与磁盘块,目的是为了减小寻址开销。MapReduce过程中国的Map任务通常是在一个时间内运 阅读全文
posted @ 2013-05-18 19:18 suzhou 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 一些基本问题:1 避免数据丢失的常见做法是复制:通过系统保存数据的冗余副本,在故障发生时,可以使用数据的另一个副本,这就是冗余磁盘阵列的工作方式。Hadoop的文件系统HDFS(Hadoop Distributed Filesystem)2 大部分分析任务需要通过某种方式把数据合并起来。MapReduce提供一个编程模型,其抽象出磁盘读写的问题,将其转换为计算一个由成对键值组成的数据集。这个计算由来那个部分组成:Map 和Reduce。这两者的接口就是“整合”之地。3 简而言之,Hadoop提供了一个稳定的共享存储和分析系统,存储由HDFS实现,分析由MapReduce实现。4 寻址时间的提高 阅读全文
posted @ 2013-05-18 14:26 suzhou 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 1 表达式基础1)操作符的含义:该操作符执行什么操作以及操作结果的类型,取决于操作数的类型。2)短路求值(short-circuit evaluation):逻辑与和逻辑或操作符总是先计算其做操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数。3)bool值:false用0表示,true用1表示。4)bitset对象或整型值的使用初始化:bitset bitset_quiz1; unsigned long int_quiz1 = 0;设置对应的位: bitset_quiz1.set(27); int_quiz1 |= 1UL... 阅读全文
posted @ 2013-05-17 19:49 suzhou 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1 用构造器确保初始化 构造器采用与类相同的名字。主类的名字和文件名要相同。 从概念上讲,初始化 和 创建 是彼此独立的,然而,在JAVA中,初始化 和 创建 是捆绑在一起的,两者不能分离。 构造器是一种特殊类型的方法,因为它没有返回值。这与返回值为空(void)明显不同。对于返回值为空,尽管方法本身不会自动返回什么,但是仍可选择让它返回别的东西。构造器则不会返回任何东西。2 方法重载 构造器是强制重载方法名的另一个原因。 区分重载的方法:每个重载的方法都必须有一个独一无二的参数类型列表。参数顺序也可以区分两个方法,但是不推荐这么做。 基本数据类型从较... 阅读全文
posted @ 2013-05-16 20:20 suzhou 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 实验一 计算机是怎样工作的周肃 SA******189一 实验目的通过对示例程序进行分析,熟悉gcc工具,理解计算机是怎样工作的,并且讨论分析多任务计算机是怎样工作的。二 实验内容1 请使用Example的c代码分别生成.cpp,.s,.o和ELF可执行文件,并加载运行,分析.s汇编代码在CPU上的执行过程;2 实验报告要求:通过实验解释单任务计算机是怎样工作的,并在此基础上讨论分析多任务计算机是怎样工作的。三 实验步骤example.c:#includeint g(int x){ return x+3;}int f(int x){ return g(x);}int main(void){ r 阅读全文
posted @ 2013-05-15 22:06 suzhou 阅读(274) 评论(1) 推荐(0) 编辑
摘要: 1 一个有效指针的三种状态:1) 保存一个特定对象的地址;2) 指向某个对象后面的另一对象;3) 0值。表明它不指向任何对象。如果必须分开定义指针和其所指向的对象,则将指针初始化为0。如果在代码中使用了NULL这个于处理器变量,则编译时会自动被数值0替换。2 void*型指针void*指针可以博阿村任何类型对象的地址,表明该指针与这一地址值相关,但不清楚存储在此地址上的对象的类型。void*指针支持的操作:1) 与另一个指针进行比较2) 向函数传递void* 指针或者从函数返回void* 指针3) 给另一个void*指针赋值不允许使用void*指针操纵它所指向的对象。因为需要重新获取存储在vo 阅读全文
posted @ 2013-05-15 10:51 suzhou 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 1 为什么头文件只能用于声明,不能用于定义? 在说明这个问题之前,有三个例外是可以定义在头文件中的:类,值在编译时就已知道的const对象和inline函数。 在头文件中定义这些实体,是因为编译器需要它们的定义来产生代码。 现在来看看这个问题。 首先明确的是,如果把定义写在.h文件中,那么很可能出现多重定义的报错。 每一个点CPP文件都是单独编译的,该点CPP文件中用到的类型必须在它所include 的头文件当中找到,相当于把它所有include的文件中的代码都加到该CPP文件的前面,但是声明的部分将不会出现在编译后的点O文件。这样的结果就是,当有多个文件包含相同的头文... 阅读全文
posted @ 2013-05-14 16:22 suzhou 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 代码自己敲的,中间建树的时候遇到了麻烦,以前是先申请空间给根节点,这样的话根节点就需要单独处理。突发奇想用了下双重指针,对双重指针的作用和用法有了更好的理解。用递归解法做这个问题不难,主要熟悉了一下建树,打印树的代码。中间有调试代码,就不改了,方便看执行过程。#include#include#define DEBUG(i) printf("Here " #i " is OK\n");typedef struct BSTreeNode{ int m_nValue; struct BSTreeNode *m_pLeft; struct BSTreeNode 阅读全文
posted @ 2013-05-13 14:35 suzhou 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 在谈到extern关键字之前,首先要清楚地认识两个名词:变量的定义和声明。变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。变量的声明:用于向程序表明变量的类型和名字。两者的关系:定义也是声明:当定义变量时,我们声明了它的类型和名字。弄清了这两者的关系,现在可以来理解extern这个关键字了。extern关键字声明变量名而不定义它。extern声明不是定义,也不分配存储空间,但是可以和变量的定义一同使用。例:extern in i; //声明但是没有定义iint i; //声明并且定义i一个比较好的例子:下面的这样的写法会报错,因为a的声明必须在使 阅读全文
posted @ 2013-05-08 21:35 suzhou 阅读(238) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 下一页