Hadoop相关总结
一、MapReduce
主要的流程图如下:
总结:
1、map-reduce的四个关键阶段:file切分、map阶段、shuffle阶段、reduce阶段。
2、hadoop帮我们做了大部分工作,我们只需自定义map和reduce阶段。
3、可以通过自定义分区函数和合并函数控制map-reduce过程的细节。
4、hdfs是Hadoop的分布式文件系统,MapReduce是依赖于hdfs上的存储,需要提交到Hadoop上的运行的任务。
二、HDFS总结
HDFS基本读数据的操作:
1、client询问NameNode,我要读取某个路径下的文件,麻烦告诉我这个文件都在哪些DataNode上?
2、NameNode回复client,这个路径下的文件被切成了3块,分别在DataNode1、DataNode3和DataNode4上
3、client去找DataNode1、DataNode3和DataNode4,拿到3个文件块,通过stream读取进来
基本写操作:
总结:
1、hdfs是一个分布式文件系统,简单理解就是多台机器组成的一个文件系统。
2、hdfs中有3个重要的模块,client对外提供统一操作接口,DataNode真正存储数据,NameNode协调和管理数据,是一个典型的master-slave架构。
3、hdfs会对大文件进行切块,并且每个切块会存储备份,保证数据的高可用,适合存储大数据。
4、NameNode通过fsimage和editlog来实现数据恢复和高可用。
5、hdfs不适用于大量小文件存储,不支持并发写入,不支持文件随机修改,查询效率大概在秒级。
三、Hbase总结
总结:
1、hbase是列式存储,和mysql的行式存储不一样
2、hbase中有列簇概念,同一个列簇下的列存储在一起,在Region的一个StoreFile中
3、hbase是按照rowkey进行查找,要查询的字段要想办法放到rowkey中
4、hbase内部使用LSM三层模型进行存储,数据先写到内存MemStore中,内存达到一定阈值再刷写到硬盘StoreFile中,再满足一定条件时,小的StoreFile会合并为大的StoreFile
5、hbase适合OLAP类的应用
四、Hive总结
总结:
1、hive是一个数据仓库,存储大数据,主要用来做OLAP分析。
2、hive底层是hdfs,它提供了sql来查询数据。
3、hive的原理是将sql翻译成map-reduce任务。
4、数据的导入导出可以用工具sqoop,原理也是把命令翻译成map-reduce任务。
参考文章:
MapReduce:https://mp.weixin.qq.com/s/PcHeYksZ6298HncMats_ZQ
HDFS:https://mp.weixin.qq.com/s/EXiXD6_pf_yfGpTcUPCQzw