有一个文件,大小为 1T,有没有可能只用一台计算机(普通计算机,配置不高,内存
不可能放下该文件)来查找出文件中的重复行?
思路 1:
读出第一行,然后读出第二行,比较第一行是否和第二行重复,然后从内存中清除第
二行,再读入第三行与第一行比较,然后再清除第三行,当第一行与最后一行比较完后,
从第二行开始再与之后的行比较,类似于冒泡排序的思想。
思路 2:
将大文件拆分为小文件,读出一行数据,求 hash 码,把大文件文成 n 个小文件,那么
不可能放下该文件)来查找出文件中的重复行?
思路 1:
读出第一行,然后读出第二行,比较第一行是否和第二行重复,然后从内存中清除第
二行,再读入第三行与第一行比较,然后再清除第三行,当第一行与最后一行比较完后,
从第二行开始再与之后的行比较,类似于冒泡排序的思想。
思路 2:
将大文件拆分为小文件,读出一行数据,求 hash 码,把大文件文成 n 个小文件,那么
每一行的 hash 码对 n 取模,得出结果相同的行放入一个文件中。
Hadoop 的三大核心模块
分布式存储系统 HDFS(Hadoop Distributed File System),提供了高可靠性、高扩展性
和高吞吐率的数据存储服务;
分布式计算框架 MapReduce,具有易于编程、高容错性和高扩展性等优点;
分布式资源管理框架 YARN(Yet Another Resource Management),负责集群资源的管
理和调度。
Hadoop 的生态系统中包含多种技术:比如 Hive、Hbase、Spark 等。