包括哪些模块:
Hadoop Common: Hadoop的一些模块工具
Hadoop分布式文件系统(HDFS):一种分布式文件系统,它可以提供能应用程序 数据的高吞吐量的访问
Hadoop YARN 作业调度和集群资源管理的框架
Hadoop MapReduce 一种用于处理大型数据集的基于YARN的系统(分布式计算框架)
上述的每个模块都有自己独立的功能,而模块之间又有一定的联系
雏形开始于2002年的Apache的Nutch,Nutch由Java开发的一个搜索引擎,它包含了所以搜索引擎所需要的全部工具,包括:全文搜索,Web爬虫.
Nutch的目的是设计一个大型的全网络的搜索引擎,包括:抓取.索引,查询等功能
随着网络的发展碰到一个瓶颈—->”如何解决十亿网页存储和索引问题?”
2003年谷歌发表了一篇技术学术论文谷歌文件系统(GFS),google公司为了存储海量搜索数据而设计的专用文件系统
2004年Nutch的创始人 Doug Cutting基于GFS的论文,实现了分布式文件存储系统HDFS
ps:2003-2004年 Google公布了部分GFS和MapReduce的思想细节,以此为基础,Cutting等人用了2年业余时间实现了DFS和MapReduce机制的一个微缩版本的Nutch
2004年 Google又发表了一个技术学术论文—->MapReduce,MapReduce是一种编程模型,用于大规模的数据集(大于1TB)的处理和并行计算
2005年 Cutting 基于MapReduce在Nutch搜索引擎开发了该功能
云计算是分布式计算,并行计算,网络计算,多核计算,网络存储,虚拟化,负载均衡等传统计算机和互联网技术融合的一个产物
现阶段云计算的底层两大技术支撑 “虚拟化”和当前”大数据技术”
而HADOOP则是云计算平台服务的解决方案
ps:云计算分为三大类
IaaS(基础设施服务) PaaS(平台即服务) SaaS(软件即服务)
1.大型网站web服务器日志分析:一个大型网站web服务器就能每5分钟就收录的点击量高达800GB左右,峰值点击可以达到每秒900万次,每隔5分钟将数据再装载在内存中,高速计算网站的热点url,并将这些信息反馈给前端缓存服务器,以提高缓存命中率
2.运行商流量分析:每天的流量数据在2TB-5TB之间拷贝到HDFS上,通过交互式分析引擎模板,能够运行几百个复杂的数据清洗(ETL)和报表业务,总时间比类似的硬件配置的小集群要快2-3倍
3.程序交通卡口视频监控信息实施分析: 基于流式进行全省范围的交通卡口的视频监控的信息进行实时分析,警告和统计,可以对全省范围内未年检和套牌车辆进行再300毫秒左右就可以得出结论并实时进行警告
重要组件:
1.HDFS: 分布式文件系统
2.MapReduce: 分布式计算框架
3.HIVE: 基于大数据技术的SQL数据仓库工具(文件系统+运算框架)
4.HBASE: 基于HADOOP的分布式海量数据库(NOSQL非关系型数据库,列式存储)
5.ZOOKEEPER: 分布式系统协调服务基础组件
6.Oozie: 工作流调度框架
7. Sqoop: 数据导入导出工具
8. Flume: 日志数据采集框架
9. Mahout: 基于MapReduce/spark/flink等分布式框架 的机器学习算法库
一.分布式软件系统
分布式软件系统是由一组通过网络进行通信为了完成共同的任务而协调工作的计算机节点所组成的系统
分布式系统的出现为了用廉价,普通的机器完成单个计算机无法完成的计算,存储等任务,其目的就是充分利用计算机来处理更多的任务
二.常用的分布式软件系统的案例
1.web服务器集群: 单台服务器的性能是有限的,支持连接并发数是有上限的,因此必须采用多台服务器的方式才能提高并发数和计算机计算的速度
每台web服务器都会分配一个域名,肯定是同一个域名的进入的是同一个入口
百度有上千台web服务器,此时我们使用www.baidu.com一个入口进行访问,至于那台服务器提供服务,具体的就需要底层实现一个技术(负载均衡)
web日志数据挖掘(数学够好–>R语言–>完成数据建模)
案例分析:
网站点击流量日志数据挖掘系统
需求: web点击日志,包含网站运行的重要信息,通过日志的分析,我们可以知道网站的访问量,那个网页访问人数最多,那个网页最有价值,广告在转换率,访客来源信息,
**访客的终端信息:**
数据来源: 获取方式,在页面预处理一段js程序,为了页面想要监听的标签绑定时间,只要用户点击或触发,就可以达到用户的信息,并产生日志文件
**数据处理流程;**
1.数据采集: 定制开发程序或使用Flume
2.数据预处理定制开发MapReduce程序运行在Hadoop计算
3.数据仓库计算:基于Hadoop之上使用hive技术完成数仓
数仓终会完成数据清洗ETL
4.数据导出:需要使用sqoop将数据导出
5.数据可视化:就由web人员完成
ps:可以使用Oozie工具来辅助开发
1.Hadoop是java开发的需要在服务器上安装相应的JDK
ps:Linux默认自带jdk—->openJDK—>Hadoop千万不要使用这个
2.将当前Hadoop安装包上传到服务器端Hadoop版本是2.x版本—>2.7.1
ps:实际开发中如若需要其他安装包请去官网下载(看不懂英语的去弄个翻译软件)
3.进行解压到/opt/software文件下
4.hadoop对应目录
bin:Hadoop最近的管理脚本和使用脚本目录
etc: Hadoop配置文件所在目录
包core-site.xml yarn-site.xml
Ps: Hadoop 1.x版本是没有yarn-site.xml mapred-site.ml
Include: 对外提供的编程库文件(具体存在着静态和动态链接,这些文件都是C++定义的,通常适用于C++程序员编写MapReduce)
lib: 包含Hadoop对外提供的编程静态和动态库,与include目录中的文件一起使用
libexec:各种服务对应上的shell配置文件所在目录
sbin: hadoop管理脚本的目录,包括HDFS和YARN的各种启动服务
share: Hadoop各个模块编译后jar包所在目录
HDBS:
HDBS易于扩展的分布式文件系统,运行在大量普通廉价的机器上,提供容错机制,为大量用户提供性能不错的文件存取服务
1.自动读取的检测对应硬件错误
2.流式的访问数据
3.移动计算比移动数据本身更划算
4.简单一致性模型
5.构建平台可移植性好
优点:
1.高可靠性:Hadoop按位存储和处理数据的能力强
2.高扩展性: Hadoop实在可用的计算机集群中分配数据完成计算任务
3.高效性:Hadoop能够在节点之间动态的移动数据,并保证每个节点的动态平衡
4.高容错性: Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配
缺点:
1.不适合低延迟访问
2.无法存储大量小文件
3.不支持多用户写入即任意修改文件
分而治之,将大文件,大批量文件,分布式的存放到服务器上,以便用于采取分而治之的方式对海量数据进行计算分析
为各类分布式计算框架提供存储数据和读取数据的服务
HDFS是一个文件系统,通过统一的命名空间,来定位文件
ps:HDFS和Linux文件系统很相似—>目录树接口
它是分布式的(雨露均沾) 由很多服务器联合起来,每个服务器在集群中都有各自的任务(角色)
1.HDFS文件在物理上是分块存储的(block),可以通过参数(dfs.blocksize)来设置,默认大小Hadoop2.x版本中默认大小128M, Hadoop1.x版本既是64M
2.HDFS文件系统会给客户端提供一个统一的抽象目录树,通过客户端对应路径下的文件进行访问
3.目录结构及文件的分块信息(元数据)都有”NameNode”节点承担
NameNode是HDF集合中的主节点,负责维护整个HDFS文件系统目录树,以及每一个路径锁对应的Block块信息(block是id以及所在DataNode服务器)
4.文件的各个block块存储的管理DataNode来节点管理
DataNode是HDFS集群的从节点,每一个Block可以在多个DataNode上存储多个副本(副本数量是可以设置的 dfs..replication)
HDFS是面向文件的,文件会线性切割成块(Block)
每个块都有一个偏移量offset(byte),偏移量是描述这个块是属于这个文件的哪一个部分
一个大文件会切分成很多块,每个块面临是这个文件的位置,也就是说每个块的第一个字节对应着这个大文件的某个位置的字节,这个字节就是偏移量
Block分散存储到集群节点中
单一文件block的大小是一致的,也就是说一个大的文件,定义的每个块的大小是固定的,所有切出来的文件大小也是固定的,但文件最后剩余大小和块的大小不一致,n那么会按照块的大小占位,实际存储剩余文件的大小,也就是说在内存中开辟的空间是实际文件的大小
Block可以设置的副本数,副本分散在不同的节点中,副本数不要超过节点数的数量
副本相当于一个备份(copy),HDFS默认副本数是3,副本的作用是保证文件丢失的情况下,可以在其他节点中得到同一个内容,所以绝对不能出现副本和块出现在用一个节点中.
文件上传的时候可以设置Block块的大小和副本的数量,已经上传的Block的副本数也可以调整,但是块的大小是不变的,只支持一次写入,但是可以多次读取,若想追加数据只能在最后一个节点中添加
作业
1.熟练搭建hadoop单机版本JDK-->/opt/software
2.移动计算和移动数据
3.什么是NameNode作用,什么DataNode作用 SecondaryName作用
什么是fsimago 和edits log?
4.HDFS读写流程
明天-->伪分布式
完全分布式-->1.x版本-->yarn-->2.x-->HA高可用 -->ZooKeeper-->yarn -->真正的完全分布式