温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop基本概念

发布时间:2020-07-01 08:47:07 来源:网络 阅读:554 作者:玄烨918 栏目:大数据

Hadoop是一个是个海量数据的分布式存储和计算平台

  对于数据,我们大致可以将其分为三类:

                         结构化数据(对于结构化数据的处理可以通过RDBMS处理,通过将搜索码创建为索引页可以实现很快的查询速度)

                        半结构化数据(一般可以使用类型XML进行标记处理)

                         非结构化数据

其实,非结构化数据会占据相当大的比重,非机构化数据的存储和计算也变得比较困难。

  Hadoop的灵感来自于Google的两篇论文,包括MapReduce,我们可以将Hadoop理解为是MapReduce的开源实现,Hadoop是由java语言编写的。

  首先,对于海量数据,需要完成对其进行存储然后进行就算,分析。

HDFS:Hadoop分布式文件系统

MapReduce:Hadoop用于完成并行数据处理的框架

 可以理解为Hadoop=HDFS+MapReduce,也就是可以理解为一个Hadoop集群就是一个HDFS集群加上一个MapReduce集群。

HDFS如何完成分布式存储:

   HDFS集群中一般会有一个主节点(在Hadoop的新版本中,已经实现有多个主节点),称之为NameNode(简称为NN)

   HDFS中会有n个从节点,称之为DataNode(DN)

实际完成数据存储的都是数据节点,而NameNode主要是用于将数据分块,分块之后再分配给数据节点进行存储,另外,NameNode用于接收用户请求,管理从节点,维护文件系统的目录结构,管理文件与Block之间的关系,block与数据节点之间的关系,从而完成分布式存储海量数据的目的。


HDFS的特性:HDFS设计用于存储大文件,对于海量小文件的存储不太适用

        HDFS是用户空间的文件系统(其实数据最终还是存储在诸如ext3文件系统上,只不过需要经过HDFS的又一次对数据进行抽象)

        HDFS不支持修改数据(新版本支持追加)

        不支持挂载并通过系统调用进行访问,只能使用专用访问借口,例如专用的命令行工具,API


MapReduce,一般提到MapReduce,其有三个含义:

                            编程模型

                            运算框架

                           MapReduce编程思想的具体实现工具

MapReduce的思想大致就是分为两个阶段:Map和Reduce

           Map就是将对一个大文件的处理分割成块进行计算,实现分布式

           Reduce就是将对各个块的计算结果再进行汇总

对数据计算其实就是提取Key-Value的方式,在进行Map之后交由Reduce的时候,必须要将同一个Key提取的内容发送至同一个Reduce进程进行最后的合并

对于数据的计算,需要处理人员按照MapReduce的编程模型结合对数据的处理目的编写MapReduce程序,所以对于海量数据的计算在HDFS+MapReduce结合上有着极大的限制性。

  Hadoop同时也有很多的组件,从而构成了Hadoop的生态系统:

 Hadoop基本概念

HDFS+MapReduce构成了Hadoop的核心:

  Hive:Hive是由Facebook开发的,Hive将整个MapReduce提供的框架抽象为一个系统,当用户想要就行查询等操作的时候,就可以想Hive提交一个SQL语句,然后由Hive实现将用户便于理解的SQL语句转换成为一个MapReduce程序执行,最后向用户输出结果(可以理解成Hive提供了一个SQL接口,但是并不和SQL完全兼容)

  Hbase:由于HDFS不能挂载,也不能修改数据,当Hbase工作在HDFS之上的时候,构成一个Hbase集群,在Hbase的节点上再启动一个进程,这时数据可以先存在Hbase上,然后再由Hbase将其存入HDFS,并且Hbase对数据记录有版本号,实现了对数据进行修改

  在很多情况下,我们需要对例如web服务器集群产生的日志进行分析计算,那么如何将web服务器产生的日志存储到HDFS上,首先,HDFS不能被挂载,所以就不能像对待一本文件系统没那个一样对其进行写入,这就是Flume,scrib这些日志收集工具实现将日志存储到HDFS上的。

  同上,很多情况下可能需要借助于集群的威力对存储在RDBMS上的数据进行分析计算和挖掘,那么如何将RDBMS中的数据导入到HDFS上,就是有Sqoop工具实现的,可以将数据用Sqoop从RDBMS导出,先存储到Hbase上,再由Hbase实现存储到HDFS上,之后就可以通过编写的MapReduce程序对数据进行运算

  MAhost就是用于数据挖掘,也就是机器学习的工具

 Zookeeper:可以理解其就是一个协调器,监控集群上的各个节点是否能够符合集群的要求


Hadoop在HDFS提供改良数据存储的方案上表现还是比较出色的,但是MapReduce的计算能力就稍有逊色,可以结合第二代大数据解决方案spark,使用HDFS完成海量数据的分布式存储,有spark提供对海量数据的运算

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI