IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 376页8万字大数据Hadoop存储与分析处理平台建设方案 -> 正文阅读

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

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。

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:15:32  更:2022-09-25 23:16:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:05:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码