hadoop基础知识总结
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。具有可靠、高效、可伸缩的特点。
Hadoop生态圈:
MapReduce:分布式计算框架
Yarn:集群资源管理和调度平台
Hdfs:分布式文件系统
Hive:数据仓库
HBase:实时分布式数据库
Flume:日志收集工具
Sqoop:数据库ETL工具
Zookeeper:分布式协作服务
Mahout:数据挖掘库
Hadoop由4个主要构成部分:
1) 基础核心:提供基础的通用的功能,一组分布式文件系统和通用I/O的组件与接口(序列化、Java RPC和持久化数据结构)
2) HDFS:分布式存储,高容错性适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序,HDFS块的默认大小64 MB
3) MapReduce:分布式计算
4) YARN:资源分配(多个任务是排队执行还是同时执行)
HDFS由3种主要的节点构成:
1) NameNode :用来存储数据的存放位置等元数据(不存放数据)(如文件名、文件大小、文件所在目录、所有者名称、读写执行权限等)
2) DataNode :只用来存储数据
3) SecondaryNameNode :辅助NameNode运行,将NameNode产生的元数据持久化到磁盘上,与NameNode进行通信,以便定期地保存HDFS元数据的 快照,如果NameNode发生问题,SecondaryNameNode可以及时地作为备用NameNode使用。HDFS目前使用zookeeper来确保仅有一个活动namenode。
HDFS适用于高吞吐量,一次写入,多次读取的应用场景,不适合大量小文件的存储,低时间延迟,多用户读写操作的场景。
HDFS 文件读取
1. 首先创建RPC连接;
2. 从namenode 中获取文件数据块的位置;
3. 客户端与datanode之间建立socket链接,选择与客户端最近的datanode节点;
4. 下载文件的数据块
HDFS 文件写入
1. 创建RPC连接;
2. 创建文件元数据;
3. 为文件分配块;
4. 客户端与DataNode,DataNode之间建立socket(4,5,6),并且几者之间socket均建立成功才算成功,才能进行数据块的写入操作;
5. 每个DataNode接收完某个块会向NameNode进行报告;
6. 如果一个文件的每个块的三个副本中,只要有一个副本报告给NameNode,客户端发送消息给NameNode确认文件完成;
MapReduce 并行计算框架
主从结构,一个JobTracker和多个TaskTracker
JobTracker:1作业调度2分配任务、监控任务执行进度3监控TaskTracker的状态
TaskTracker:1、执行任务 2、汇报任务状态
1) MapReduce是由一个单独运行在主节点上的JobTacker和运行在每个集群从节点上的TaskTracker共同组成的。JobTacker负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。总结点监控他们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。
2) MapReduce模型原理是利用一个输入的key/value对集合来产生一个输出的key/value队集合,使用Map和Reduce函数来计算
3) MapReduce将大数据分解为成百上千小数据集,每个数据集分别由集群中的一个节点(一般是一台计算机)并行处理生成中间结果,然后这些中间结果又由大量的节点合并,形成最终结果。
hadoop集群三种模式
本地模式(单机模式),伪分布模式,全分布式模式
单机模式:没有守护进程,所有东西运行在jvm上,使用的是本地文件系统, 没有dfs,使用开发过程中运行mapreduce程序,是使用最少的一种模式
伪分布模式:在一台服务器上模拟集群安装环境, 即多个进程运行在一个服务器上;使用与开发和测试环境,所有 守护进程在同一台机子上
全分布式模式:N台主机组成一个Hadoop集群,Hadoop守护进程运行在每一台主机上;分布式模式中,主节点和从节点会分开
网络连接方式
host-only:宿主机(windows)与客户机(虚拟机中的客户机)单独组网,与主机当前的网络是隔离的
bridge:宿主机和客户机网络是连接的,在同一个局域网中,可以相互访问
NAT(network address translation): 虚拟机不占用主机所在局域网ip,通过使用主机的NAT功能访问区域网和互联网,此种方式虚拟机不用设置静态ip,只需要使用DHCP功能自动获取ip即可(绝大多数上网使用此种方式)