1. 问:在eclipse中的写的代码如何提交作业到JobTracker中的哪?
答:
1.1 在eclipse中调用的job.waitForCompletion(true)实际上执行如下方法
connect();
info = jobClient.submitJobInternal(conf);
1.2 在connect()方法中,实际上创建了一个JobClient对象。
从上文可以看出,我把qom的对象构造分成三部分,第一部分是type的构造,这是通过typeinfo构造一个typeimpl的哈希表,这是在main之前完成的,第二部分是class的构造linux常用命令,这是在main中进行的,这两部分都是全局的,也就是只要编译进去了的qom对象都会调用,第三部分是object的构造,这是构造具体的对象实例,在命令行指定了对应的设备时,才会创建object。我们注意到每当创建一个field对象时,都会分配给该对象一个独立的validate()方法,如果我们创建30个field对象,那么就要给这30对象分配30次validate()方法,其实,validate()方法应该是共享的,也就是说每个field对象都应该调用用一个validate()方法。2)桩对象与远程对象具有相同的接口和方法列表,当客户端调用远程对象时,实际上是由相应的桩对象代理完成的。
JobSubmissionProtocol的实现类是JobTracker。
1.3 在jobClient.submitJobInternal(conf)方法中,调用了
JobSubmissionProtocol.submitJob(...),
即执行的是JobTracker.submitJob(...)。
2. Hadoop的数据类型要求必须实现Writable接口。
3. java基本类型与Hadoop常见基本类型的对照
LongLongWritable
IntegerIntWritable
BooleanBooleanWritable
StringText
4. 问:java类型如何转化为hadoop基本类型?
答:调用hadoop类型的构造方法linux常用命令,或者调用set()方法。
new LongWritable(123L);
5. 问:hadoop基本类型如何转化为java类型?
答:对于Text,需要调用toString()方法,其他类型调用get()方法。
-------------------------------------
作业:
1.如果使用IdentityMapper、IdentityReducer作为自定义的MR类,
如果输入文件是hello文件。问:输出内容是什么?
2.用真实数据计算手机流量。
四、HBase模型介绍
1. HBase(NoSQL)的数据模型
1.1 表(table),是存储管理数据的。
1.2 行键(row key),类似于MySQL中的主键。
行键是HBase表天然自带的。
1.3 列族(column family),列的集合。
HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的。
HBase表中的数据,每个列族单独一个文件。
1.4 时间戳(timestamp),列(也称作标签、修饰符)的一个属性。
行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。
如果不指定时间戳或者版本,默认取最新的数据。
1.5 存储的数据都是字节数组。
1.6 表中的数据是按照行键的顺序物理存储的。
2.HBase的物理模型
2.1 HBase是适合海量数据(如20PB)的秒级简单查询的数据库。
2.2 HBase表中的记录,按照行键进行拆分, 拆分成一个个的region。
许多个region存储在region server(单独的物理机器)中的。
这样,对表的操作转化为对多台region server的并行查询。
3.HBase的体系结构
3.1 HBase是主从式结构,HMaster、HRegionServer