[hadoop] 一些基础概念
一、云的概念
1、云计算的概念
随时
随地
使用任何设备
获得任何服务
2、趋势
)资料开始回归集中处理(存储大量资料)
随时存取
降低遗失风险
减少传输成本
促进团队协作
)网页变为预设开发平台(网页开放性)
网页是开放标准
浏览器的跨平台特性
web application 的普遍性
)高速计算
平行运算(parallel computing)
分散运算(distribute computing)
多核心程序设计
处理大资料的技能
3、云计算的关键特性
)超大规模
)高可靠度
)高扩充性
)虚拟化
)成本低
)高通用性
)使用者付费
二、Hadoop
1、Hadoop是什么?
Hadoop是一套由apache 贡献的开源软件平台。
用来让开发者轻易的编写和运行处理海量数据的应用
)基于Java开发
)是apache的 顶级 开源 项目
)全世界有上千个节点
)petabyte级别的资料量
2、特点
巨量 - 拥有存储和处理大量资料的能力
经济 - 在一般由PC所架构的集群环境内就可以使用
效率 - 手机用平行分散的档案处理机制以便得到快速的回应
可靠 - 当某节点发生错误,系统能即时自动的取得备份资料以及部署运算资源
3、Hadoop最核心的内容是什么?
)HDFS
存储空间的资源管理
从分布的多台机器上读取数据副本 )MapReduce
记忆体空间与行程分配
对副本数据进行拆分和整合
4、学习Hadoop必须掌握的关键术语
===================================
、Job 任务
、Task 工作
===================================
、JobTracker 任务分派者
、TaskTracker 工作执行者
、Client 发起任务的客户端
===================================
、Namenode 名称节点 (the master)
、Datenode 资料节点 (slaves)
===================================
、Namespace 名称空间
、Blocks 档案区块(64M)
、Replication 副本
、Metadata 属性资料
===================================
、Map - 资料拆解、构建Map对应
、Reduce - group by key - 构建无重复key的Map
===================================
5、重要的几组关系
)管理资料 - Namenode 和 Datanode Namenode - 控制欲极强
()Master - 只能有一个
()控制对象的读/写
()配置副本策略 - 多个副本的先后存放位置规则
()管理HDFS的Namespace 和 对Namespace做检查和记录 Datanode - 执行力极强
()Workers/Slave - 可以有多个
()执行读/写操作
()执行Namenode的副本策略 )分派程序 - Jobtracker 和 TaskTracker Jobtracker - 包工头
()Master - 只能有一个
()发起工作
()为某些TaskTrackers指派工作
()主要任务是 - 排程决策/工作分配/错误处理 TaskTracker - 工人
()Workers/Slave - 可以有多个
()执行 Map 与 Reduce 的工作
()管理存储、回复运算结果
6、每一层的主从关系
HDFS layer :Namenode作为唯一的至高无上的 Master 管理着 多个 Datanode slave
MapReduce layer :Jobtracker作为唯一的至高无上的 Master 管理着 多个 TaskTracker slave
7、永远要记住一点:
不管有多少个机柜M,每个机柜有多少台电脑N,每台电脑有多少虚拟机P,
Namenode 和 JobTracker 只有其中的某一个节点有,其他的(MNP-)个节点都只包含 Datanode 和 TaskTracker
8、Client说:虽然我不属于云端架构,你也不能忘了我哦~
Client 需要做两件事
)提交 Job 给 JobTracker TaskTracker执行一系列的操作后 取得Datanode 通过 Namenode的调配后,
)接收 Block 的 location
9、hadoop-2.6.0.tar.gz 的目录结构
bin 可执行命令 start-all.sh 、stop-all.sh 、hadoop等
conf 配置文件 hadoop-env.sh、 hadoop-site.xml、slaves等
docs api文档
contrib 拓展套件
lib 一些jar
src 源码
build 编译后的文档
logs 日志
三、HDFS
1、定义
HDFS (Hadoop Distributed File System)——基于 Hadoop 的 分布式文件管理系统
2、为何而生?
为数据采集!
为MapReduce准备易于分析的数据!
3、同类 - GFS - Google File System
GFS:一个【易于扩充】的【分布式】档案系统,目的是为了对【大量资料】进行分析。
它运作在【廉价】的【普通】硬件上,且可以提供【容错】功能,
因此,可以为【大量用户】提供【总体性能】较好的服务。
4、设计目标
)良好的硬件错误容错和自动恢复能力
)串流式的资料存取 - 批次处理 多于 用户交互处理 - 高Throughput(吞吐量) 大于 低 Latency 延迟
)大规模资料集 - 支持 (perabytes)千万亿字节 等级的磁盘空间 1千万亿字节 = 909.4947018(TB)
)一致性模型 - 一次写入 多次存取 - 简化一次性处理问题
)在地运算 - 相比于传统的取数据进行计算 HDFS 是移动到资料所在的位置进行计算 减少IO的时间
)良好的平台移植 - 即使硬件不同也可以移植和扩充
5、来自Namenode的召唤
主服务器如何取得所需的从服务器的数据块的副本?[如何把需要的基础数据找到并复制为副本元数据供MapReduce 计算]
首先明确一点:
Namenode 只有一个 是master
Datanode 可以有多个 是存放数据的多个数据节点,这些节点里的数据可能是重复的 ()定义 Datanode(slaves) 包含的 数据块
Datanode_1 拥有 DataBlock_1 DataBlock_2
Datanode_2 拥有 DataBlock_2
Datanode_3 拥有 DataBlock_1 DataBlock_4
Datanode_4 拥有 DataBlock_2 DataBlock_5
Datanode_5 拥有 DataBlock_3 DataBlock_5 ()现在我们需要找到这两个档案路径
name:/users/yeqing/myFile
name:/users/yeqing/myFile/someData.gzip ()Client 去 执行 I/O 操作后 从上面五个数据节点中找到了包含有这两个档案的数据块 并复制出副本 作为元数据
name:/users/yeqing/myFile - copies:,blocks:{DataBlock_1,DataBlock_3}
name:/users/yeqing/myFile/someData.gzip - copies:,blocks:{DataBlock_2,DataBlock_4,DataBlock_5}
6、Namenode,你召唤我干嘛
Namenode 拿到了副本元数据块后做了什么操作
明确一点:Namenode 为一个文件档案路径获取一个或多个备份,是为了提高系统的可靠性和读取的速率
可靠性:当某个节点失效的时候,读取副本用以维持正常的运转
高效率:多个副本的存在可以分散读取的流量,达到负载的均衡(但是却增加了写入时的效能瓶颈,因为要写入多个副本) ()Namenode 已经获取到file1的副本块为 {DataBlock_1,DataBlock_3}
file1 {DataBlock_1,DataBlock_3} ()此时,jobTracker 就会 分配给 Tasktracker 任务
根据file1 在节点上的存在关系
去找到 DataBlock_1 和 DataBlock_3 封装成元数据 供MapReduce操作了
7 、一些HDFS机制的实现思路
()可靠性机制
常见的三种错误情况:
资料破损
网络或资料节点失效
名称失效 解决方法:
资料破损 - 【副本】用副本取代出错资料
网络或资料节点失效 - 【Datanode】定期向Namenode 更新 Datanode
名称失效 - 【Namenode】记录日志、多份存储,当Namecode坏点可以根据日志手动复原 ()副本备份机制
第1个副本备份位置:同Client的电脑上
第2个副本备份位置:不同机柜的某台电脑上
第3个副本备份位置:第2个副本备份位置的机柜 的 另一台电脑上
More备份位置: 随机选取 ()一致性机制
文本档案一致性:
新增、删除、读取档案都是Namenode负责 空间和效能一致性:
以 64M(Block)为单位
在HDFS上的档文本档案大小可能大于一张磁碟的容量
大区块可以提高存取效率
区块均匀分布各节点(电脑)用来分散读取数据
四、MapReduce
1、简介
MapReduce is a framework for computing certain kinds of distribution problems using a large number of computers or nodes.collectively referred to as a cluster.
MapReduce 是使用 【大量计算机或者节点】 来【计算】 某些【分布式】类型问题的 【架构】统称为集群
说白了:input date 经过 MapReduce 的计算和整合 产出 计算整理后的 output data。所以 MapReduce 就是用来分析整合数个HDFS block数据的
2、核心:divide and conquer (分布解决)
3、MapDeduce 运作流程:
)JobTracker 和 Namenode 取得需要运算的HDFS blocks 作为运算元数据(采集数据)【input HDSF】
)JobTracker 选择数个 TaskTracker 来作Map运算 产生一些计算后的中间文档(数据计算)【Map】
)JobTracker 将这些中间文档整合排序后,复制到需要的 TaskTracker 去(数据整理)
)JobTracker 派遣 TaskTracker 作 reduce 操作 (数据整合)【Reduce】
)reduce 完成后 通知 JobTracker 和 Namenode 已经产生 output (数据产出)【output HDSF】
4、Map和Reduce运算到底做了什么
)元数据分解为可重复的键值对:Map 将 某个 Row Data 映射成(中间文档)
key1 - val_1
key1 - val_2
key2 - val_3
key1 - val_4
key3 - val_5
key4 - val_6
key4 - val_7
.... - ...
作为Reduce的处理数据 )键值对数据整合成key不重复的键值对:Reduce 用这些映射好的Map数据做整合(group by key)
key1 - val_1 val_2 val_4 ...
key2 - val_3 ...
key3 - val_5 ...
key4 - val_6 val_7 ...
... - ...
五、拓展概念
1、hadoop机器感知
通过什么方式能够告知hadoop namenode哪些slaves机器属于哪个rack(机架)?
默认情况下,hadoop的机架感知是没有被启用的。所以,在通常情况下,hadoop集群的HDFS在选机器的时候,是随机选择的。
开启机器感知配置,能降低rack之间的网络流量。 机架感知是一种计算不同计算节点(TT)的距离的技术,用以在任务调度过程中尽量减少网络带宽资源的消耗。
这里用尽量,想表达的是当一个TT申请不到本地化任务时,JT会尽量调度一个机架的任务给他,因为不同机架的网络带宽资源比同一个机架的网络带宽资源更可贵。
当然,机架感知不仅仅用在MR中,同样还用在HDFS数据块备份过程中(第一个replica选择本节点【如果上传是DataNode】或者随机的一个DN(系统会尽量避免存储太满和太忙的节点),第二个节点选择于第一个节点不同机架的DN,第三个选择放在第二个DN同一个机架的另一个DN上)。
http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2843015.html
2、hadoop各版本官方文档地址
http://hadoop.apache.org/docs/
http://hadoop.apache.org/docs/r2.7.3/
3、数据仓库
作用:存储历史数据,进而对数据进行分析,只提供查询,不提供修改。
4、Hive
1、hive只是由facebook 开源提供的hadoop生态圈的一个数据仓库工具,它本身并不是数据仓库。使用Hive能把SQL语句转化为MapReduce程序,用以进行数据清洗,筛选,统计等相关的操作。 2、Hive实时性很低,不适合直接连接BI前端。hive需要和mysql等数据库配合使用。 3、Hive 的目标是做成数据仓库,所以它提供了SQL,提供了文件-表的映射关系,又由于Hive基于HDFS,所以不提供Update,因为HDFS本身就不支持。
4、如果用户只是需要完成大规模数据的分析这件事情,那么,你只要有一套hadoop环境 + 一个hive数据库,只要你懂SQL,你不必懂MapReduce程序如何编程、hadoop如何工作,你的SQL需求将自动被编译到整个集群中去进行分布式计算,以提高分析效率。
hive> load data local inpath 'wyp.txt' into table wyp;
hive> load data inpath '/home/wyp/add.txt' into table wyp;
5、YARN - Yet Another Resource Negotiator (新一代的资源管理器)
[hadoop] 一些基础概念的更多相关文章
- Hadoop基础概念介绍
基于YARN的配置信息, 参见: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ hadoop入门 - 基础概念 ...
- ELK&ElasticSearch5.1基础概念及配置文件详解【转】
1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...
- Hadoop框架基础(五)
** Hadoop框架基础(五) 已经部署了Hadoop的完全分布式集群,我们知道NameNode节点的正常运行对于整个HDFS系统来说非常重要,如果NameNode宕掉了,那么整个HDFS就要整段垮 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
- Jmeter基础之---jmeter基础概念
Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...
- hadoop rpc基础
第一部分: hadoop rpc基础 RPC,远程程序调用,分布式计算中C/S模型的一个应用实例. 同其他RPC框架一样,Hadoop分为四个部分: 序列化层:支持多种框架实现序列化与反序列化 函数调 ...
- 快速入门系列--WCF--01基础概念
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- 理解 angular2 基础概念和结构 ----angular2系列(二)
前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...
随机推荐
- Python开发【第五章】:Python常用模块
一.模块介绍: 1.模块定义 用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质上就是.py结尾python文件 分类:内置模块.开源模块.自定义模块 2.导入模块 本质:导 ...
- sql操作之修改记录值
mysql修改.删除数据记录 用update修改记录 UPDATE tbl_name SET 要更改的列 WHERE 要更新的记录 这里的 WHERE 子句是可选的,因此如果不指定的话,表中的每个记录 ...
- 使用Go开发web服务器
原文链接 Go(Golang.org)是在标准库中提供HTTP协议支持的系统语言,通过他可以快速简单的开发一个web服务器.同时,Go语言为开发者提供了很多便利.这本篇博客中我们将列出使用Go开发HT ...
- 学习 Linux,101: 使用基本 SQL 命令
概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操作 本教程将简要介绍您需要知道的与 LPI 102 考试相关的 SQL 概念. 回页首 数据库和 ...
- svg学习(五)ellipse
<ellipse> 标签 <ellipse> 标签可用来创建椭圆.椭圆与圆很相似.不同之处在于椭圆有不同的 x 和 y 半径,而圆的 x 和 y 半径是相同的. <?xm ...
- MySql 首记
1.连接数据: 格式是: -P 端口号 -h mysql主机名\ip -u root (用户) -p 2.显示数据库: show databases; 3.选择数据库: use databas ...
- SD卡读写遇到的一些函数
SD_SPI_ReadWriteByte(0XFF): 你的数据线写0xff,就是一直保持高,clk就有了8个,可以说只是发送的数据是0xff,这又不是SD的命令,但是它必须要靠控制器提供时钟才能工作 ...
- sdutoj 2623 The number of steps
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2623 The number of steps ...
- jQuery文字特效制作文字鼠标滑过多彩色变色显示
<!DOCTYPE html><head> <meta http-equiv="Content-Type" content="text/ht ...
- .net 直接输出远程文件到浏览器和下载文件保存到本机
利用了xmlhttp,实现代码比较简单具体实现如下: 首先bin文件引入,com->microsoft xml v3.0 具体代码如下: protected void Button1_Click ...