一、Hadoop
百科是这么说的:
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),其中一个组件是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。HDFS是Master和Slave的主从结构。主要由Name-Node、Secondary NameNode、DataNode构成。想起了zookeeper在kafka中也扮演管理数据元信息的角色。
MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
还有一个词Hbase是hadoop database数据库,hdsf更多的是表达出一种文件类型。
Elasticsearch是可以存储海量数据的分布式搜索引擎,也实现了分布式存储,但其不基于HDFS实现,和Hadoop是两个家族。但其实现的原理是差不多的,对数据进行切分,同时每个分片保存多个副本,来保证分布式下的高可用。这点让我同时想起了kafaka的副本和选举。
es侧重搜索,hadoop侧重数据分析。两者都能存储海量数据,亿级百亿级不是问题。
二、ES-Hadoop打通Hadoop和ElasticSearch
Elasticsearch作为强大的搜索引擎,Hadoop HDFS是分布式文件系统。
ES-Hadoop是一个深度集成Hadoop和ElasticSearch的项目,也是ES官方来维护的一个子项目。Elasticsearch可以将自身的Document导入到HDFS中用作备份;同时也可以将存储在HDFS上的结构化文件导入为ES中的Document,通过实现Hadoop和ES之间的输入输出,可以在Hadoop里面对ES集群的数据进行读取和写入,充分发挥Map-Reduce并行处理的优势,为Hadoop数据带来实时搜索的可能。
ES-Hadoop插件支持Map-Reduce、Cascading、Hive、Pig、Spark、Storm、yarn等组件。
ES-Hadoop整个数据流转图如下:
三、从Hadoop生态4层架构谈hadoop(2.X)
应用背景:
底层:存储层,文件系统HDFS,NoSQL Hbase。
中间层:资源及数据管理层,YARN以及Sentry等。
上层:MapReduce、Impala、Spark等计算引擎。
顶层:基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout。
hadoop可以作为分布式存储框架存储大规模数据,数据的价值越来越被企业重视,被称为是21世纪的石油;
存储了大规模的数据,我们要干什么呢,当然是分析数据中的价值,Hadoop+MR(MapReduce)用于离线大数据的分析挖掘,比如:电商数据的分析挖掘、社交数据的分析挖掘,企业客户关系的分析挖掘,最终的目标就是BI了,提高企业运作效率,实现精准营销,各个垂直领域的推荐系统,发现潜在客户等等。在这个数据化时代,每件事都会留下电子档案,分析挖掘日积月累的数据档案,我们就能理解这个世界和我们自己更多。
MR编写代码复杂度高,由于磁盘IO,分析结果周期长,现实世界中我们对数据分析的实时性要求越来越高,基于内存计算的spark来了。Hadoop+spark正在替代Hadoop+MR成为大数据领域的明星,Cloudera正在积极推动Spark成为Hadoop的默认数据处理引擎。
更上层应用,如:数据挖掘,机器学习,发现、预测分析等都必须基于大规模的数据,没有足够的数据一切扯淡,数据量足够大,就必须分布式存储,依赖大规模的廉价PC构建hadoop集群是非常有必要的。
彩蛋
拉链表:实现