作者:一月的泰迪熊 | 来源:互联网 | 2023-10-10 10:34
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 162
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):
(2)采用Tez,则运行过程如下:
通过上面的例子可以看出,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。
文章引用的资料均通过互联网等公开渠道合法获取,仅作为行业交流和学习使用,并无任何商业目的。其版权归原资料作者或出版社所有,本文作者不对所涉及的版权问题承担任何法律责任。若版权方、出版社认为本文章侵权,请立即通知作者删除。