一、理解Hadoop
Hadoop_wiki上定义,Apache Hadoop is an open-source software framework used for distributed storage and processing of very large data sets.就是说Hadoop是(大数据下)分布式的数据处理框架。所以我们从 如下两个方面理解Hadoop。[我们接下来重点从Hadoop的改进上来说]
1.既然是分布式计算环境,那么跟一般的框架有什么不同呢?
比如一般地SETI@home这个框架,在分布式计算的时候会在client和server之间进行数据传输,所以它更适合于计算密集型任务,而不适合于数据密集型任务。那么在大数据环境下,该框架就显得低效了。so,可以很容易想到的一个改进就是不进行大量的数据迁移,这就是Hadoop的思想,“将代码向数据迁移,尽量让计算发生在数据驻留之地”,这就与Hadoop“面向数据密集型处理”的设计目标一致。
2.作为数据处理框架,与SQL数据库有什么不同?
1)Hadoop多面向非结构化文本数据的处理(使用key-value对),SQL是结构化数据库;
2)可以使用MR建立复杂的数据统计模型,SQL使用基本的操作语句;
3)Hadoop是面向离线批量处理,SQL多是在线操作。
Hadoop是一个用于分布式存储和处理大型数据集的开源框架。它提供了一种可扩展且可靠的方式来跨多个计算机集群存储和分析大数据。Hadoop由两个主要组件组成:用于可靠存储的Hadoop分布式文件系统(HDFS)和用于并行处理的MapReduce。它被设计用于处理大量数据,并提供容错性、高可扩展性和高效的数据处理。Hadoop广泛应用于各种行业,如数据仓库、日志处理、推荐系统和机器学习。
HDFS
定义
HDFS (Hadoop Distributed File System) ,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS 的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
优缺点
优点:
( 1 )高容错性
①数据自动保存多个副本。它通过增加副本的形式,提高容错性。
②某一个副本丢失以后,它可以自动恢复。
(2)适合处理大数据
①数据规模:能够处理数据规模达到 GB 、 TB 、甚至 PB 级别的数据;
②文件规模:能够处理百万规模以上的文件数量,数量相当之大。
(3)可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
( 1 )不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
(2)无法高效的对大量小文件进行存储。
①存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件目录和块信息。这
样是不可取的,因为 NameNode 的内存总是有限的;
②小文件存储的寻址时间会超过读取时间,它违反了 HDFS 的设计目标。
(3)不支持并发写入、文件随机修改。
①一个文件只能有一个写,不允许多个线程同时写;
②仅支持数据 append ( 追加 ) ,不支持文件的随机修改。
三、Hadoop 生态圈
Hadoop 生态圈是指围绕 Hadoop 软件框架为核心而出现的越来越多的相关软件框架,这些软件框架和 Hadoop 框架一起构成了一个生机勃勃的 Hadoop 生态圈。在特定场景下,Hadoop 有时也指代 Hadoop 生态圈。
Hadoop 生态圈的架构图