大数据技术特点;
五个主要技术特点:5V
Volume(大体量):即可从数百TB到数十数百PB、甚至EB规模。
Variety(多样性):即大数据包括各种格式和形态的数据。
Velocity(时效性):即很多大数据需要在一定的时间限度下得到及时处理。
Veracity(准确性):即处理的结果要保证一定的准确性。
Value(大价值):即大数据包含很多深度的价值,大数据分析挖掘和利用带来巨大的商业价值。
大数据生态系统:各个生态系统的功能,组件+功能;
MapReduce并行计算框架、分布式文件系统HDFS、分布式数据库管理系统HBase、公共服务模块Common、数据序列化系统Avro、分布式协调服务框架Zookeeper、分布式数据仓库处理工具Hive、数据流处理工具Pig、键值对数据库系统Cassandra、日志数据处理系统Chukwa、科学计算基础工具库Hama、数据分析挖掘工具库Mahout、关系数据交换工具Sqoop、日志数据收集工具Flume
启动/关闭Hadoop、HBase时进程顺序:
Namenode - Datanode - SecondaryNamenode - ResourceManage - NodeManage
MapReduce简介(P25-36),并行计算主要技术问题;MapReduce由来的特征和架构
启动/关闭Hadoop、HBase时进程顺序;可查看实验
实验一
启动:cd ~/hadoop sbin/start-all.sh
关闭hadoop守护进程:bin/stop-all.sh
格式化hadfs文件系统
Bin/hadoop namenode –format
启动hadoop环境:bin/start-all.sh
MapReduce的主要技术特征;从“外”横向扩展,而非向“上”纵向扩展;实效被认为是常态;把处理向数据迁移;顺序处理数据、避免随机访问数据;为应用开发者隐藏系统层细节;平滑无缝的可扩展性。
并行计算主要技术问题 P10
1.多处理器/多节点网络互连技术。
2.存储访问体系结构
3.分布式数据与文件管理
4.并行计算的任务划分和算法设计
5.并行计算设计模型和语言
6.并行计算软件框架设计和实施
7.数据访问和通信控制
8.可靠性与容错性技术
9.并行计算性能分析与评估
P32
数据块大小:文件中每个数据块默认在hadoop1.0中是64MB,在hadoop2.0中是128MB。
HDFS架构图;
P58
一个HDFS文件系统包括一个主控节点namenode和DataNode从节点,NameNode是一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求。
HDFS如何存储数据:
1.客户端请求上传文件
2.namenode检查路径是否存在
3.namenode响应可以上传
4.客户端请求上传第一个block
5.响应可以上传到datanode服务器
6.客户端请求上传block
7.返回一个socketOutputStream
8.从本地将数据写入输出流
记下:
NameNode保存了文件系统三种数据:1,命名空间,及整个分布式文件系统的目录结构,2,数据块与文件名的映射。3,每个数据库副本的位置信息,每一个数据块默认有3个副本。
每个DataNode实际上存储在每个节点的本地linux文件系统中。
在NameNode上可以执行文件操作,比如打开、关闭、重命名等;并且NameNode也负责向DataNode分配数据块并建立数据块和DataNode对应的关系。DataNode负责处理文件系统用户具体的读写请求,同时也可以处理NameNode对数据块的创建、删除副本的指令。
(3)block默认几个副本;3个副本
(4)节点垮掉系统会怎样:secondNameNode启动,备胎启动
(5)NameNode作用P58;
Namenode是一个主服务器,用来管理整个文件系统的命名空间和元数据,及处理来自外界的文件访问请求。
(6)P61安全模式,离开安全模式命令;
直接在bash输入指令脱离安全模式(推荐)在安全模式下输入指令:
hadoop dfsadmin -safemode leave,即可退出安全模式。
(7)P62心跳包有什么用;
由namenode定时发送给datanode,收到则回复。
为了保证NameNode和各个DataNode的联系,位于整个hdfs核心的NameNode,通过周期性活动检查DataNode的活性。心跳包是定时发送的,NameNode要把执行的命令也通过心跳包发送给DataNode,而DataNode受到心跳包,一方面回复NameNode,另外一方面开始了与用户或者应用数据传输。
(8)P67数据写入过程;
客户端写入数据过程,其中1、3、6由客户端发起
客户端首先要获取FileStream的一个实例,这里就是HDFS的实例,
①②客户端调用FileSystem实例的create方法,创建文件。NameNode通过检查,比如文件是否存在,客户端是否拥有创建权限等;通过检查之后,在NameNode添加文件信息。注意,因为此时文件没有数据,所以NameNode上也没有文件数据块信息。创建结束后,HDFS会返回一个输出流DFSDataOutputStream给客户端。
③客户端调用输出流DFSDataOutputStream的write方法向HDFS中对应的文件写入数据。数据首先会被分包,这些分包会写入一个输入流内部队列Data队列中,接收完整数据分包,输出流DFSDataOutputStream会向nameNode申请保存文件和副本数据块的若干个DataNode,这若个个DataNode会形成一个数据传输管道。
④DFSDataOutputStream会(根据网络拓扑结构排序)将数据传输给距离上最短的DataNode,这个DataNode接收到数据包之后会传递给下一个DataNode,数据在各DataNode之间通过管道流动,而不是全部由输出流分发,这样可以减少传输开销。
⑤因为DataNode位于不同机器上,数据需要通过网络发送,所以,为了保证所有的DataNode的数据都是准确的,接收到数据的DataNode要向发送者发送确认包(ACKPacket)。对于某个数据块,只有当DFSDataOutputStream收到了所有DataNode的正确ACK,才能确认传输结束。DFSDataOutputStream内部专门维护了一个等待ACK队列,这一队列保存已经进入管道传输数据、但是并未被完全确认的数据包。
不断③-⑤直到数据全部写完,客户端调用close关闭文件。
⑥客户端调用close方法,DFSDataOutputStream继续等待直到所有数据写入完毕并被确认,调用complete方法通知NameNode文件写入完成。
⑦NameNode接收到complete消息之后,等待相应数量的副本写入完毕后,告知客户端即可。
3、在传输过程中,如果发现某个DataNode失效(未联通,ACK超时),那么HDFS执行如下操作:
①关闭数据传输的管道
②将等待ACK队列中的数据放到Data队列的头部
③更新正常DataNode中所有数据块的版本;当失效的DataNode重启之后,之前的数据块会因为版本不对而被清除。
④在传输管道中删除失效DataNode,重新建立管道并发送数据包。
HDFS文件系统操作命令;P68
启动hdfs:进入NameNode对应节点的hadoop安装目录下,执行启动脚本,bin/start-dfs.sh
关闭脚本:stop-dfs.sh
文件操作命令:
Bin/hadoop dfs –caturi(文件路径)
-chgrp查看所属用户组
-chmod 查看权限
-count 查看目录数
-cp 复制文件 -ls查看目录 -mv 移动文件 -put 将单个源文件拷贝到目标文件系统中
-rm 删除文件 -test 判断文件信息 -text 将文件或者某些格式的非文本文件通过文本格式输出。
Hadoop系统的基本组成框架,P97图4-5,
Combiner、Partitioner工作原理;
Combiner,它在Mapper之后Reducer之前运行。Combiner是可选的,如果这个过程适合于你的作业,Combiner实例会在每一个运行map任务的节点上运行。Combiner会接收特定节点上的Mapper实例的输出作为输入,接着Combiner的输出会被发送到Reducer那里,而不是发送Mapper的输出。Combiner是一个“迷你reduce”过程,它只处理单台机器生成的数据(特别重要,作者在做一个矩阵乘法的时候,没有领会到这点,把它当成一个完全的reduce的输入数据来处理,结果出错。)。
partition是分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的。这里其实可以理解归类。
我们对于错综复杂的数据归类。比如在动物园里有牛羊鸡鸭鹅,他们都是混在一起的,但是到了晚上他们就各自牛回牛棚,羊回羊圈,鸡回鸡窝。partition的作用就是把这些数据归类。只不过在写程序的时候,mapreduce使用哈希HashPartitioner帮我们归类了。这个我们也可以自定义。
P103作用调度器;
现在使用的调度器:先进先出EIEO调度器,计算能力调度器,公平调度器
P106图4-10;hadoop mapreduce执行框架的组件和执行流程
关键字具体介绍。
HBase功能特点:
(1)列式存储
(2)表数据是系数的多维映射表,表中的数据通过一个行关键字、一个列关键字以及一个时间戳进行索引和查询定位,通过实践戳允许数据有多个版本。
(3)读写的严格一致性
(4)提供很高的数据读写速度,为写数据进行了特别的优化。
(5)良好的线性课扩展性。
(6)提供海量数据存储能力,可提供高大几百亿条数据记录存储能力。
(7)数据会自动分片,也可以由用户来控制分片。
(8)对于服务器故障,hbase有自动失效检测和恢复能力,保证数据不丢失。
HBase表设计
表行关键字;habse是一个分布式多维表,表中的数据通过一个行关键字row key和一个列族和列名以及一个时间戳进行索引和查询定位。
WAL优缺点;
WAL优点:以记录所有数据更新操作,保证数据的完整性
缺点:写入性能降低
Zookeeper作用;
(1)保证任何时候,集群只有一个和base master;
(2)实时监控region server的状态,将region server的上线和下线信息实时通知给hbase master.
(3)存储hbase目录表的寻址入口
(4)存储hbase的schema,包括有哪些表,每个表有哪些列族等各种元信息。
Hfile:存储的最小单位
Region:是分布式存储和负载均衡的最小单位。
有关RegionServer、Region、memStore等关系,可查看本节的ppt的图;
(1)表与外部表区别;
普通表:删除表时,该表的元数据及数据将被删除。
外部表:删除外部表时,仅删除其元数据,保存在外部HDFS文件目录中的数据不会被删除。
(2)分区与桶的适用场景;
分区:当只需要遍历某一个小范围内的数据或者一定条件下的数据时,它可以有效减小扫描数据的量。
分桶:分布式数据仓库hive的数据表时,为取样更高效,一般可以对表中的连续字段进行分桶操作。
(3)HQL语句;
1.创建表(两列,整型freq,字符型word,使用文本表达,数据域用分隔符’\t’)
create tablebiaoming (freq int,word string)row format delimited fields terminated by ‘\t’stored as textfile;
2.修改表
添加列
alter table 表名 add columns (new_col int);
改表名
alter table 原表名 rename to 新表名;
3.表分区操作
将/input/file1加载到logs表的分区2012-11-20的自分区China内
load data local inpath ‘input/file1’ into table logs partition (date’2012-11-20’,country=’China’);
4.删除表
drop table 表名;
5.创建和删除视图语句
创建:
create view [if not exists] 视图名 as
selete * from 表名1 join 表名2 on (表1.属性=表2.属性);
删除
drop view if exists 视图名;
6.查看数据表的描述
describe 表名;
7.加载数据语句
load data local inpath ‘input/file1’ [overwrite] into table logs
8.表插入数据
insert overwrite table biaoming1 select a.* from biaoming2 a;
9.查找总数
select count(*) from biaoming;
10.独立 UID 总数
select count(distinct(uid)) from sogou.sogou_ext_20111230;
11.查询搜索过”仙剑奇侠传“的 uid,并且次数大于 3
selectuid,count(*) as cnt from sogou.sogou_ext_20111230 where keyword='仙剑奇侠传' group by uid having cnt >3;