同时 Hadoop 是一款开源大数据组件,很多公司直接使用 Hadoop 技术,就可以满足公司内部的离线业务需求,技术成本很低。
Hadoop 文件系统将数据量大的文件分布式存储在不同机器,解决数据量大不能存储问题
Hadoop 中 HDFS 分布式文件系统,通过对数据体量非常大的文件进行分块,每个块默认 256 兆,将其分成数据量较小的多个块,然后对每个数据块在进行数据备份存储,一个数据块有三个数据副本,冗余的存储在集群上,通过数据冗余解决数据容错问题。
打个比方,你的一个文件大小为 1 TB 大小,单台机器磁盘 500 G 存不下。此时你将文件存储在 HDFS 文件系统上,那么该文件最终会按照 256 兆一个数据块,划分成 4000块,分布式的存储在 Hadoop 集群上面,每台机器都会存储这个文件的一个数据子集,这样就解决了数据量大单机不能存储的问题。
Hadoop MapReduce 分布式计算框架,解决单台机器不能计算问题
Hadoop MapReduce 计算框架包含两个步骤:Map阶段和Reduce阶段。由于 HDFS 文件系统将数据按照块进行存储,当在 Map 阶段的时候,会对每一个块进行计算,相当于对一个数据量大的文件,并行计算,每个 Map 任务处理的就是该文件的一个数据子集。
Reduce 阶段就是对 Map 任务产生的数据,在做一个汇总计算。打个比方,就比如 Hadoop 中 WordCount 场景,Map 阶段只是计算这个 Map 任务输入文件的中的每个单词的数量,但是多个 Map 任务中key有可能相同,所以最终还需要在 Reduce 任务中再进行一次汇总。
Map1 任务计算的单词 A 有 3 个,Map2 任务计算的单词 A 有 2 个,最后通过 Reduce 任务汇总,单词 A 个数就有 5 个。
个人想法
Hadoop 由于其开源特性,任何公司都可以使用其作为公司的大数据处理计算框架,所以 Hadoop 在国内使用的范围还是非常广的。同时有很多其他大数据组件最底层或多或少都需要使用到 Hadoop ,比如 HBase 数据库、Flink 实时计算引擎的状态存储等等,Hadoop 生态是非常广的,所以很多公司还在使用 Hadoop。
偶是Lake,专注大数据技术原理、人工智能、数据库技术、程序员经验分享,如果偶的问答对你有帮助的话,希望你能点赞关注偶,感谢。
偶会持续大数据、数据库方面的内容,如果你有任何问题,也私信偶,偶会认真解答每一个问题。期待您的关注