1.关于MapReduce:
map函数:
reduce函数:
combiner(合并函数):在reduce函数处理前,提前处理map函数产生的数据
2.Hadoop分布式文件系统(Hadoop Distributed Filesystem):
HDFS以流式数据访问模式来存储超大文件,运行与商用硬件集群上。
3.Hadoop I/O:
A.保证HDFS存储的数据的完整性
B.进行文件压缩,有两大好处:一是减少存储文件所需要的空间;二是加速数据在网络上和磁盘上的传输。
C.序列化:指将结构化对象转化为字节牛,以便在网络上传输或写到磁盘进行永久存储。序列化在分布式数据处理的两大领域经常出现:进程间通信和永久存储。Hadoop拥有自己的序列化格式Writable。
D基于文件的数据结构:对于某些应用,需要特殊的数据结构来存储自己的数据。所以Hadoop开发了SequencFile组件帮助开发人员对小文件的存储实现符合需求的数据结构。
4.MapReduce 应用开发:
利用MapReduce编写程序流程:a.编写map函数和reduce函数,最好使用单元测试来确保函数的运行符合预期 b.写一个驱动程序来运行作业,使用小型数据集测试驱动程序能不能正常运行,同时以此来调试mapper和reducer。c.程序通过小型数据集的测试后,可准备运行到集群上。这时程序会暴露出许多问题,可以Hadoop提供的IsolationRunner进行调试。 d.程序正确运行后,进行优化调整。首先要执行一些标志检查,借此加快MapReduce的运行,然后做一些任务剖析。Hadoop提供了钩子来辅助分析过程。
5.Hadoop相关高级组件:
A.Pig:它是一种探索大规模数据集的脚本语言,它为大型数据集的处理提供了更高层次的抽象。MapReduce的一个缺点是开发周期过程,数据处理需要多个MapReduce过程才能实现,而Pig进行了高度封装,帮助程序员关注业务。
B.Hive:它是一个构建在Hadoop上的数据仓库框架,是应FB每天产生的海量网络数据进行管理和机器学习的需求而产生的和发展的。它的设计目的是让精通SQL技能的分析师能够在大规模数据集上运行查询。
C. HBase:它是一个在HDFS上开发的面向列的分布式数据库,如果需要实时地随机读/写超大规模数据集,就可以使用HBase这一Hadoop应用。
D. ZooKeeper:它是Hadoop的分布式协调服务,可提供一组工具,使你在构建分布式应用时能够对部分失败进行争取处理。部分失败指的是当一条消息在网络中两个节点之间传送时,如果出现网络错误,发送者无法知道接受者是否已经收到这个消息。接受者可能在出现网络错误之前就已经收到这条信息,也有可能没有收到,又或接受者的进程已经死掉。发送者能够获得真实情况的唯一途径就是重新连接接受者,并向它发出询问。这就是部分失败:即我们甚至不知道一个操作是否已经失败。
E.开源工具Sqoop:
网友评论