关闭

6.2 开发YARN的应用程序

6.2 开发YARN的应用程序   YARN能引入其他的计算模式到Hadoop中。Hadoop 2.x、MapReduce、Pig和Hive都有AM的库和对应的客户端。开发人员可以使用YARN API编写自己的应用并运行在现有的Hadoop框架内。同样,企业如果已经有大量的数据集在HDFS中,也可以编写自定义的应用来使用它们,而不需要提供新的集群或者迁移已有的数据。   Storm是一个已经移...
阅读(4) 评论(0)

6.1 YARN的架构

6.1 YARN的架构   下图展示了基于YARN的集群的架构,这个集群的模块主要有以下5种类型。 资源管理器(Resource Manager,RM):每个集群里面都有一个RM守护进程,专门负责集群中可用资源的分配和管理。 节点管理器(Node Manager,NM):每个节点都有一个NM守护进程,负责节点的本地资源管理。在RM中,NM代表本地节点。 Application Master(...
阅读(14) 评论(0)

5.4 压缩

5.4 压缩  为了节省存储空间和网络数据传输量,我们会反复提到压缩这个问题。当处理大量数据时,只要有办法减少存储空间和网络数据传输量,就能在速度和成本两方面给予效率提升。压缩就是这样一种策略,能帮助基于Hadoop更高效。  所有的压缩技术都在压缩速度和压缩效率之间进行了折衷。压缩率越高,压缩速度越慢,反之亦然。每种压缩技术都可以通过调整来权衡以上两个方面。例如,gzip压缩工具提供了选项-1到-...
阅读(22) 评论(0)

5.3 文件格式

5.3 文件格式   有很多文件格式自身也是数据结构。在Hive那章中,我们介绍了ORC文件——优化记录列式文件存储。Hadoop还支持其他一些流行的文件格式。 5.3.1 Sequence文件格式   Sequence文件是包含二进制键值对的一种文件格式。Sequence文件中的每一条记录都含有一个键和键对应的值。Sequence文件把多个较小的文件合并成单个较大的文件,这样可以缓解Had...
阅读(9) 评论(0)

5.2 Avro序列化

5.2 Avro序列化   Avro是一个流行的序列化框架,其主要特点如下: 支持多种数据结构的序列化。 支持多种编程语言,而且序列化速度快,字节紧凑。 Avro代码生成功能是可选的。无需生成类或代码,即可读写数据或使用RPC传输数据。   Avro使用schema来读取和写入数据。schema有助于简洁标识序列化后的对象。在Java序列化中,对象类型的元数据会被写入序列化后的字节流中,...
阅读(10) 评论(0)

5.1 Hadoop数据序列化

5.1 Hadoop数据序列化  尽管我们看到的数据是结构化的形式,但数据的原始形式是序列化的比特或比特流。数据以这种原始形式通过网络传输,然后保存在RAM或其他持久性存储媒体中。序列化过程就是把结构化的数据转换为原始形式。反序列化过程则相反,是把数据从原始比特流形式重建为结构形式。  Hadoop中不同的组件使用远程调用(Remote Procedure Call,RPC)进行交互。在发送调用函数...
阅读(21) 评论(0)

2.6 数据连接的处理

2.6 数据连接的处理   在MapReduce中,连接可以在Map任务中完成,也可以在Reduce任务中完成。前者被称为Map侧的连接,后者被称为Reduce侧的连接。 2.6.1 Reduce侧的连接   基本的原理是,在每条记录添加一个标签指明数据的来源,并在Map任务中提取连接键。Reduce任务收到同一个连接键的所有记录并执行连接操作。如果参与连接的数据集非常小,可以通过一个旁路通...
阅读(13) 评论(0)

2.3 Reduce任务

2.3 Reduce任务  Reduce任务是一个数据聚合的步骤。如果Reduce任务的数量没有指定,默认值为1。只执行1个Reduce,可能会面临这个Reduce节点负载过大的风险,而使用过多的Reduce任务则意味着复杂的洗牌处理(shuffle),并使输出文件的数量激增,从而对NameNode造成很大的压力。想要确定一个最优的Reduce任务的数量,关键是要理解数据分布和分片函数。...
阅读(13) 评论(0)

2.2Map任务

2.2 Map任务   Map阶段的效率是由作业的输入数据的特点决定的。我们已经知道,过多的小文件会出现大量的分片,从而导致Map任务的激增。另一个需要特别注意的重要统计项是Map任务的平均运行时间。太多或者太少的Map任务都会对作业的性能产生不利影响。关键时让这两者达到一个平衡点,二这又取决于应用和数据本身。根据实践总结的一条经验法则是:单个Map任务的执行的时间大约保持在1至3分钟。 2....
阅读(11) 评论(0)

2.1MapReduce输入

2.1MapReduce输入   MapReduce作业依赖于Map阶段为它提供原始数据的输入,这个阶段提供了能获得的最大并行度,因此它的智能化对一个作业的提速至关重要。数据被分成块(chunk),然后Map任务对每块数据进行操作。每块数据被称为InputSplit。[//后面称分片]Map任务需要在每个InputSplit类上进行操作。还有其他两种类,InputFormat和RecordRea...
阅读(15) 评论(0)

实验9 MapReduce-分布式缓存

9.1实验要求     假定现有一个100GB的大表big.txt和一个1MB的小表small.txt,请基于MapReduce思想编程实现判断小表中的单词在大表中出现次数。所谓的“扫描大表,加载小表“。由于实验中没有100GB这样的大表,甚至1MB的小表都没有,因为本实验采用模拟方式,所以用少量数据代表大文件big.txt,更少量数据代表small.txt. 9.2实验 BigAndSma...
阅读(11) 评论(0)

实验7 MapReduce-计数器

7.1概述...
阅读(10) 评论(0)

实验6 MapReduce-二次排序

6.1实验原理 首先需要认识到一点就是MR默认会对键进行排序[https://www.cnblogs.com/acSzz/p/6383618.html] Spill过程           在collect阶段的执行过程中,当内存中的环形数据缓冲区中的数据达到一定发之后,便会触发一次Spill操作,将部分数据spill到本地磁盘上。SpillThread线程实际上是kvbuffer缓冲区...
阅读(14) 评论(0)

实验8 MapReduce-Join操作

8.3.1概述 对于RDBMS中的Join操作,写SQL的时候要十分注意细节,稍有差池就会耗时很长造成很大的性能瓶颈,而在Hadoop中使用MapReduce框架进行Join操作时同样耗时,但是由于Hadoop的分布式设计理念的特殊性,因此对于这种Join操作也具备了一定的特殊性。 8...
阅读(15) 评论(0)
    个人资料
    • 访问:182次
    • 积分:36
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:14篇
    • 译文:0篇
    • 评论:0条
    文章存档