第一章 hadoop概论
1.1 课程体系介绍
大数据概念,巨量数据集合,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
1.2 Hadoop产生的历史(黄色小象)
2002年 Nutch项目开始运行
2003年 谷歌发表GFS(Google文件存储系统)论文
2004年 Doug根据GFS设计了NDFS(Nutch分布式文件系统)
2005年 Nutch移植到新的框架,Hadoop早期版本在20个节点上运行
2006年1月 Doug加盟雅虎(Doug Cutting是Lucene、Nutch 、Hadoop等项目的发起人)
2006年2月 ApacheHadoop项目启动
2008年4月 Hadoop赢得世界1TB数据排序冠军
2013年11月 Hadoop技术峰会召开,标志Hadoop进入2.0时代
1.3 Hadoop基础概念
Hadoop是什么?开源的分布式存储+分布式计算平台
Hadoop组成 ,两个核心部分:
HDFS—分布式文件系统,存储海量数据
MapReduce—并行处理框架,实现任务分解和调度
Hadoop可以做什么 搭建大型数据仓库,PB级数据的存储、处理、分析、统计等业务
Hadoop的优势
1、扩展性,硬件的扩展实现容量无限提升,性能的无限提升
2、低成本,不依赖于高端仪器来堆叠系统 保证可靠性
Hadoop生态工具
HIVE—SQL语句
HBASE—
ZooKeeper—监控节点状态
第二章 分布式文件系统HDFS
2.1 HDFS的体系结构
设计目标
自动检测处理硬件错误
流式访问数据
转移计算比移动数据更划算(减少数据传输,存储数据的节点负责它的数据运算)
简单一致性模型(一次写入多次读取,数据不会修改)
异构平台的可移植性
三个基本概念
块(Block)
NameNode(主节点)
DataNode(数据节点)
数据块:
HDFS的文件被分成块进行存储
HDFS块的默认大小64MB
块是文件存储处理的逻辑单元
HDFS中的两类节点
NamdNode是管理节点,存放元数据
①文件与数据块的映射表
②数据块与数据节点的映射表
DataNode是HDFS的工作节点,存放真正的数据块
2.2 HDFS的主要特点
HDFS的数据管理策略,多份冗余
冗余机制
数据一致性保证(心跳协议)
主节点备份二级NameNode(备份无请求)
HDFS文件操作流程
读取文件步骤
①客户端向NameNode发送一个处理请求(客户端可能是一个Java程序也可能是一个命令行操作,将文件名路径告诉NameNode)
②NameNode查询元数据后将结果返回给客户端(客户端就会知道文件包含哪些数据块,要去哪些DataNode上获取)
③在DataNode上获取数据
写入文件步骤
①把文件拆分成数据块,再通知NameNode
②查找可用的数据块返回给客户端
③客户端写入DataNode
④节点复制 复制到其他两个DataNode上
⑤DataNode通知NameData更新了数据
HDFS特点
①数据冗余、硬件容错
②流式的数据访问(写一次读多次)
③存储大文件
适用性和局限性
①适合数据批量写入,吞吐量高
②不适合交互式应用,低延迟很难满足
③适合一次写入多次读取,顺序读写
④不支持多用户并发写相同文件
2.3 的文件读写操作
HDFS的命令行操作
HDFS提供了shell的操作接口
操作命令与Linux相似
格式为:hadoop fs -<命令><目标> (目录的路径或者文件)
例如:hadoop fs -ls /user(用来查看文件系统中的/user下的文件)
HDFS常用命令(在终端模拟器中,clear清除屏幕)
①查看hdfs系统版本
hdfs version
②查看hdfs系统状态
hdfs dfsadmin -report
③查看目录及文件
hadoop fs -ls /(查看具体目录hadoop fs -ls /user)
④创建及删除目录
hadoop fs -mkdir /input
hadoop fs -rm -r /input(删除目录要加-r,直接删除文件用-rm即可,都要注意“空格”)
⑤上传及下载文件
hadoop fs -put <本地文件><远端目录>(hadoop fs -put text.txt/input/)
hadoop fs -get <本地目录><远端文件>(hadoop fs -get /input/text.txt)
文件重命名hadoop fs –mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)
⑥查看文件件内容
hadoop fs -cat /input/text.txt
3.1 MapReduce的原理
分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)
体系结构
分布式编程架构
以数据为中心,更看重吞吐率
分而治之的思想
Map将一个任务分解成多个子任务
Reduce将多个子任务的计算结果汇总
图书清点案例
3.3 MapReduce运行流程
相关概念
Job&Task Job—任务、作业 -JobTracker
Task—Job被分为多个Task,分为MapTask和ReduceTask -TaskTracker
JobTracker的角色①作业调度②分配任务、监控任务执行进度③监控TaskTracker的状态
TaskTracker的角色①执行任务②汇报任务状态
MapReduce的容错机制①重复执行(默认情况为4次)②推测执行(所有map任务完成后再执行reduce任务)
MapReduce体系结构
MapReduce作业执行过程
3.3 MapReduce案例
WordCount单词计数—计算文件中每个单词出现的次数,对最终输出结果进行排序
map过程将文件切分成单词,将词作为key,单词的出现次数作为value,得到key-value输出对
reduce阶段 对map阶段产生的中间值进行归约合并
map过程
reduce过程(哈希)