CCDH是Cloudera的Hadoop Developer认证,涵盖了Hadoop及其生态系统软件(Hive、Pig、Sqoop、Oozie、Crunch和Flume)的相关知识
考点主要包括以下四个大类:
Ø 架构:基础部件,不涉及到具体的MapReduce Job层面
Ø 数据管理:开发,部署,操作Hadoop Job所需要的数据
Ø Job机制:Hadoop对于job的具体处理流程
Ø 查询:对数据的查询提取
参考Cloudera提供的考试大纲,以下是关于“架构”的内容
Apache Hadoop共有几种进程?分别在数据存储和处理中起什么作用?
Ø NameNode:管理HDFSblock元数据
Ø SecondaryNameNode:为NameNode提供辅助工作,但不是NameNode的备份
Ø DataNode:运行在slave节点上,管理本地数据
Ø JobTracker:将用户的任务抽象为job,分割成task交给TaskTracker,管理TaskTracker
Ø TaskTracker:运行具体的Map和Reduce task
Hadoop如何利用数据本地化的特性?
Ø Hadoop尽量保证MapperTask处理的是本地节点的数据,如果不能保证,则数据会先通过网络传输到本地,传输完成后Mapper task才会开始
Ø Mapper task完成后,中间数据通过网络传输给Reducer,这个步骤的数据并不是本地化的
Ø 通常会有很多个Mapper,可以设置百分比例x%,当x%的Mapper完成了,数据就开始传输,这样可以避免在结束的瞬间造成网络数据的拥堵,也避免了少数Mapper出现问题,无法完成,对整体效率的影响
HDFS文件系统架构的优缺点?
Ø 优点:分布式存储,数据本地化,网络压力小
Ø 缺点:NameNode没有备份,如果NameNode出了问题,DataNode上的数据将不再可用;适合处理流数据的写入读取,对文件的修改支持的并不好
HDFS如何处理文件大小,Block大小,和Block abstraction?
Ø Block通常是64MB或128MB,可配置
Ø 文件被分割成多个Block,
Ø Block抽象的好处:
n 文件可以由任意多个Block组成,也就是说可以无限大,不必受制于硬盘容量的限制,假设文件有10TB大,恐怕我们没有那么大的硬盘能把它整个装下
n 通过将文件转化为标准化的block,降低了管理和备份的成本
默认的备份值是多少?备份对存储有什么要求?
Ø 默认备份为2份,加上原件一共是3份
Ø 存储在不同的节点,为提高稳定性和可靠性
HDFS是如何存储,读取,写入文件的?
Ø 文件被分割成许多block,通常64MB或128MB
Ø Block被存储在网络上的节点(DataNode)中,并且在其他节点有备份
Ø NameNode掌握着 1.文件由哪些block组成 2.这些block在网络的哪个位置的信息,这些信息称为“元数据”
Ø 用户和NameNode通信,获取元数据信息后直接和DataNode通信,因此NameNode不会成为性能瓶颈
Ø SecondaryNameNode做一些辅助的工作,但不是NameNode的备份,他们的功能不同
Ø HDFS对于数据的读取写入可直接用Java API,或者通过hadoop fs指令
分析常用Hadoop类,接口,方法?
Ø Key值需要应用WritableComparable接口,Value值需要Writable接口
Ø JobConf类:管理用户配置信息
Ø InputFormat类:是对于处理的数据的一种抽象
Ø Mapper/Reducer接口
Ø 关于Hadoop具体的源码实现,威廉之后会有专门的章节提出来详细解释
在job workflow中streaming的作用?
Ø Streaming是为了让不熟悉Java的程序员能够用其他的语言来写Mapper/Reducer的方法,也为了能更好的利用已有的代码资源
Ø 使用标准输入/输出作为中间媒介,比方说JAVA API提取出来的数据写入标准输出,C写的代码再通过从标准输入读取的方式来获得数据
Ø 缺点:需要较多的进程和RAM资源,仅适用于对于text数据的处理,只有Mapper/Reducer代码可以用非Java写,其余的还是只能用Java
威廉会在微博 / 微信公众号:威廉的大数据实验室 同步分享,感兴趣的话就来看看吧