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的生态系统:
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提供对海量数据的运算