怎么查看网站访问速度,百度云怎么做网站,深圳注册公司需要哪些材料和流程,开发公司安全工作总结汇报1.1 什么是Hadoop
分布式计算平台
优点#xff1a;
高可靠性
高扩展性
高效性 在各节点之间动态地移动数据#xff0c;保证各个节点的动态平衡
高容错性 数据多副本#xff1b;重新启动失败任务 Hadoop应用#xff1a;
Yahoo 广告系统Web搜索研究
Facebook 数据分…
1.1 什么是Hadoop
分布式计算平台
优点
高可靠性
高扩展性
高效性 在各节点之间动态地移动数据保证各个节点的动态平衡
高容错性 数据多副本重新启动失败任务 Hadoop应用
Yahoo 广告系统Web搜索研究
Facebook 数据分析 机器学习
百度 搜索日志分析 网页数据挖掘
淘宝 存储并处理电子商务交易的相关数据
中国移动研究院对数据进行分析并对外提供服务 1.2 Hadoop项目及其结构 Pig Chukwa Hive Hbase MapReduce HDFS ZooKeeper Common Avro Common
为Hadoop其他子项目提供支持的常用工具
主要包括FileSystem、RPC和串行化库
Avro
是用于数据序列化的系统
提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、RPC、简单的动态语言集成功能
依赖于模式scheme数据的读写是在模式下完成的这样可以减少写入数据的开销提高序列化的速度并缩减其大小
在RPC中Avro系统的客户端和服务器端通过握手协议进行模式的交换
MapReduce
一种编程模型用于大数据集1TB的并行运算
HDFS 分布式文件系统具有高容错性fault-tolerant
高吞吐率high-throughput
设计目标
检测和快速恢复硬件故障
流式数据访问 重点在于批量处理而不是用户交互式处理数据吞吐量而不是数据访问的反应速度
简化一致模型一次写入多次读取
通信协议
Client和NameNode--Client Protocol
NameNode和DataNode--DataNode Protocol
Chukwa
开源的数据收集系统监控和分析大型分布式系统的数据
在HDFS和MapReduce框架之上搭建
显示、监视和分析数据结果以便更好的利用所收集的结果
Hive
建立在Hadoop之上的数据仓库
MapReduce编程模型中也可通过Hive QL查询数据
Hbase
分布式的、面向列的开源数据库该技术来源于Google——Bigtable
适合非结构化数据存储的数据库
基于列模式一个数据行拥有一个可选择的键和任意数量的列
Pig
对大型数据集进行分析、评估的平台
突出优势它的结构能经受住高并行化的检验
底层由一个编译器组成运行时会产生一些MapReduce程序序列
ZooKeeper
为分布式应用设计的开源协调服务
提供同步、配置管理、分组、命名服务减少分布式应用程序所承担的协调任务
目录树结构
J ava编写支持Java C Sqoop:
为高效传输批量数据而设计的一种工具其用于Apache Hadoop和结构化数据库如关系型数据库之间的数据传输 Flume:
一种分布式的、可靠的、用于高效搜集、汇总、移动大量日志数据的服务。 Mahout:
一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集实现了多种MapReduce模式的数据挖掘算法。 Spark:
一个开源的数据分析集群计算框架建立于HDFS之上用于构建大规模、低延时的数据分析应用采用Scala语言开发 Storm:
分布式的、容错的实时计算系统属于流处理平台多用于实时计算并更新数据库
也可被用于连续计算continuous computation对数据流做连续查询在计算时将结果以流的形式输出给用户 Shark:
即Hive on Spark为Spark打造的数据仓库系统兼容HQL Phoenix:
构建在HBase之上的SQL中间层Java编写
Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan并编排执行以生成标准的JDBC结果集。
直接使用HBase API、协同处理器与自定义过滤器
对简单查询来说是毫秒
对百万级别的行来说是秒 Tez:
基于YARN之上的DAGDirected Acyclic Graph就算框架
把MapReduce拆分成若干子过程同时可以把多个MapReduce任务组合成一个较大的DAG任务减少了MapReduce中间过程文件的存储
合理组合其子过程减少任务的运行时间 Ambari:
一个供应、管理和监视Hadoop集群的开源框架
1.3 Hadoop体系结构
两大核心HDFS MapReduce
通过HDFS实现分布式存储的底层支持
通过MapReduce实现分布式并行任务处理的程序支持 HDFS:
主从结构
NameNode管理文件系统的命名空间和客户端对文件的访问操作
DataNode管理存储的数据 MapReduce
JobTracker调度一个作业的所有任务
TaskTracker负责主节点指派的任务
JobTracker接收到提交作业和其配置信息后将配置信息等分发给从节点同时调度任务并监控TaskTracker的执行。 1.4 Hadoop与分布式开发
Hadoop上并行应用程序的开发是基于MapReduce编程模型的
MapReduce库的用户用两个函数来表达这个计算Map和Reduce
Map函数接收一个输入的key/value对然后产生一个中间key/value对的集合
把具有相同key值得value集合在一起然后传递给Reduce函数。
Reduce函数接收key和相关的value集合
每次调用Reduce函数只产生0或1个输出的value值。
MapReduce计算模型非常适合在大量计算机组成的大规模集群上并行运行。 原理
数据分布存储
分布式并行计算DataNode既是数据存储结点也是计算结点
本地计算移动计算比移动数据更经济
任务粒度Block M个Map任务分布于N台计算机上并行运行Reduce任务数由用户指定
数据合并Combine在分割之前将中间结果有相同key的value合并
数据分割Partition把Map任务的中间结果按key划分为R份——reduce任务数
ReduceMap任务的中间结果在执行完Combine、Partition之后以文件形式存储于本地磁盘中间结果的位置将通知JobTrackerJobTracker再通知Reduce任务到哪取中间结果。
任务管道有R个Reduce任务就有R个最终结果很多情况下它们无需合并而是作为另一个计算任务的输入这也就形成了任务管道。 1.5 Hadoop计算模型——MapReduce
将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数Map和Reduce。
一个Job通常把输入的数据集切分为若干独立的数据块由Map任务并行处理。
框架对Map的输出进行排序然后把结果输入给Reduce任务。
计算结点和存储结点在一起。 1.6 Hadoop数据管理
分布式文件系统 HDFS
分布式数据库 HBase
数据仓库工具 Hive HDFS的数据管理
整个集群的单一命名空间
数据一致性一次写入多次读取
文件分割成多个文件块每个文件块被分配存储到数据结点上根据配置由复制文件块保证数据安全 三个角色NameNodeDataNodeClient
NameNode元数据信息路径副本数分块块所在的结点 文件写入
1.Client向NameNode发起文件写入请求
2.NameNode根据文件大小和文件块配置情况返回给Client所管理的DataNode的信息
3.Client将文件划分为多个Block根据DataNode的地址信息按顺序将其写到每一个DataNode中。 文件读取
1.Client向NameNode发起文件读取的请求
2.NameNode返回文件存储的DataNode信息
3.Client从DataNode读取文件。 文件块复制
1.NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效
2.通知DataNode相互复制Block
3.DataNode开始直接相互复制。 文件块的位置三个副本本机架2个另一机架1个
心跳检测用心跳检测DataNode的健康状况
数据复制场景为DataNode宕机、需平衡DataNode的存储利用率和平衡DataNode数据交互压力等情况可使用HDFS的balancer命令配置threshold来平衡每一个DataNode的磁盘利用率。
数据校验CRC32 写入校验信息读入时先校验后读入
管道性写入写入文件到DataNode上时首先读取一个Block然后将其写到一个DataNode上接着由第一个DataNode将其传递到备份的DataNode上直到所有备份完成后客户端才开始写下一个block。
安全模式启动时进入/命令进入。数据不允许修改和删除。主要是为了在系统启动时检查各个DataNode上数据块的有效性同时根据策略进行必要的复制或删除部分数据块。 Hbase的数据管理
类似于BigTable的分布式数据库
一个稀疏的、长期存储的、多维度的排序映射表这张表的索引是行关键字、列关键字和时间戳
表中的数据都是字符串
每一行都有一个可排序的主键和任意多的列
由于列是稀疏存储的所以同一张表中的每一行数据都可以有截然不同的列
列名字的格式是familylabel
每一张表有一个family集合这个集合是固定不变的相当于表结构
label值相对于每一行来说都是可以改变的
Hbase把同一family中的数据存储在同一目录下
Hbase的写操作是锁行的每一行是一个原子元素可以加锁
时间戳每次生成一个新的版本都会跟一个时间戳可以设置保留几个版本
客户端可以获得最近版本也可获得全部版本 三大组成部分
HBaseMasterHBase主服务器
ZooKeeper
领导选举法Leader Election Algorithm
主服务器承担初始化集群的任务。当主服务器第一次启动时会试图从HDFS获取根或根域目录如果获取失败则创建根或根域目录以及第一个元域目录。
下次启动时主服务器可获得集群和集群中所有域的信息。
负责域的分配、域服务器运行状态的监视、表格管理
HRegionServerHbase域服务器
服务于主服务器分配的域、处理客户端的读写请求、本地缓冲回写、本地数据压缩、分割域
每个域只能由一台域服务器来提供服务
当其开始服务于某个域时它会从HDFS文件系统中读取该域的日志和所有存储文件
同时管理操作HDFS文件的持久性存储工作
客户端与主服务器通信获取域和域服务器列表信息后就可以直接向域服务器发送域读写请求来完成操作。
HBase Client
客户端与Hbase主机交换消息以查找根域的位置这是二者的唯一交流
定位根域后客户端获取元域信息元域信息中包含所需用户域的域服务器地址
客户端再连接元域所在的域服务器获得用户域所在的域服务器地址
定位用户域服务器后发出读写请求
用户域的地址将缓存在客户端中 Hive的数据管理
建立在Hadoop上的数据仓库基础架构提供一系列工具进行数据的提取、转化、加载
是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制
Hive QL
1.元数据存储
Hive将元数据存储在RDBMS中有三种模式可以连接到数据库
a.Single User Mode:此模式连接到一个In-Memory的数据库Derby一般用于Unit Test。
b.Multi User Mode:通过网络连接
c.Remote Server Mode:用于非Java客户端访问元数据库在服务器端启动一个MetaStoreServer客户端利用Thrift协议通过MetaStoreServer来访问元数据库 2.数据存储
无专门存储格式无索引
只需明确列分隔符、行分隔符
Hive中所有数据都存储在HDFS中
4种数据模型Table、 External Table、 Partition、 Bucket 3.数据交换
用户接口客户端、Web界面、数据库接口
元数据存储通常存储在关系数据库中如MySQL、Derby等
解释器、编译器、优化器、执行器
HadoopHDFS进行存储、MapReduce进行计算 元数据包括表的名字、表的列、表的分区、表分区的属性、表的属性外表、表的数据所在目录。
生成的查询计划存储在HDFS中随后由MapReduce调用执行
带*的查询不会生成MapReduce任务 1.7 Hadoop集群安全策略
用户权限管理
用户分组管理为更高层的HDFS访问、服务访问、Job提交和配置Job等操作提供认证和控制基础。
Hadoop上的用户和用户组由用户自己指定如果未指定Hadoop会调用Linux的whoami命令获取当前Linux系统的用户名和用户组将其保存在Job的user.name和group.name两个属性中。
用户提交Job的后续认证和授权以及集群服务的访问都将基于此用户名和用户组的权限及认证信息进行。 HDFS安全策略
用户和HDFS服务之间的交互主要有两种情况
用户机和NameNode之间的RPC交互获取待通信的DataNode位置
客户机和DataNode交互传输数据块 MapReduce安全策略
主要涉及Job提交、Task和Shuffle三个方面