热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

376页8万字大数据Hadoop存储与分析处理平台建设方案

1Hadoop11.1概述11.1.1Hadoop能做什么11.2特点11.3软件设计21.3.1Hadoop中的文件格式21.3.2机架感知121.4Hadoop知

1 Hadoop 1

1.1 概述 1

1.1.1 Hadoop能做什么 1

1.2 特点 1

1.3 软件设计 2

1.3.1 Hadoop 中的文件格式 2

1.3.2 机架感知 12

1.4 Hadoop知识学习篇 14

1.4.1 Java接口 14

1.4.2 FileSystem总结 1

1.4.3 文件读取过程/文件写入过程 4

1.4.4 Hadoop均衡器 1

1.4.5 Hadoop存档 2

1.4.6 数据完整性 3

1.4.7 压缩 4

1.4.8 序列化【优点】 6

1.4.9 序列化框架 14

1.4.10 MapReduce过程中的序列化与反序列化 43

1.4.11 √HDFS数据结构 53

1.4.12 MapReduce框架 55

1.4.13 MapReduce工作机制 70

1.4.14 推测执行【优点】 74

1.4.15 重用JVM【优化】 75

1.4.16 IDS 75

1.4.17 输入格式 75

1.4.18 输出格式 21

1.4.19 计数器 27

1.4.20 √排序技术 33

1.4.21 全排序 48

1.4.22 √连接 51

1.4.23 DistributedCache 58

1.4.24 √作业链接 65

1.4.25 √默认的MapReduce作业 66

1.4.26 集群规范 66

1.4.27 网络拓扑[优点] 67

1.4.28 环境设置 72

1.4.29 守护进程的关键属性 73

1.4.30 安全性 77

1.4.31 安全模式 77

1.4.32 fsck工具 77

1.4.33 日常维护 80

1.5 Hadoop知识总结篇 82

1.5.1 Hadoop通信协议总结 82

1.5.2 通过日志掌握Hadoop运行过程(HDFS/MAPREDUCE) 1

1.5.3 MapReduce配置调优 1

1.5.4 MapReduce过程配置 1

1.6 应用程序运行JOB 3

1.7 Hadoop源码篇 3

2 Accumulo 5

3 海量数据查询支撑分系统 5

3.1 Dremel 5

3.1.1 概述 5

3.1.2 软件设计 6

3.1.3 一句话总结 13

3.2 Drill 14

3.2.1 概述 14

3.3 Tez 15

3.4 Impala*** 22

3.5 Tajo*** 22

3.6 序列化框架与RPC 22

3.6.1 Avro 22

3.6.2 Protocol 22

3.6.3 Thrift 22

3.7 缓存 22

4 算法研究***** 24

4.1 BloomFilter 24

4.1.1 集合表示和元素查询 24

4.1.2 错误率估计 25

4.1.3 最优的哈希函数个数 27

4.1.4 位数组的大小 28

4.1.5 总结 29

4.2 Bit Map(BitSet) 30

4.2.1 Bit Map的基本思想 30

4.2.2 Map映射表 32

4.2.3 位移转换 33

4.2.4 扩展 39

4.2.5 Bit-Map的应用 39

4.2.6 Bit-Map的具体实现 39

4.3 哈希算法 53

4.4 二叉树 72

4.5 堆与堆排序 72

4.6 双层桶划分 84

4.7 trie树 86

4.8 外排序 93

5 海量数据处理思路 97

5.1 Bloom filter 134

5.2 Hashing 136

5.3 bit-map 137

5.4 138

5.5 双层桶划分 139

5.6 数据库索引 140

5.7 倒排索引(Inverted index) 141

5.8 外排序 142

5.9 trie树 143

6 经典博文 147

从Hadoop框架与MapReduce模式中谈海量数据处理 147

6.1.1 前言 147

6.1.2 第一部分、mapreduce模式与hadoop框架深入浅出 148

6.1.3 架构扼要 148

6.1.4 Mapreduce模式 148

6.1.5 Hadoop框架 150

6.1.6 Hadoop的组成部分 151

6.1.7 第二部分、淘宝海量数据产品技术架构解读—学习海量数据处理经验 155

6.1.8 淘宝海量数据产品技术架构 155

mapreduce的二次排序 SecondarySort 162342c55cd9bbbfc32471de803a2f5f11b.jpeg


1.1.1 概述

Drill 是Hadoop的赞助商之一MapR发起的。Drill作为一个Dremel的山寨项目,有和Dremel相似的架构和能力。他们希望Drill最终会想Hive,Pig一样成为

Hadoop上的重要组成部分。为Hadoop提供快速查询的能力。和Dremel有一点不同,在数据模型上,开源的项目需要支持更标准的数据结构。比如CSV和

JSON。同时Drill还有更大的灵活性,支持多重查询语言,多种接口。

现在Drill的目标是完成初始的需求,架构。完成一个初始的实现。这个实现包括一个执行引擎和DrQL。DrQL是一个基于列的格式,类似于Dremel。目前,

Drill已经完成的需求和架构设计。总共分为了四个组件

Query language:类似Google BigQuery的查询语言,支持嵌套模型,名为DrQL.

Low-lantency distribute execution engine:执行引擎,可以支持大规模扩展和容错。可以运行在上万台机器上计算数以PB的数据。

Nested data format:嵌套数据模型,和Dremel类似。也支持CSV,JSON,YAML类似的模型。这样执行引擎就可以支持更多的数据类型。

Scalable data source: 支持多种数据源,现阶段以Hadoop为数据源。


1.1 Tez

Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:

(1)Apache二级开源项目(源代码今天发布的)

(2)运行在YARN之上

(3) 适用于DAG(有向图)应用(同Impala、Dremel和Drill一样,可用于替换Hive/Pig等)

其中,第三点需要做一些简单的说明,Apache当前有顶级项目Oozie用于DAG作业设计,但Oozie是比较高层(作业层面)的,它只是提供了一种多类型作业(比如MR程序、Hive、Pig等)依赖关系表达方式,并按照这种依赖关系提交这些作业,而Tez则不同,它在更底层提供了DAG编程接口,用户编写程序时直接采用这些接口进行程序设计,这种更底层的编程方式会带来更高的效率,举例如下:

(1)传统的MR(包括Hive,Pig和直接编写MR程序)。假设有四个有依赖关系的MR作业(1个较为复杂的Hive SQL语句或者Pig脚本可能被翻译成4个有依赖关系的MR作业)或者用Oozie描述的4个有依赖关系的作业,运行过程如下(其中,绿色是Reduce Task,需要写HDFS):

be8279c9c9b094f701e5efe7a3f34090.jpeg

(2)采用Tez,则运行过程如下:

90043e6dee4f37b949d88923b74d6d7b.jpeg

通过上面的例子可以看出,Tez可以将多个有依赖的作业转换为一个作业(这样只需写一次HDFS,且中间节点较少),从而大大提升DAG作业的性能。Tez已被Hortonworks用于Hive引擎的优化,经测试,性能提升约100倍(http://hortonworks.com/blog/100x-faster-hive/)。

【Tez实现】

Tez对外提供了6种可编程组件,分别是:

(1)Input:对输入数据源的抽象,它解析输入数据格式,并吐出一个个Key/value

(2)Output:对输出数据源的抽象,它将用户程序产生的Key/value写入文件系统

(3)Paritioner:对数据进行分片,类似于MR中的Partitioner

(4)Processor:对计算的抽象,它从一个Input中获取数据,经处理后,通过Output输出

(5)Task:对任务的抽象,每个Task由一个Input、Ouput和Processor组成

(6)Maser:管理各个Task的依赖关系,并按顺依赖关系执行他们

除了以上6种组件,Tez还提供了两种算子,分别是Sort(排序)和Shuffle(混洗),为了用户使用方便,它还提供了多种Input、Output、Task和Sort的实现,具体如下:

(1)Input实现:LocalMergedInput(文件本地合并后作为输入),ShuffledMergedInput(远程拷贝数据且合并后作为输入)

(2)Output实现:InMemorySortedOutput(内存排序后输出),LocalOnFileSorterOutput(本地磁盘排序后输出),OnFileSortedOutput(磁盘排序后输出)

(3) Task实现:RunTimeTask(非常简单的Task,基本没做什么事)

(4)Sort实现:DefaultSorter(本地数据排序),InMemoryShuffleSorter(远程拷贝数据并排序)

为了展示Tez的使用方法和验证Tez框架的可用性,Apache在YARN MRAppMaster基础上使用Tez编程接口重新设计了MapReduce框架,使之可运行在YARN中。为此,Tez提供了以下几个组件:

(1)Input:SimpleInput(直接使用MR InputFormat获取数据)

(2)Output:SimpleOutput(直接使用MR OutputFormat获取数据)

(3)Partition:MRPartitioner(直接使用MR Partitioner获取数据)

(4)Processor:MapProcessor(执行Map Task),ReduceProcessor(执行Reduce Task)

(5)Task:FinalTask,InitialTask,initialTaskWithInMemSort,InitialTaskWithLocalSort ,IntermediateTask,LocalFinalTask,MapOnlyTask。

文章引用的资料均通过互联网等公开渠道合法获取,仅作为行业交流和学习使用,并无任何商业目的。其版权归原资料作者或出版社所有,本文作者不对所涉及的版权问题承担任何法律责任。若版权方、出版社认为本文章侵权,请立即通知作者删除。


推荐阅读
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • GreenPlum采纳ShareNothing的架构,良好的施展了便宜PC的作用。自此IO不在是DW(datawarehouse)的瓶颈,相同网络的压力会大很多。然而GreenPlum的查问优化策略可能防止尽量少的网络替换。对于首次接触GreenPlum的人来说,必定耳目一新。 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • web页面报表js下载,web报表软件 ... [详细]
  • 阿里面试题解析:分库分表后的无限扩容瓶颈与解决方案
    本文探讨了在分布式系统中,分库分表后的无限扩容问题及其解决方案。通过分析不同阶段的服务架构演变,提出了单元化作为解决数据库连接数过多的有效方法。 ... [详细]
  • 本文介绍了如何在Spring框架中使用AspectJ实现AOP编程,重点讲解了通过注解配置切面的方法,包括方法执行前和方法执行后的增强处理。阅读本文前,请确保已安装并配置好AspectJ。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
author-avatar
一月的泰迪熊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有