189 8069 5689

Hadoop基本概念

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提供对海量数据的运算


本文题目:Hadoop基本概念
网站URL:http://cdxtjz.com/article/jscejc.html

其他资讯