Hadoop学习
-
大数据简介
大数据是一个概念,也是一门技术,是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。
大数据包括了以Hadoop和Spark为代表的基础大数据框架,还包括实时数据处理,离线数据处理;数据分析,数据挖掘和用机器算法进行预测分析等技术。
-
hadoop基础
- Hadoop是一个开源的大数据框架
- Hadoop是一个分布式计算的解决方案
- Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算)
其核心如下:1)HDFS分布式文件系统(存储是大数据技术的基础);2)MapReduce编程模型(分布式计算是大数据应用的解决方案)
HDFS应用场景:普通的成百上千的机器;按TB甚至PB为单位的大量的数据;简单便捷的文件获取
-
Haddoop概念
-
数据块
数据块是抽象块而非整个文件作为存储单元;默认大小为64MB,一般设置为128MB,备份*3
-
NameNode
1)管理文件系统的命名空间,存放文件元数据; 2)维护着文件系统的所有文件和目录,文件与数据块的映射;3)记录每个文件中各个块所在数据节点的信息
-
DataNode
1)存储并检索数据块;2)向NameNode更新所存储块的列表
-
HDFS优缺点
优点:适合大文件存储,支持TB、PB级的数据存储,并有副本策略;可以构建在廉价的机器上,并有一定的容错和恢复机制;支持流式数据访问,一次写入,多次读取最高效。
缺点:不适合小量文件存储;不适合并发写入,不支持文件随机修改;不支持随机读等低延迟的访问方式。
-
-
HDFS写/读流程
-
写流程
1)客户端向NameNode发起写数据请求;2)分块写入DataNode节点,DataNode自动完成副本备份;3)DataNode向NameNode汇报存储完成,NameNode通知客户端
-
读流程
1)客户端向NameNode发起读数据请求;2)NameNode找出距离最近的DataNode节点信息;3)客户端从DataNode分块下载文件
-
-
常用HDFS Shell命令
- 类Linux系统:ls、cat、mkdir、rm、chmod、chown等
-
HDFS文件交互:copyFromLocal、copyToLocal、get、put
还可以利用python进行hdfs相关处理
-
Yarn简介
-
组成
1)ResourceManager:分配和调度资源;启动并监控ApplicationMaster;监控NodeManager
2)ApplicationMaster:为MR类型的程序申请资源,并分配给内部任务;负责数据的切分;监控任务的执行与容错
3)NodeManager:管理单个节点的资源;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令
-
-
MapReduce编程模型
- 输入一个大文件,通过Split之后,将其分为多个分片;
- 每个文件分片由单独的机器去处理,这就是Map方法;
- 将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法
在处理大量数据上有优势
-
HBase简介
- 高可靠,高性能,面向列,可伸缩,实时读写的分布式数据库
- 利用HDFS作为其文件存储系统,支持MR程序读取数据
- 存储非结构化和半结构化数据
重要名词:RowKey(数据唯一标识,按字典排序);Column Family(列族,多个列的集合,最多不要超过3个)TimeStamp时间戳(支持多版本数据同时存在)
-
Spark简介
- 基于内存计算的大数据并行计算框架
- Spark是MapReduce的替代方案,兼容HDFS,HIVE等数据源
其优势:基于内存计算的分布式计算框架;抽象出分布式内存存储数据结构,弹性分布式数据集RDD;基于事件驱动,通过线程池复用线程提高性能。
-
Hadoop总结
- 存储(HDFS)与计算(MapReduce模型)
- 可以用shell命令和python程序操作HDFS