作者:孔红MJ | 来源:互联网 | 2023-09-12 10:42
随着智能化、万物互联时代的快速发展,数据量开始暴增,一方面我们需要开始思考如何高效可靠地存储海量的数据,另一方面我们还需要对这些数据进行分析处理,以获得更多有价值的
随着智能化、万物互联时代的快速发展,数据量开始暴增,一方面我们需要开始思考如何高效可靠地存储海量的数据,另一方面我们还需要对这些数据进行分析处理,以获得更多有价值的信息。这时期我们就需要用到Hadoop了。
Hadoop是Apache软件基金会下一个开源分布式计算平台,以hdfs(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是资源调度框架,能够细粒度的管理和调度任务,还能够支持其他的计算框架,比如spark)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。hdfs的高容错性、高伸缩性、高效性等优点让用户可以将Hadoop部署在低廉的硬件上,形成分布式系统。
Hadoop生态
除了基础Hadoop,发展到今天Hadoop已经拥有非常完善和庞大的开源生态圈:HDFS提供文件存储,YARN提供资源管理,在此基础上,进行各种处理,包括mapreduce、Tez、Sprak、Storm等等,以满足不同要求的数据使用场景。
HDFS架构
HDFS架构图
HDFS采用了主从结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成,其中NameNode作为主服务器管理文件系统的命名空间和客户端对文件的访问操作,而DataNode则负责管理存储的数据。HDFS底层数据被切割成了多个Block,而这些Block又被复制后存储在不同的DataNode上,以达到容错容灾的目的。
MapReduce
MapReduce是谷歌公司的核心计算模型,它将运行于在规模集群上的复杂并行计算过程高度地抽象为两个函数过程:Map和Reduce("Map(映射)"和"Reduce(归约)")。map函数以 key/value 对作为输入,产生另外一系列 key/value 对作为中间输出写入本地 磁盘。MapReduce 框架会自动将这些中间数据按照 key 值进行聚集,且 key 值相同的数据被统一交给 reduce函数处理。reduce函数则以 key 及对应的 value 列表作为输入,经合并 key 相同的 value 值后,产 生另外一系列 key/value 对作为最终输出写入HDFS。
Hive与Hbase的区别
在Hadoop基本生态中,有两个组件的说说他们的区别,它们就是hive和hbase。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。
Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。hive需要用到hdfs存储文件,需要用到MapReduce计算框架。hive可认为是map-reduce的一个包装。hive的意义就是把好写的hive的sql转换为复杂难写的map-reduce程序。hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。hbase可以认为是hdfs的一个包装。他的本质是数据存储,是个NoSql(not only sql)数据库;hbase部署于hdfs之上,并且克服了hdfs在随机读写方面的缺点。