Hadoop相关总结

一、MapReduce

主要的流程图如下:

Hadoop处理json文件 hadoop处理数据的流程_hdfs

总结:

1、map-reduce的四个关键阶段:file切分、map阶段、shuffle阶段、reduce阶段。

2、hadoop帮我们做了大部分工作,我们只需自定义map和reduce阶段。

3、可以通过自定义分区函数和合并函数控制map-reduce过程的细节。

4、hdfs是Hadoop的分布式文件系统,MapReduce是依赖于hdfs上的存储,需要提交到Hadoop上的运行的任务。

二、HDFS总结

 HDFS基本读数据的操作:

Hadoop处理json文件 hadoop处理数据的流程_Hadoop_02

 

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

Hbase:https://mp.weixin.qq.com/s/r_ouxFJ4FajyDl835iEcBQ

Hive:https://mp.weixin.qq.com/s/xyP5ILcITtiwrKtXFsMenw