热门标签 | 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。

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


推荐阅读
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
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社区 版权所有